@devfellowship/components 1.4.0 → 2.0.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/cli.js +144 -0
- package/dist/hooks.d.cts +4 -3
- package/dist/hooks.d.ts +4 -3
- package/dist/index.cjs +3698 -863
- package/dist/index.d.cts +1299 -194
- package/dist/index.d.ts +1299 -194
- package/dist/index.js +3791 -966
- package/dist/providers.d.cts +8 -4
- package/dist/providers.d.ts +8 -4
- package/dist/styles/fonts.css +35 -22
- package/dist/styles/theme-mappings.css +20 -12
- package/dist/styles/tokens.css +1218 -1
- package/dist/{use-auth-DdapDv2H.d.cts → use-auth-t8aJ9mx7.d.cts} +7 -2
- package/dist/{use-auth-DdapDv2H.d.ts → use-auth-t8aJ9mx7.d.ts} +7 -2
- package/package.json +8 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
2
|
+
import React__default, { 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 react_jsx_runtime from 'react/jsx-runtime';
|
|
7
6
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
8
7
|
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
9
8
|
import * as AvatarPrimitive from '@radix-ui/react-avatar';
|
|
@@ -17,7 +16,6 @@ import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
|
17
16
|
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
18
17
|
import { Drawer as Drawer$1 } from 'vaul';
|
|
19
18
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
20
|
-
import * as _radix_ui_react_slot from '@radix-ui/react-slot';
|
|
21
19
|
import * as react_hook_form from 'react-hook-form';
|
|
22
20
|
import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
|
|
23
21
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
@@ -43,7 +41,7 @@ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
|
43
41
|
import { LucideIcon } from 'lucide-react';
|
|
44
42
|
export { c as cn } from './utils-Cbsgs0XP.js';
|
|
45
43
|
export { ToastProps, ToastVariant, toast, useIframeAuth, useIframeNavigate, useIsMobile, useToast } from './hooks.js';
|
|
46
|
-
export { A as AuthContextType, a as AuthProvider, b as AuthProviderProps, U as UserProfile, u as useAuth, c as useSession } from './use-auth-
|
|
44
|
+
export { A as AuthContextType, a as AuthProvider, b as AuthProviderProps, U as UserProfile, u as useAuth, c as useSession } from './use-auth-t8aJ9mx7.js';
|
|
47
45
|
export { FeatureFlagProvider, FeatureFlagProviderProps, FeatureFlags, useFeatureFlag, useFeatureFlags } from './providers.js';
|
|
48
46
|
import 'clsx';
|
|
49
47
|
import '@supabase/supabase-js';
|
|
@@ -54,41 +52,146 @@ declare const AccordionTrigger: React$1.ForwardRefExoticComponent<Omit<Accordion
|
|
|
54
52
|
declare const AccordionContent: React$1.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
55
53
|
|
|
56
54
|
declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
57
|
-
variant?: "default" | "destructive" | null | undefined;
|
|
55
|
+
variant?: "default" | "info" | "success" | "warning" | "danger" | "destructive" | null | undefined;
|
|
58
56
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
|
|
59
57
|
declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
60
58
|
declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
61
59
|
|
|
60
|
+
/**
|
|
61
|
+
* AlertDialog — DFL Design System v0
|
|
62
|
+
*
|
|
63
|
+
* Organism-level modal requiring explicit confirmation before a consequential
|
|
64
|
+
* action. Two semantic action variants:
|
|
65
|
+
*
|
|
66
|
+
* <AlertDialogAction> — neutral (amber primary)
|
|
67
|
+
* <AlertDialogAction variant="destructive"> — danger ghost-outline
|
|
68
|
+
*
|
|
69
|
+
* Tokens consumed (Layer 3):
|
|
70
|
+
* --c-alert-dialog-bg, --c-alert-dialog-border, --c-alert-dialog-radius,
|
|
71
|
+
* --c-alert-dialog-shadow, --c-alert-dialog-scrim,
|
|
72
|
+
* --c-alert-dialog-title-fg, --c-alert-dialog-desc-fg
|
|
73
|
+
*
|
|
74
|
+
* Focus ring: uniform 2px-gap + 1px-amber box-shadow on every focusable
|
|
75
|
+
* element (Cancel, Action, Trigger). Applied via focus-visible: override that
|
|
76
|
+
* replaces the generic button ring-3 approach.
|
|
77
|
+
*/
|
|
62
78
|
declare const AlertDialog: React$1.FC<AlertDialogPrimitive.AlertDialogProps>;
|
|
63
79
|
declare const AlertDialogTrigger: React$1.ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
64
80
|
declare const AlertDialogPortal: React$1.FC<AlertDialogPrimitive.AlertDialogPortalProps>;
|
|
65
81
|
declare const AlertDialogOverlay: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
66
82
|
declare const AlertDialogContent: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
67
83
|
declare const AlertDialogHeader: {
|
|
68
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>):
|
|
84
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
69
85
|
displayName: string;
|
|
70
86
|
};
|
|
71
87
|
declare const AlertDialogFooter: {
|
|
72
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>):
|
|
88
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
73
89
|
displayName: string;
|
|
74
90
|
};
|
|
75
91
|
declare const AlertDialogTitle: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
76
92
|
declare const AlertDialogDescription: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
77
|
-
|
|
93
|
+
/** Props for AlertDialogAction — extends Radix Action with a semantic variant. */
|
|
94
|
+
interface AlertDialogActionProps extends React$1.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action> {
|
|
95
|
+
/**
|
|
96
|
+
* "default" — amber primary (neutral confirmation, e.g. "Continue")
|
|
97
|
+
* "destructive" — danger ghost-outline (irreversible action, e.g. "Delete account")
|
|
98
|
+
*
|
|
99
|
+
* @default "default"
|
|
100
|
+
*/
|
|
101
|
+
variant?: "default" | "destructive";
|
|
102
|
+
}
|
|
103
|
+
declare const AlertDialogAction: React$1.ForwardRefExoticComponent<AlertDialogActionProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
78
104
|
declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
79
105
|
|
|
80
|
-
declare function AspectRatio({ ...props }: React$1.ComponentProps<typeof AspectRatioPrimitive.Root>):
|
|
106
|
+
declare function AspectRatio({ ...props }: React$1.ComponentProps<typeof AspectRatioPrimitive.Root>): React$1.JSX.Element;
|
|
81
107
|
|
|
82
|
-
|
|
108
|
+
/** Size scale for Avatar — drives both the circle dimensions and fallback font-size. */
|
|
109
|
+
type AvatarSize = "sm" | "md" | "default" | "lg" | "xl";
|
|
110
|
+
declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & {
|
|
111
|
+
/**
|
|
112
|
+
* Circle diameter preset.
|
|
113
|
+
* sm=24px · md=32px · default=40px · lg=48px · xl=64px
|
|
114
|
+
*
|
|
115
|
+
* For stacked avatar groups, add a separator ring via outline:
|
|
116
|
+
* `outline: 2px solid var(--c-avatar-ring)`
|
|
117
|
+
*/
|
|
118
|
+
size?: AvatarSize;
|
|
119
|
+
} & React$1.RefAttributes<HTMLSpanElement>>;
|
|
83
120
|
declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
|
|
84
|
-
declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> &
|
|
121
|
+
declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & {
|
|
122
|
+
/** Background tone — default | brand (amber) | member (hashed). */
|
|
123
|
+
tone?: AvatarTone;
|
|
124
|
+
/** Seed for deterministic member colour (only used when tone="member"). */
|
|
125
|
+
seed?: string;
|
|
126
|
+
} & React$1.RefAttributes<HTMLSpanElement>>;
|
|
127
|
+
/** Fallback background tone.
|
|
128
|
+
* default — neutral elevated surface (--c-avatar-fallback-bg).
|
|
129
|
+
* brand — DFL amber (--c-avatar-brand-bg), the "branded" avatar.
|
|
130
|
+
* member — deterministic colour hashed from `seed` (member palette).
|
|
131
|
+
*/
|
|
132
|
+
type AvatarTone = "default" | "brand" | "member";
|
|
133
|
+
/** Number of colours in the deterministic member palette (--c-avatar-member-N). */
|
|
134
|
+
declare const AVATAR_MEMBER_PALETTE_SIZE = 12;
|
|
135
|
+
/**
|
|
136
|
+
* Deterministic member colour — hashes a seed (name / initials / id) into a
|
|
137
|
+
* stable `var(--c-avatar-member-N)` token so a given person is ALWAYS the same
|
|
138
|
+
* colour across the app.
|
|
139
|
+
*/
|
|
140
|
+
declare function avatarMemberColor(seed: string): string;
|
|
141
|
+
type AvatarStatusValue = "online" | "away" | "offline";
|
|
142
|
+
/**
|
|
143
|
+
* Presence indicator — a coloured dot pinned to the bottom-right of the Avatar,
|
|
144
|
+
* ringed in the page colour. Render as a sibling of AvatarImage/AvatarFallback
|
|
145
|
+
* INSIDE <Avatar> (which is `position: relative`).
|
|
146
|
+
*/
|
|
147
|
+
declare const AvatarStatus: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLSpanElement> & {
|
|
148
|
+
status?: AvatarStatusValue;
|
|
149
|
+
} & React$1.RefAttributes<HTMLSpanElement>>;
|
|
150
|
+
/**
|
|
151
|
+
* Overlapping avatar stack. Each child avatar gets a page-coloured separator
|
|
152
|
+
* ring (box-shadow) and a negative left margin so they tuck under the previous
|
|
153
|
+
* one. `max` truncates and appends a "+N" fallback avatar.
|
|
154
|
+
*/
|
|
155
|
+
declare const AvatarGroup: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
|
|
156
|
+
/** Overlap amount in px (negative margin). Default 8. */
|
|
157
|
+
spacing?: number;
|
|
158
|
+
/** Show at most `max` avatars; the rest collapse into a "+N" chip. */
|
|
159
|
+
max?: number;
|
|
160
|
+
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
85
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Badge — DFL Design System v0
|
|
164
|
+
*
|
|
165
|
+
* Tokens consumed (all pre-existing):
|
|
166
|
+
* Shape: --c-pill-radius (999px, default), --c-badge-radius (4px, square)
|
|
167
|
+
* Brand: --s-brand-subtle / --s-brand-fg / --s-brand-border
|
|
168
|
+
* Danger: --s-danger-subtle / --s-danger-fg / --s-danger-border
|
|
169
|
+
* Success: --s-success-subtle / --s-success-fg / --s-success-border
|
|
170
|
+
* Warning: --s-warning-subtle / --s-warning-fg / --s-warning-border
|
|
171
|
+
* Info: --s-info-subtle / --s-info-fg / --s-info-border
|
|
172
|
+
* Surface: --s-surface-raised / --s-ink-secondary / --s-border-subtle
|
|
173
|
+
* Outline: --s-border-strong
|
|
174
|
+
*
|
|
175
|
+
* Variants: default | secondary | danger | outline | success | warning | info
|
|
176
|
+
* (`destructive` kept as legacy alias → same styles as `danger`)
|
|
177
|
+
* Shapes: pill (default) | square
|
|
178
|
+
*
|
|
179
|
+
* Focus ring: DS-uniform amber box-shadow via :focus-visible (badge must
|
|
180
|
+
* receive tabIndex={0} + role when used as a filter chip / interactive element).
|
|
181
|
+
*/
|
|
86
182
|
declare const badgeVariants: (props?: ({
|
|
87
|
-
variant?: "default" | "destructive" | "secondary" | "outline" | null | undefined;
|
|
183
|
+
variant?: "default" | "info" | "success" | "warning" | "danger" | "destructive" | "secondary" | "outline" | null | undefined;
|
|
184
|
+
shape?: "pill" | "square" | null | undefined;
|
|
185
|
+
fill?: "solid" | "subtle" | null | undefined;
|
|
88
186
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
89
187
|
interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
188
|
+
/**
|
|
189
|
+
* Render a leading status dot (coloured with the badge's own text/intent
|
|
190
|
+
* colour via currentColor). For presence/status chips — "● Active".
|
|
191
|
+
*/
|
|
192
|
+
dot?: boolean;
|
|
90
193
|
}
|
|
91
|
-
declare function Badge({ className, variant, ...props }: BadgeProps):
|
|
194
|
+
declare function Badge({ className, variant, shape, fill, dot, children, ...props }: BadgeProps): React$1.JSX.Element;
|
|
92
195
|
|
|
93
196
|
declare const Breadcrumb: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
|
|
94
197
|
separator?: React$1.ReactNode;
|
|
@@ -100,11 +203,11 @@ declare const BreadcrumbLink: React$1.ForwardRefExoticComponent<Omit<React$1.Det
|
|
|
100
203
|
} & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
101
204
|
declare const BreadcrumbPage: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
102
205
|
declare const BreadcrumbSeparator: {
|
|
103
|
-
({ children, className, ...props }: React$1.ComponentProps<"li">):
|
|
206
|
+
({ children, className, ...props }: React$1.ComponentProps<"li">): React$1.JSX.Element;
|
|
104
207
|
displayName: string;
|
|
105
208
|
};
|
|
106
209
|
declare const BreadcrumbEllipsis: {
|
|
107
|
-
({ className, ...props }: React$1.ComponentProps<"
|
|
210
|
+
({ className, ...props }: React$1.ComponentProps<"button">): React$1.JSX.Element;
|
|
108
211
|
displayName: string;
|
|
109
212
|
};
|
|
110
213
|
|
|
@@ -114,19 +217,27 @@ declare const BreadcrumbEllipsis: {
|
|
|
114
217
|
* Tokens consumed:
|
|
115
218
|
* --c-button-radius, --c-button-font-weight
|
|
116
219
|
* --c-button-{primary,secondary,ghost,destructive,success}-{bg,fg,border,bg-hover,border-hover,bg-active}
|
|
117
|
-
*
|
|
220
|
+
*
|
|
221
|
+
* Focus ring (brand spec ch.5.2):
|
|
222
|
+
* box-shadow: 0 0 0 2px var(--s-surface-page), 0 0 0 3px #E07A4A
|
|
223
|
+
* 2px page-bg gap + 1px solid amber — no alpha bleed on dark bg.
|
|
224
|
+
* (Replaces the old `--s-brand-ring: rgba(224,122,74,.45)` ring which had no
|
|
225
|
+
* gap and alpha-diluted amber into a glow instead of a crisp indicator.)
|
|
118
226
|
*
|
|
119
227
|
* Variants: primary (default), secondary, outline, ghost, destructive, success, link
|
|
120
228
|
* Sizes: sm (28px), default (34px — DS v0 spec), lg (40px), icon (square 34)
|
|
229
|
+
* Shape: rounded (default: --c-button-radius md), pill (--p-radius-pill 999px)
|
|
121
230
|
*
|
|
122
231
|
* Additive props (v1.0.0):
|
|
123
232
|
* loading — disables button + shows spinner + keeps width
|
|
124
233
|
* kbd — renders <kbd> hint at the right (e.g. ⌘K)
|
|
234
|
+
* rounded — "default" | "pill" shape modifier (token-driven, not raw Tailwind)
|
|
125
235
|
* asChild — render as a child Slot (Radix pattern, kept from shadcn)
|
|
126
236
|
*/
|
|
127
237
|
declare const buttonVariants: (props?: ({
|
|
128
|
-
variant?: "link" | "default" | "destructive" | "primary" | "secondary" | "outline" | "ghost" |
|
|
238
|
+
variant?: "link" | "default" | "success" | "destructive" | "primary" | "secondary" | "outline" | "ghost" | null | undefined;
|
|
129
239
|
size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
|
|
240
|
+
rounded?: "default" | "pill" | null | undefined;
|
|
130
241
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
131
242
|
interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
132
243
|
asChild?: boolean;
|
|
@@ -135,19 +246,87 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, V
|
|
|
135
246
|
}
|
|
136
247
|
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
137
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Calendar — DFL Design System v0
|
|
251
|
+
*
|
|
252
|
+
* Tokens consumed (Layer 3 — component knobs):
|
|
253
|
+
* --c-cal-{bg,border,radius,padding}
|
|
254
|
+
* --c-cal-nav-btn-{bg,bg-hover,fg,fg-hover,border,border-hover,radius}
|
|
255
|
+
* --c-cal-{caption-fg,head-fg}
|
|
256
|
+
* --c-cal-day-{radius,fg,bg-hover,fg-outside}
|
|
257
|
+
* --c-cal-day-today-{bg,fg,border} ← tinted, NOT filled (distinct from selected)
|
|
258
|
+
* --c-cal-day-selected-{bg,fg,bg-hover}
|
|
259
|
+
* --c-cal-range-{mid,end}-{bg,fg}
|
|
260
|
+
* --c-cal-day-disabled-fg
|
|
261
|
+
*
|
|
262
|
+
* Focus ring: box-shadow 0 0 0 2px --c-cal-bg, 0 0 0 3px #E07A4A applied to
|
|
263
|
+
* nav buttons and day cells via :focus-visible (uniform DS amber spec).
|
|
264
|
+
*
|
|
265
|
+
* Key fixes vs. vanilla shadcn:
|
|
266
|
+
* - Today uses tinted bg + border, NOT the same solid fill as selected.
|
|
267
|
+
* - Nav buttons use surface-elevation tokens, NOT raw opacity tricks.
|
|
268
|
+
* - Disabled days use --s-ink-disabled at 0.45, cursor:not-allowed.
|
|
269
|
+
* - Range mid uses amber-14% tint with zero radius; start/end have
|
|
270
|
+
* half-rounded corners per DS radius spec.
|
|
271
|
+
*/
|
|
138
272
|
type CalendarProps = React$1.ComponentProps<typeof DayPicker>;
|
|
139
|
-
declare function Calendar({ className, classNames, showOutsideDays, ...props }: CalendarProps):
|
|
273
|
+
declare function Calendar({ className, classNames, showOutsideDays, ...props }: CalendarProps): React$1.JSX.Element;
|
|
140
274
|
declare namespace Calendar {
|
|
141
275
|
var displayName: string;
|
|
142
276
|
}
|
|
143
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Card — DFL Design System v0
|
|
280
|
+
*
|
|
281
|
+
* Tokens consumed (Layer 3 → Layer 2 → Layer 1):
|
|
282
|
+
* --c-card-bg background surface (→ --s-surface-panel)
|
|
283
|
+
* --c-card-border default border (→ --s-border-subtle)
|
|
284
|
+
* --c-card-border-hover hover / focus lift (→ --s-border-strong)
|
|
285
|
+
* --c-card-radius corner radius (→ --p-radius-lg = 10px)
|
|
286
|
+
* --c-card-padding inner section pad (→ --p-space-5 = 20px)
|
|
287
|
+
* --c-card-shadow resting shadow (→ --p-shadow-sm)
|
|
288
|
+
*
|
|
289
|
+
* Ink:
|
|
290
|
+
* --s-ink-primary CardTitle text
|
|
291
|
+
* --s-ink-muted CardDescription text
|
|
292
|
+
*
|
|
293
|
+
* Focus ring (DS uniform spec — a11y):
|
|
294
|
+
* Applied via focus-visible on any focusable card (role="button" + tabIndex).
|
|
295
|
+
* Renders: box-shadow 0 0 0 2px --s-surface-page (gap), 0 0 0 3px #E07A4A (ring).
|
|
296
|
+
*
|
|
297
|
+
* Hover (clickable cards):
|
|
298
|
+
* Consumers add className="hover:border-[var(--c-card-border-hover)] hover:shadow-[var(--p-shadow)]"
|
|
299
|
+
* transition already included on the base element.
|
|
300
|
+
*/
|
|
144
301
|
declare const Card: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
145
302
|
declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
146
|
-
|
|
303
|
+
/**
|
|
304
|
+
* CardTitle — DS spec: 16px / 600 / −0.2px tracking / --s-ink-primary
|
|
305
|
+
* Replaces the shadcn default of text-2xl (24px) which is oversized for card context.
|
|
306
|
+
*/
|
|
307
|
+
declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
147
308
|
declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
148
309
|
declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
149
310
|
declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
150
311
|
|
|
312
|
+
/**
|
|
313
|
+
* Carousel — DFL Design System v0
|
|
314
|
+
*
|
|
315
|
+
* Tokens consumed:
|
|
316
|
+
* --c-carousel-nav-{bg,border,fg} default nav button state
|
|
317
|
+
* --c-carousel-nav-{bg,border,fg}-hover hover + focus state
|
|
318
|
+
* --c-carousel-nav-fg-disabled disabled arrow color (no opacity hack)
|
|
319
|
+
* --c-carousel-dot-{bg,active} pagination indicator
|
|
320
|
+
* --c-carousel-{dot-radius,radius} shape knobs
|
|
321
|
+
* backed by --s-surface-elevated, --s-ink-*, --s-brand-*, --s-border-*
|
|
322
|
+
*
|
|
323
|
+
* New in this revision:
|
|
324
|
+
* • Nav buttons styled with --c-carousel-nav-* tokens (amber hover/focus, no generic outline)
|
|
325
|
+
* • Carousel region receives tabIndex={0} + ds-focus-ring for keyboard users
|
|
326
|
+
* • Nav buttons receive ds-focus-ring for uniform DFL amber outline on :focus-visible
|
|
327
|
+
* • CarouselDots — pagination indicators that auto-detect scroll-snap count
|
|
328
|
+
* • Vertical orientation: ArrowUp/ArrowDown navigation (horizontal: ArrowLeft/ArrowRight)
|
|
329
|
+
*/
|
|
151
330
|
type CarouselApi = UseEmblaCarouselType[1];
|
|
152
331
|
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
153
332
|
type CarouselOptions = UseCarouselParameters[0];
|
|
@@ -158,11 +337,38 @@ type CarouselProps = {
|
|
|
158
337
|
orientation?: "horizontal" | "vertical";
|
|
159
338
|
setApi?: (api: CarouselApi) => void;
|
|
160
339
|
};
|
|
161
|
-
declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: React$1.ComponentProps<"div"> & CarouselProps):
|
|
162
|
-
declare function CarouselContent({ className, ...props }: React$1.ComponentProps<"div">):
|
|
163
|
-
declare function CarouselItem({ className, ...props }: React$1.ComponentProps<"div">):
|
|
164
|
-
|
|
165
|
-
|
|
340
|
+
declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: React$1.ComponentProps<"div"> & CarouselProps): React$1.JSX.Element;
|
|
341
|
+
declare function CarouselContent({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
|
|
342
|
+
declare function CarouselItem({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
|
|
343
|
+
/**
|
|
344
|
+
* CarouselPrevious
|
|
345
|
+
*
|
|
346
|
+
* Styled with --c-carousel-nav-* tokens (not the generic Button variant="outline").
|
|
347
|
+
* States:
|
|
348
|
+
* default → elevated bg, subtle border, secondary ink
|
|
349
|
+
* hover → brand-subtle bg, brand-border, amber-hover ink
|
|
350
|
+
* focus → same as hover + ds-focus-ring outline
|
|
351
|
+
* disabled → transparent bg, subtle border, ink-disabled (no opacity hack)
|
|
352
|
+
*/
|
|
353
|
+
declare const CarouselPrevious: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
354
|
+
/**
|
|
355
|
+
* CarouselNext
|
|
356
|
+
*
|
|
357
|
+
* Mirror of CarouselPrevious. Disabled when no more slides to scroll.
|
|
358
|
+
*/
|
|
359
|
+
declare const CarouselNext: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
360
|
+
/**
|
|
361
|
+
* CarouselDots
|
|
362
|
+
*
|
|
363
|
+
* Pagination indicators. Auto-detects scroll-snap count from the embla API
|
|
364
|
+
* so it reflects "page count" in multi-item views (e.g. 6 slides / 3-per-page = 2 dots),
|
|
365
|
+
* not raw slide count. Hidden (returns null) when there is only 1 snap.
|
|
366
|
+
*
|
|
367
|
+
* Tokens: --c-carousel-dot-{bg,active,radius}
|
|
368
|
+
*/
|
|
369
|
+
declare function CarouselDots({ className }: {
|
|
370
|
+
className?: string;
|
|
371
|
+
}): React$1.JSX.Element | null;
|
|
166
372
|
|
|
167
373
|
declare const THEMES: {
|
|
168
374
|
readonly light: "";
|
|
@@ -180,14 +386,21 @@ type ChartConfig = {
|
|
|
180
386
|
theme: Record<keyof typeof THEMES, string>;
|
|
181
387
|
});
|
|
182
388
|
};
|
|
183
|
-
declare function ChartContainer({ id, className, children, config, ...props }: React$1.ComponentProps<"div"> & {
|
|
389
|
+
declare function ChartContainer({ id, className, children, config, isEmpty, emptyState, ...props }: React$1.ComponentProps<"div"> & {
|
|
184
390
|
config: ChartConfig;
|
|
185
391
|
children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
|
|
186
|
-
|
|
392
|
+
/**
|
|
393
|
+
* When true, renders `emptyState` instead of the Recharts ResponsiveContainer.
|
|
394
|
+
* Use this when `data.length === 0` to show the muted no-data UI.
|
|
395
|
+
*/
|
|
396
|
+
isEmpty?: boolean;
|
|
397
|
+
/** Node to render in place of the chart when `isEmpty` is true. */
|
|
398
|
+
emptyState?: React$1.ReactNode;
|
|
399
|
+
}): React$1.JSX.Element;
|
|
187
400
|
declare const ChartStyle: ({ id, config }: {
|
|
188
401
|
id: string;
|
|
189
402
|
config: ChartConfig;
|
|
190
|
-
}) =>
|
|
403
|
+
}) => React$1.JSX.Element | null;
|
|
191
404
|
declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
|
|
192
405
|
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
406
|
hideLabel?: boolean;
|
|
@@ -195,82 +408,242 @@ declare function ChartTooltipContent({ active, payload, className, indicator, hi
|
|
|
195
408
|
indicator?: "line" | "dot" | "dashed";
|
|
196
409
|
nameKey?: string;
|
|
197
410
|
labelKey?: string;
|
|
198
|
-
}):
|
|
411
|
+
}): React$1.JSX.Element | null;
|
|
199
412
|
declare const ChartLegend: typeof RechartsPrimitive.Legend;
|
|
200
413
|
declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React$1.ComponentProps<"div"> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
|
|
201
414
|
hideIcon?: boolean;
|
|
202
415
|
nameKey?: string;
|
|
203
|
-
}):
|
|
416
|
+
}): React$1.JSX.Element | null;
|
|
204
417
|
|
|
418
|
+
/**
|
|
419
|
+
* Checkbox — DFL Design System v0
|
|
420
|
+
*
|
|
421
|
+
* Tokens consumed (Layer 3 → --c-checkbox-*):
|
|
422
|
+
* size, radius, border-width, bg, border, border-hover,
|
|
423
|
+
* checked-bg, checked-border, checked-fg,
|
|
424
|
+
* focus-ring, disabled-opacity,
|
|
425
|
+
* danger-border, danger-bg, danger-checked-bg
|
|
426
|
+
* (all backed by --s-surface-*, --s-border-*, --s-brand-*, --s-danger-*)
|
|
427
|
+
*
|
|
428
|
+
* Focus ring — uniform DFL two-layer amber ring, replaces shadcn ring utilities:
|
|
429
|
+
* box-shadow: 0 0 0 2px var(--s-surface-page), 0 0 0 3px var(--c-checkbox-focus-ring)
|
|
430
|
+
*
|
|
431
|
+
* Checked/indeterminate state: use the Radix `checked` prop
|
|
432
|
+
* (true | false | "indeterminate"). Indeterminate renders a Minus dash icon
|
|
433
|
+
* with the same amber fill as checked.
|
|
434
|
+
*
|
|
435
|
+
* Error state: pass `aria-invalid={true}` — mirrors the Input/Textarea pattern.
|
|
436
|
+
*/
|
|
205
437
|
declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
206
438
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
439
|
+
/**
|
|
440
|
+
* Collapsible — DFL Design System v0
|
|
441
|
+
*
|
|
442
|
+
* Tokens consumed:
|
|
443
|
+
* --c-collapsible-{bg, bg-hover, border, border-hover, radius}
|
|
444
|
+
* --c-collapsible-header-fg
|
|
445
|
+
* --c-collapsible-content-{bg, border}
|
|
446
|
+
* --c-collapsible-item-fg
|
|
447
|
+
* --c-collapsible-trigger-{fg, fg-hover, ring}
|
|
448
|
+
* backed by --s-{surface-*, border-*, ink-*, brand-*} semantic tokens
|
|
449
|
+
*
|
|
450
|
+
* Subcomponents:
|
|
451
|
+
* <Collapsible> — Root (w-[320px] flex col gap-1.5; Radix open/disabled control)
|
|
452
|
+
* <CollapsibleHeader> — Header row: label slot + CollapsibleTrigger
|
|
453
|
+
* <CollapsibleTrigger> — 28×28 ghost icon button; amber focus ring + hover affordance
|
|
454
|
+
* <CollapsibleContent> — Animated content area (Radix animated reveal)
|
|
455
|
+
* <CollapsibleItem> — Individual content row with elevated surface bg
|
|
456
|
+
*
|
|
457
|
+
* Reference: Alert pilot pattern (merged) for token-wire approach.
|
|
458
|
+
*/
|
|
459
|
+
declare function Collapsible({ className, ...props }: React$1.ComponentProps<typeof CollapsiblePrimitive.Root>): React$1.JSX.Element;
|
|
460
|
+
/**
|
|
461
|
+
* CollapsibleHeader — the header row.
|
|
462
|
+
*
|
|
463
|
+
* Provides the panel bg (--c-collapsible-bg), border, radius, and a
|
|
464
|
+
* subtle hover lift (border-hover, bg-hover). Slot the label + trigger inside.
|
|
465
|
+
*/
|
|
466
|
+
declare function CollapsibleHeader({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
467
|
+
/**
|
|
468
|
+
* CollapsibleTrigger — 28×28 ghost icon button.
|
|
469
|
+
*
|
|
470
|
+
* Focus ring: double-layer box-shadow via --c-collapsible-trigger-ring
|
|
471
|
+
* (0 0 0 2px var(--s-surface-page), 0 0 0 3px #E07A4A)
|
|
472
|
+
* Hover: amber fg shift (--c-collapsible-trigger-fg-hover) + brand-subtle bg chip.
|
|
473
|
+
* Disabled: 45% opacity, pointer-events-none (propagated from Radix root `disabled`).
|
|
474
|
+
*/
|
|
475
|
+
declare function CollapsibleTrigger({ className, ...props }: React$1.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>): React$1.JSX.Element;
|
|
476
|
+
/**
|
|
477
|
+
* CollapsibleContent — animated reveal, items stacked with gap.
|
|
478
|
+
* Surface is transparent; individual CollapsibleItems carry the elevation.
|
|
479
|
+
*/
|
|
480
|
+
declare function CollapsibleContent({ className, ...props }: React$1.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>): React$1.JSX.Element;
|
|
481
|
+
/**
|
|
482
|
+
* CollapsibleItem — individual content row inside CollapsibleContent.
|
|
483
|
+
* Elevated surface bg (--c-collapsible-content-bg) + subtle border + muted ink.
|
|
484
|
+
*/
|
|
485
|
+
declare function CollapsibleItem({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
210
486
|
|
|
487
|
+
/**
|
|
488
|
+
* Dialog — DFL Design System v0
|
|
489
|
+
*
|
|
490
|
+
* Token changes vs vanilla shadcn (v1.1.0):
|
|
491
|
+
* - Overlay: bg-[var(--c-dialog-scrim)] — warm rgba(10,9,8,0.72) vs cold bg-black/80
|
|
492
|
+
* - Panel bg: bg-[var(--c-dialog-bg)] (--s-surface-raised)
|
|
493
|
+
* - Panel border: border-[var(--c-dialog-border)] (--s-border-subtle)
|
|
494
|
+
* - Panel radius: rounded-[var(--c-dialog-radius)] (--p-radius-xl = 14px) vs sm:rounded-lg (8px)
|
|
495
|
+
* - Panel shadow: shadow-[var(--c-dialog-shadow)] (--p-shadow-overlay) vs shadow-lg
|
|
496
|
+
* - Close button focus ring: 0 0 0 2px --c-dialog-bg, 0 0 0 3px #E07A4A (uniform DFL ring)
|
|
497
|
+
*
|
|
498
|
+
* Added props on DialogContent:
|
|
499
|
+
* showClose?: false hides the close button (e.g. loading / in-progress states)
|
|
500
|
+
* autoFocusClose?: true auto-focuses the close button on mount (focus-ring stories)
|
|
501
|
+
*/
|
|
211
502
|
declare const Dialog: React$1.FC<DialogPrimitive.DialogProps>;
|
|
212
503
|
declare const DialogTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
213
504
|
declare const DialogPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
|
|
214
505
|
declare const DialogClose: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
215
506
|
declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
216
|
-
|
|
507
|
+
interface DialogContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
|
|
508
|
+
/**
|
|
509
|
+
* When false the close button is not rendered.
|
|
510
|
+
* Use for in-progress / loading states where dismissal must be prevented.
|
|
511
|
+
* @default true
|
|
512
|
+
*/
|
|
513
|
+
showClose?: boolean;
|
|
514
|
+
/**
|
|
515
|
+
* When true the close button receives autoFocus on mount so the focus ring is
|
|
516
|
+
* immediately visible (useful for focus-ring stories / a11y demos).
|
|
517
|
+
* @default false
|
|
518
|
+
*/
|
|
519
|
+
autoFocusClose?: boolean;
|
|
520
|
+
}
|
|
521
|
+
declare const DialogContent: React$1.ForwardRefExoticComponent<DialogContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
217
522
|
declare const DialogHeader: {
|
|
218
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>):
|
|
523
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
219
524
|
displayName: string;
|
|
220
525
|
};
|
|
221
526
|
declare const DialogFooter: {
|
|
222
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>):
|
|
527
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
223
528
|
displayName: string;
|
|
224
529
|
};
|
|
225
530
|
declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
226
531
|
declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
227
532
|
|
|
228
|
-
declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>):
|
|
533
|
+
declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>): React$1.JSX.Element;
|
|
229
534
|
declare function CommandDialog({ title, description, children, ...props }: React$1.ComponentProps<typeof Dialog> & {
|
|
230
535
|
title?: string;
|
|
231
536
|
description?: string;
|
|
232
|
-
}):
|
|
233
|
-
declare function CommandInput({ className, ...props }: React$1.ComponentProps<typeof Command$1.Input>):
|
|
234
|
-
declare function CommandList({ className, ...props }: React$1.ComponentProps<typeof Command$1.List>):
|
|
235
|
-
declare function CommandEmpty({ ...props }: React$1.ComponentProps<typeof Command$1.Empty>):
|
|
236
|
-
declare function CommandGroup({ className, ...props }: React$1.ComponentProps<typeof Command$1.Group>):
|
|
237
|
-
declare function CommandSeparator({ className, ...props }: React$1.ComponentProps<typeof Command$1.Separator>):
|
|
238
|
-
declare function CommandItem({ className, ...props }: React$1.ComponentProps<typeof Command$1.Item>):
|
|
239
|
-
declare function CommandShortcut({ className, ...props }: React$1.ComponentProps<"span">):
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
537
|
+
}): React$1.JSX.Element;
|
|
538
|
+
declare function CommandInput({ className, ...props }: React$1.ComponentProps<typeof Command$1.Input>): React$1.JSX.Element;
|
|
539
|
+
declare function CommandList({ className, ...props }: React$1.ComponentProps<typeof Command$1.List>): React$1.JSX.Element;
|
|
540
|
+
declare function CommandEmpty({ ...props }: React$1.ComponentProps<typeof Command$1.Empty>): React$1.JSX.Element;
|
|
541
|
+
declare function CommandGroup({ className, ...props }: React$1.ComponentProps<typeof Command$1.Group>): React$1.JSX.Element;
|
|
542
|
+
declare function CommandSeparator({ className, ...props }: React$1.ComponentProps<typeof Command$1.Separator>): React$1.JSX.Element;
|
|
543
|
+
declare function CommandItem({ className, ...props }: React$1.ComponentProps<typeof Command$1.Item>): React$1.JSX.Element;
|
|
544
|
+
declare function CommandShortcut({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* ContextMenu — DS v0 token-aligned right-click menu.
|
|
548
|
+
*
|
|
549
|
+
* Token layer: --c-contextmenu-* (Layer 3) → --s-* → --p-*
|
|
550
|
+
*
|
|
551
|
+
* Key fixes vs. vanilla shadcn:
|
|
552
|
+
* • bg-accent (solid amber fill) → --c-contextmenu-item-hover-bg (brand-subtle 10%)
|
|
553
|
+
* • accent-foreground (sand-950 on orange) → --c-contextmenu-item-hover-fg (amber-300)
|
|
554
|
+
* • Keyboard-focus: same hover bg + inset ring (--c-contextmenu-item-focus-ring)
|
|
555
|
+
* via focus-visible — distinguishes keyboard from pointer-hover.
|
|
556
|
+
* • ContextMenuShortcut gets font-mono (JetBrains Mono) per DS kbd/code spec.
|
|
557
|
+
* • Destructive items: --s-danger-fg text, --s-danger-subtle hover bg.
|
|
558
|
+
* • CheckIcon + CircleIcon indicators tinted with --s-brand-solid (amber).
|
|
559
|
+
* • ContextMenuLabel: uppercase, tracking-wider, font-mono, muted — per DS spec.
|
|
560
|
+
*/
|
|
561
|
+
declare function ContextMenu({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Root>): React$1.JSX.Element;
|
|
562
|
+
declare function ContextMenuTrigger({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Trigger>): React$1.JSX.Element;
|
|
563
|
+
declare function ContextMenuGroup({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Group>): React$1.JSX.Element;
|
|
564
|
+
declare function ContextMenuPortal({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Portal>): React$1.JSX.Element;
|
|
565
|
+
declare function ContextMenuSub({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Sub>): React$1.JSX.Element;
|
|
566
|
+
declare function ContextMenuRadioGroup({ ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>): React$1.JSX.Element;
|
|
247
567
|
declare function ContextMenuSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
|
|
248
568
|
inset?: boolean;
|
|
249
|
-
}):
|
|
250
|
-
declare function ContextMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.SubContent>):
|
|
251
|
-
declare function ContextMenuContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Content>):
|
|
569
|
+
}): React$1.JSX.Element;
|
|
570
|
+
declare function ContextMenuSubContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.SubContent>): React$1.JSX.Element;
|
|
571
|
+
declare function ContextMenuContent({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Content>): React$1.JSX.Element;
|
|
252
572
|
declare function ContextMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Item> & {
|
|
253
573
|
inset?: boolean;
|
|
254
574
|
variant?: "default" | "destructive";
|
|
255
|
-
}):
|
|
256
|
-
declare function ContextMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>):
|
|
257
|
-
declare function ContextMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.RadioItem>):
|
|
575
|
+
}): React$1.JSX.Element;
|
|
576
|
+
declare function ContextMenuCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>): React$1.JSX.Element;
|
|
577
|
+
declare function ContextMenuRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.RadioItem>): React$1.JSX.Element;
|
|
258
578
|
declare function ContextMenuLabel({ className, inset, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Label> & {
|
|
259
579
|
inset?: boolean;
|
|
260
|
-
}):
|
|
261
|
-
declare function ContextMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Separator>):
|
|
262
|
-
declare function ContextMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">):
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
580
|
+
}): React$1.JSX.Element;
|
|
581
|
+
declare function ContextMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof ContextMenuPrimitive.Separator>): React$1.JSX.Element;
|
|
582
|
+
declare function ContextMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Drawer — DFL Design System v0
|
|
586
|
+
*
|
|
587
|
+
* Tokens consumed (Layer 3 — already defined in tokens.css):
|
|
588
|
+
* --c-dialog-bg → --s-surface-raised (#1a1714) — elevated overlay, NOT page bg
|
|
589
|
+
* --c-dialog-border → --s-border-subtle
|
|
590
|
+
* --c-dialog-radius → --p-radius-xl (14px)
|
|
591
|
+
* --c-dialog-shadow → --p-shadow-overlay
|
|
592
|
+
* --c-dialog-scrim → --s-surface-scrim (rgba(10,9,8,0.72))
|
|
593
|
+
*
|
|
594
|
+
* Focus ring (uniform DS spec, all interactive children):
|
|
595
|
+
* box-shadow: 0 0 0 2px var(--background), 0 0 0 3px #E07A4A
|
|
596
|
+
* Applied via `focus-visible:` on DrawerClose; footer buttons use Button's ring.
|
|
597
|
+
*
|
|
598
|
+
* Direction rounding (leading corners only, matching the spec):
|
|
599
|
+
* bottom → top corners rounded (border-radius on tl + tr)
|
|
600
|
+
* top → bottom corners rounded (border-radius on bl + br)
|
|
601
|
+
* right → left corners rounded (border-radius on tl + bl)
|
|
602
|
+
* left → right corners rounded (border-radius on tr + br)
|
|
603
|
+
*/
|
|
604
|
+
|
|
605
|
+
declare function Drawer({ ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): React$1.JSX.Element;
|
|
606
|
+
declare function DrawerTrigger({ ...props }: React$1.ComponentProps<typeof Drawer$1.Trigger>): React$1.JSX.Element;
|
|
607
|
+
declare function DrawerPortal({ ...props }: React$1.ComponentProps<typeof Drawer$1.Portal>): React$1.JSX.Element;
|
|
608
|
+
declare function DrawerClose({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Close>): React$1.JSX.Element;
|
|
609
|
+
declare function DrawerOverlay({ className, style, ...props }: React$1.ComponentProps<typeof Drawer$1.Overlay>): React$1.JSX.Element;
|
|
610
|
+
declare function DrawerContent({ className, children, style, ...props }: React$1.ComponentProps<typeof Drawer$1.Content>): React$1.JSX.Element;
|
|
611
|
+
declare function DrawerHeader({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
|
|
612
|
+
declare function DrawerFooter({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
|
|
613
|
+
declare function DrawerTitle({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Title>): React$1.JSX.Element;
|
|
614
|
+
declare function DrawerDescription({ className, ...props }: React$1.ComponentProps<typeof Drawer$1.Description>): React$1.JSX.Element;
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* DropdownMenu — DFL Design System v0
|
|
618
|
+
*
|
|
619
|
+
* Tokens consumed (Layer 3 — all defined in tokens.css):
|
|
620
|
+
* --c-dropdownmenu-bg popover surface (--s-surface-raised, #1a1714)
|
|
621
|
+
* --c-dropdownmenu-border panel border (--s-border-subtle, #2a2622)
|
|
622
|
+
* --c-dropdownmenu-radius panel corner radius (--p-radius-md, 6px)
|
|
623
|
+
* --c-dropdownmenu-item-radius item corner radius (--p-radius-sm, 4px)
|
|
624
|
+
* --c-dropdownmenu-shadow panel drop-shadow (multi-layer)
|
|
625
|
+
* --c-dropdownmenu-item-fg default item text (--s-ink-secondary, #e8e0d0)
|
|
626
|
+
* --c-dropdownmenu-item-bg-hover item hover/highlight bg (--s-surface-elevated, #1f1c18)
|
|
627
|
+
* --c-dropdownmenu-item-fg-hover item hover/highlight text (--s-ink-primary, #f6f1e7)
|
|
628
|
+
* --c-dropdownmenu-label-fg section-label colour (--s-ink-muted, #7d7568)
|
|
629
|
+
* --c-dropdownmenu-separator separator hairline (--s-border-subtle, #2a2622)
|
|
630
|
+
* --c-dropdownmenu-shortcut-fg shortcut key colour (--s-ink-muted, #7d7568)
|
|
631
|
+
* --c-dropdownmenu-check-color checkbox checkmark (--s-brand-solid, #E07A4A)
|
|
632
|
+
* --c-dropdownmenu-destructive-fg danger item text (--s-danger-fg, #e89898)
|
|
633
|
+
* --c-dropdownmenu-destructive-bghov danger item hover bg (--s-danger-subtle)
|
|
634
|
+
* --c-dropdownmenu-focus-ring uniform DS ring: 2px bg-gap + 1px amber
|
|
635
|
+
*
|
|
636
|
+
* Brand fixes vs vanilla shadcn:
|
|
637
|
+
* - Focus ring: replaced amber bg-flood (focus:bg-accent) with uniform DS ring.
|
|
638
|
+
* data-[highlighted] drives the bg/text shift for BOTH pointer and keyboard;
|
|
639
|
+
* focus-visible:shadow-[...] drives the amber ring for keyboard ONLY.
|
|
640
|
+
* - Separator: was bg-muted (#1a1714 == popover bg, zero contrast, invisible).
|
|
641
|
+
* Now bg-[var(--c-dropdownmenu-separator)] (#2a2622, visible hairline).
|
|
642
|
+
* - Label: was full ink-secondary (no visual hierarchy vs item text).
|
|
643
|
+
* Now --c-dropdownmenu-label-fg (muted) + uppercase + tight tracking.
|
|
644
|
+
* - Shortcut: added [font-family:var(--p-font-mono)] (JetBrains Mono per brand spec).
|
|
645
|
+
* Removed opacity-60 — muted ink colour meets contrast floor without it.
|
|
646
|
+
*/
|
|
274
647
|
|
|
275
648
|
declare const DropdownMenu: React$1.FC<DropdownMenuPrimitive.DropdownMenuProps>;
|
|
276
649
|
declare const DropdownMenuTrigger: React$1.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
@@ -293,12 +666,26 @@ declare const DropdownMenuLabel: React$1.ForwardRefExoticComponent<Omit<Dropdown
|
|
|
293
666
|
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
294
667
|
declare const DropdownMenuSeparator: React$1.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
295
668
|
declare const DropdownMenuShortcut: {
|
|
296
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>):
|
|
669
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLSpanElement>): React$1.JSX.Element;
|
|
297
670
|
displayName: string;
|
|
298
671
|
};
|
|
299
672
|
|
|
300
|
-
|
|
301
|
-
|
|
673
|
+
/**
|
|
674
|
+
* Form — DFL Design System v0
|
|
675
|
+
*
|
|
676
|
+
* Thin React Hook Form wrapper (FormProvider + Controller). Composes
|
|
677
|
+
* FormItem, FormLabel, FormControl, FormDescription, FormMessage.
|
|
678
|
+
*
|
|
679
|
+
* Tokens consumed (Layer 3 → Layer 2 → Layer 1):
|
|
680
|
+
* --c-form-gap (8px, p-space-2) — gap between label/control/hint/message
|
|
681
|
+
* --c-form-section-gap (20px, p-space-5) — gap between FormItems in a <form>
|
|
682
|
+
* --c-form-label-fg (s-ink-secondary) — label default colour
|
|
683
|
+
* --c-form-label-error-fg (s-danger-fg) — label colour when field has error
|
|
684
|
+
* --c-form-description-fg (s-ink-muted) — helper text below the control
|
|
685
|
+
* --c-form-message-error-fg (s-danger-fg) — validation-error message colour
|
|
686
|
+
*/
|
|
687
|
+
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>({ children, watch, getValues, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, }: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
|
|
688
|
+
declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => React$1.JSX.Element;
|
|
302
689
|
declare const useFormField: () => {
|
|
303
690
|
invalid: boolean;
|
|
304
691
|
isDirty: boolean;
|
|
@@ -311,15 +698,51 @@ declare const useFormField: () => {
|
|
|
311
698
|
formDescriptionId: string;
|
|
312
699
|
formMessageId: string;
|
|
313
700
|
};
|
|
701
|
+
/**
|
|
702
|
+
* FormItem — vertical flex stack.
|
|
703
|
+
* Gap is driven by --c-form-gap (replaces the Tailwind `space-y-2` utility).
|
|
704
|
+
*/
|
|
314
705
|
declare const FormItem: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
706
|
+
/**
|
|
707
|
+
* FormLabel — wraps the DS Label.
|
|
708
|
+
* Error state switches colour from --c-form-label-fg (→ --s-ink-secondary)
|
|
709
|
+
* to --c-form-label-error-fg (→ --s-danger-fg, #e89898 — the softer danger-fg
|
|
710
|
+
* tint) instead of leaking the Tailwind alias `text-destructive`
|
|
711
|
+
* (→ --destructive → --s-danger-solid, full-saturation #e07a7a).
|
|
712
|
+
*/
|
|
315
713
|
declare const FormLabel: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & React$1.RefAttributes<HTMLLabelElement>>;
|
|
316
|
-
declare const FormControl: React$1.ForwardRefExoticComponent<Omit<
|
|
714
|
+
declare const FormControl: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<HTMLElement> & {
|
|
715
|
+
children?: React$1.ReactNode;
|
|
716
|
+
} & React$1.RefAttributes<HTMLElement>, "ref"> & React$1.RefAttributes<HTMLElement>>;
|
|
717
|
+
/**
|
|
718
|
+
* FormDescription — helper text below the control.
|
|
719
|
+
* Uses --c-form-description-fg (→ --s-ink-muted) instead of the Tailwind
|
|
720
|
+
* alias `text-muted-foreground`.
|
|
721
|
+
*/
|
|
317
722
|
declare const FormDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
723
|
+
/**
|
|
724
|
+
* FormMessage — validation-error text.
|
|
725
|
+
* Uses --c-form-message-error-fg (→ --s-danger-fg, #e89898) instead of the
|
|
726
|
+
* Tailwind alias `text-destructive` (→ --s-danger-solid, #e07a7a).
|
|
727
|
+
*/
|
|
318
728
|
declare const FormMessage: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
319
729
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
730
|
+
/**
|
|
731
|
+
* HoverCard — DFL Design System v0
|
|
732
|
+
*
|
|
733
|
+
* Tokens consumed:
|
|
734
|
+
* --c-hovercard-{bg,border,radius,padding,shadow,focus-ring}
|
|
735
|
+
* backed by --s-surface-raised, --s-border-subtle, --p-radius-lg (10px),
|
|
736
|
+
* --p-space-4, --p-shadow, and a double box-shadow focus ring
|
|
737
|
+
* (0 0 0 2px page-bg + 0 0 0 3px amber — DS uniform ring).
|
|
738
|
+
*
|
|
739
|
+
* Panel radius: --p-radius-lg = 10px (overlay/card tier).
|
|
740
|
+
* NOT --p-radius-md = 6px (input/button tier).
|
|
741
|
+
* Trigger focus ring: DS uniform ring via --c-hovercard-focus-ring.
|
|
742
|
+
*/
|
|
743
|
+
declare function HoverCard({ ...props }: React$1.ComponentProps<typeof HoverCardPrimitive.Root>): React$1.JSX.Element;
|
|
744
|
+
declare function HoverCardTrigger({ className, ...props }: React$1.ComponentProps<typeof HoverCardPrimitive.Trigger>): React$1.JSX.Element;
|
|
745
|
+
declare function HoverCardContent({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof HoverCardPrimitive.Content>): React$1.JSX.Element;
|
|
323
746
|
|
|
324
747
|
/**
|
|
325
748
|
* IconButton — DFL Design System v0 (NEW in v1.0.0).
|
|
@@ -334,13 +757,23 @@ declare function HoverCardContent({ className, align, sideOffset, ...props }: Re
|
|
|
334
757
|
* <IconButton aria-label="Search"><SearchIcon /></IconButton>
|
|
335
758
|
*
|
|
336
759
|
* Tokens consumed:
|
|
337
|
-
* --c-button-radius, --s-brand-subtle, --s-brand-fg,
|
|
760
|
+
* --c-button-radius, --s-brand-subtle, --s-brand-fg,
|
|
761
|
+
* --s-surface-page (focus ring bg-gap), --s-border-focus (focus ring outline),
|
|
338
762
|
* --c-button-ghost-fg, --c-button-ghost-bg-hover, --s-ink-primary,
|
|
339
|
-
* --s-surface-raised, --s-border-subtle, --s-border-strong
|
|
763
|
+
* --s-surface-raised, --s-border-subtle, --s-border-strong,
|
|
764
|
+
* --c-button-primary-bg, --c-button-primary-fg, --c-button-primary-bg-hover,
|
|
765
|
+
* --c-button-destructive-fg, --c-button-destructive-bg-hover.
|
|
766
|
+
*
|
|
767
|
+
* Focus ring: DFL uniform two-layer box-shadow — 2px page-color gap +
|
|
768
|
+
* 1px solid amber. Applied via box-shadow (not Tailwind ring utilities)
|
|
769
|
+
* to preserve border-radius on all variants.
|
|
770
|
+
* ⚠️ DO NOT revert to `focus-visible:ring-[3px] focus-visible:ring-[var(--s-brand-ring)]`
|
|
771
|
+
* — that produces a single semi-transparent halo (rgba 0.45), not the
|
|
772
|
+
* mandated crisp two-layer ring (brand spec: box-shadow 0 0 0 2px page, 0 0 0 3px amber).
|
|
340
773
|
*/
|
|
341
774
|
declare const iconButtonVariants: (props?: ({
|
|
342
775
|
variant?: "destructive" | "outline" | "ghost" | "solid" | null | undefined;
|
|
343
|
-
size?: "default" | "sm" | "lg" | "xs" | null | undefined;
|
|
776
|
+
size?: "default" | "sm" | "lg" | "md" | "xs" | null | undefined;
|
|
344
777
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
345
778
|
interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof iconButtonVariants> {
|
|
346
779
|
asChild?: boolean;
|
|
@@ -360,26 +793,48 @@ declare const IconButton: React$1.ForwardRefExoticComponent<IconButtonProps & Re
|
|
|
360
793
|
*/
|
|
361
794
|
declare const Input: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
362
795
|
|
|
363
|
-
|
|
796
|
+
/**
|
|
797
|
+
* Visual validation status for the OTP widget.
|
|
798
|
+
*
|
|
799
|
+
* - default: idle / filling — warm sand borders, no tint
|
|
800
|
+
* - error: rejected code — --s-danger-solid border, --s-danger-subtle bg
|
|
801
|
+
* - success: verified code — --s-success-solid border, --s-success-subtle bg
|
|
802
|
+
*
|
|
803
|
+
* Provided to all child InputOTPSlots via InputOTPStatusContext so the caller
|
|
804
|
+
* sets it once on the <InputOTP> root, not on every slot.
|
|
805
|
+
*/
|
|
806
|
+
type OTPStatus = "default" | "error" | "success";
|
|
807
|
+
declare function InputOTP({ className, containerClassName, status, ...props }: React$1.ComponentProps<typeof OTPInput> & {
|
|
364
808
|
containerClassName?: string;
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
809
|
+
/** Visual validation status applied uniformly to all slots. */
|
|
810
|
+
status?: OTPStatus;
|
|
811
|
+
}): React$1.JSX.Element;
|
|
812
|
+
declare function InputOTPGroup({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
|
|
813
|
+
declare function InputOTPSlot({ index, className, style, ...props }: React$1.ComponentProps<"div"> & {
|
|
368
814
|
index: number;
|
|
369
|
-
}):
|
|
370
|
-
declare function InputOTPSeparator({ ...props }: React$1.ComponentProps<"div">):
|
|
815
|
+
}): React$1.JSX.Element;
|
|
816
|
+
declare function InputOTPSeparator({ className, ...props }: React$1.ComponentProps<"div">): React$1.JSX.Element;
|
|
371
817
|
|
|
372
818
|
/**
|
|
373
819
|
* Kbd — DFL Design System v0 (NEW in v1.0.0).
|
|
374
820
|
*
|
|
375
821
|
* Single-key chip. Combine like:
|
|
376
|
-
* <Kbd>⌘</Kbd><Kbd>K</Kbd>
|
|
822
|
+
* <Kbd>⌘</Kbd><span aria-hidden="true">+</span><Kbd>K</Kbd>
|
|
377
823
|
*
|
|
378
824
|
* Also exposed as the `kbd` prop on <Button /> for inline shortcut hints.
|
|
379
825
|
*
|
|
380
|
-
* Tokens consumed:
|
|
381
|
-
* --
|
|
382
|
-
* --s-
|
|
826
|
+
* Tokens consumed (Layer 3 → Layer 2 → Layer 1):
|
|
827
|
+
* --c-kbd-bg → --s-surface-raised (#1a1714)
|
|
828
|
+
* --c-kbd-bg-depth → --s-surface-panel (#141210) — bottom shadow ridge
|
|
829
|
+
* --c-kbd-border → --s-border-subtle (#2a2622)
|
|
830
|
+
* --c-kbd-fg → --s-ink-primary (#f6f1e7) — upgraded from ink-secondary for legibility
|
|
831
|
+
* --c-kbd-shine rgba(255,255,255,0.055) — top inset highlight
|
|
832
|
+
* --c-kbd-radius → --p-radius-sm (4px)
|
|
833
|
+
*
|
|
834
|
+
* Size specs (per DS v0 spec):
|
|
835
|
+
* sm 9.5px mono · 17px height · 3px radius
|
|
836
|
+
* default 10.5px mono · 20px height · 4px radius
|
|
837
|
+
* lg 12px mono · 24px height · 4px radius
|
|
383
838
|
*/
|
|
384
839
|
declare const kbdVariants: (props?: ({
|
|
385
840
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
@@ -391,86 +846,289 @@ declare const Kbd: React$1.ForwardRefExoticComponent<KbdProps & React$1.RefAttri
|
|
|
391
846
|
/**
|
|
392
847
|
* Label — DFL Design System v0
|
|
393
848
|
*
|
|
394
|
-
*
|
|
395
|
-
* default
|
|
396
|
-
*
|
|
849
|
+
* Tokens consumed (Layer 3 → Layer 2 → Layer 1):
|
|
850
|
+
* --c-label-fg → --s-ink-secondary (default variant)
|
|
851
|
+
* --c-label-fg-muted → --s-ink-muted (mono variant)
|
|
852
|
+
* --c-label-fg-error → --s-danger-fg (error state; #e89898)
|
|
853
|
+
* --c-label-fg-disabled → --s-ink-disabled (explicit disabled state)
|
|
854
|
+
* --c-label-required-color → --s-brand-solid (required asterisk)
|
|
855
|
+
* --c-label-font-size → --p-text-12 (12px default)
|
|
856
|
+
* --c-label-mono-font-size → 10.5px (mono; no p-text primitive)
|
|
857
|
+
* --c-label-mono-tracking → 0.06em (mono letter-spacing)
|
|
858
|
+
*
|
|
859
|
+
* Two shape variants:
|
|
860
|
+
* default — Inter 12px/500, sentence case for form fields.
|
|
861
|
+
* mono — JetBrains Mono uppercase, for "meta about meta" (table headers, key lists).
|
|
862
|
+
*
|
|
863
|
+
* Three explicit states (peer-disabled also propagates automatically via CSS):
|
|
864
|
+
* default — no additional override.
|
|
865
|
+
* error — label adopts --c-label-fg-error when its paired field is invalid.
|
|
866
|
+
* disabled — reduced opacity + cursor:not-allowed (for label-first layouts where
|
|
867
|
+
* peer-disabled cannot propagate via DOM sibling order).
|
|
397
868
|
*/
|
|
398
869
|
declare const labelVariants: (props?: ({
|
|
399
870
|
variant?: "default" | "mono" | null | undefined;
|
|
871
|
+
state?: "disabled" | "default" | "error" | null | undefined;
|
|
400
872
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
401
873
|
declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: ({
|
|
402
874
|
variant?: "default" | "mono" | null | undefined;
|
|
875
|
+
state?: "disabled" | "default" | "error" | null | undefined;
|
|
403
876
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLLabelElement>>;
|
|
404
877
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
878
|
+
/**
|
|
879
|
+
* Menubar — DFL Design System v0
|
|
880
|
+
*
|
|
881
|
+
* Tokens consumed (Layer 3 → Layer 2 → Layer 1):
|
|
882
|
+
* --c-menubar-bar-bg, --c-menubar-bar-border, --c-menubar-bar-radius
|
|
883
|
+
* --c-menubar-trigger-fg, --c-menubar-trigger-bg-hover, --c-menubar-trigger-bg-open, --c-menubar-trigger-radius
|
|
884
|
+
* --c-menubar-content-bg, --c-menubar-item-fg, --c-menubar-item-bg-hover, --c-menubar-item-radius
|
|
885
|
+
* --c-menubar-shortcut-font, --c-menubar-shortcut-fg
|
|
886
|
+
* --c-menubar-indicator-color
|
|
887
|
+
* --c-menubar-dest-fg, --c-menubar-dest-bg-hover
|
|
888
|
+
* --c-menubar-ring-trigger, --c-menubar-ring-item (DS 2-layer amber focus ring)
|
|
889
|
+
*
|
|
890
|
+
* Focus ring spec: box-shadow: 0 0 0 2px <surface-bg>, 0 0 0 3px #E07A4A
|
|
891
|
+
* Triggers sit on bar bg → ring uses --c-menubar-bar-bg as inner layer.
|
|
892
|
+
* Items sit inside the dropdown → ring uses --c-menubar-content-bg.
|
|
893
|
+
*
|
|
894
|
+
* Item hover: brand-subtle tint (rgba(224,122,74,0.10)) — NOT solid accent fill.
|
|
895
|
+
* CheckboxItem/RadioItem indicators: --c-menubar-indicator-color (#E07A4A amber).
|
|
896
|
+
* Shortcuts: JetBrains Mono via --c-menubar-shortcut-font.
|
|
897
|
+
*/
|
|
898
|
+
declare function Menubar({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Root>): React$1.JSX.Element;
|
|
899
|
+
declare function MenubarMenu({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Menu>): React$1.JSX.Element;
|
|
900
|
+
declare function MenubarGroup({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Group>): React$1.JSX.Element;
|
|
901
|
+
declare function MenubarPortal({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Portal>): React$1.JSX.Element;
|
|
902
|
+
declare function MenubarRadioGroup({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.RadioGroup>): React$1.JSX.Element;
|
|
903
|
+
declare function MenubarTrigger({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Trigger>): React$1.JSX.Element;
|
|
904
|
+
declare function MenubarContent({ className, align, alignOffset, sideOffset, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Content>): React$1.JSX.Element;
|
|
412
905
|
declare function MenubarItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Item> & {
|
|
413
906
|
inset?: boolean;
|
|
414
907
|
variant?: "default" | "destructive";
|
|
415
|
-
}):
|
|
416
|
-
declare function MenubarCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.CheckboxItem>):
|
|
417
|
-
declare function MenubarRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.RadioItem>):
|
|
908
|
+
}): React$1.JSX.Element;
|
|
909
|
+
declare function MenubarCheckboxItem({ className, children, checked, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.CheckboxItem>): React$1.JSX.Element;
|
|
910
|
+
declare function MenubarRadioItem({ className, children, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.RadioItem>): React$1.JSX.Element;
|
|
418
911
|
declare function MenubarLabel({ className, inset, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Label> & {
|
|
419
912
|
inset?: boolean;
|
|
420
|
-
}):
|
|
421
|
-
declare function MenubarSeparator({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Separator>):
|
|
422
|
-
declare function MenubarShortcut({ className, ...props }: React$1.ComponentProps<"span">):
|
|
423
|
-
declare function MenubarSub({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Sub>):
|
|
913
|
+
}): React$1.JSX.Element;
|
|
914
|
+
declare function MenubarSeparator({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Separator>): React$1.JSX.Element;
|
|
915
|
+
declare function MenubarShortcut({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
|
|
916
|
+
declare function MenubarSub({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Sub>): React$1.JSX.Element;
|
|
424
917
|
declare function MenubarSubTrigger({ className, inset, children, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
|
|
425
918
|
inset?: boolean;
|
|
426
|
-
}):
|
|
427
|
-
declare function MenubarSubContent({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.SubContent>):
|
|
919
|
+
}): React$1.JSX.Element;
|
|
920
|
+
declare function MenubarSubContent({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.SubContent>): React$1.JSX.Element;
|
|
428
921
|
|
|
429
922
|
declare function NavigationMenu({ className, children, viewport, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
|
|
430
923
|
viewport?: boolean;
|
|
431
|
-
}):
|
|
432
|
-
declare function NavigationMenuList({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.List>):
|
|
433
|
-
declare function NavigationMenuItem({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Item>):
|
|
924
|
+
}): React$1.JSX.Element;
|
|
925
|
+
declare function NavigationMenuList({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.List>): React$1.JSX.Element;
|
|
926
|
+
declare function NavigationMenuItem({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Item>): React$1.JSX.Element;
|
|
927
|
+
/**
|
|
928
|
+
* DS-token-aware trigger style.
|
|
929
|
+
*
|
|
930
|
+
* Fixes vs previous shadcn generic:
|
|
931
|
+
* • hover:bg-accent (= --accent = amber #E07A4A full-fill) → surface-elevated
|
|
932
|
+
* lift via --c-nav-trigger-hover-bg (#1f1c18). Amber is reserved for CTA only.
|
|
933
|
+
* • focus ring: was ring-[3px] ring-ring/50 (wrong width + opacity) →
|
|
934
|
+
* DS uniform ring: 2px gap + 1px amber ring via ring-1 / ring-offset-2,
|
|
935
|
+
* with transition-none so it appears instantly.
|
|
936
|
+
* • open state: amber-subtle bg tint (--c-nav-trigger-open-bg) + amber-300
|
|
937
|
+
* text + amber border — NOT a full amber fill.
|
|
938
|
+
*/
|
|
434
939
|
declare const navigationMenuTriggerStyle: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
435
|
-
declare function NavigationMenuTrigger({ className, children, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Trigger>):
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
940
|
+
declare function NavigationMenuTrigger({ className, children, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Trigger>): React$1.JSX.Element;
|
|
941
|
+
/**
|
|
942
|
+
* NavigationMenuContent — dropdown panel content.
|
|
943
|
+
*
|
|
944
|
+
* Fix: removed `**:data-[slot=navigation-menu-link]:focus:ring-0` and
|
|
945
|
+
* `**:data-[slot=navigation-menu-link]:focus:outline-none` which were
|
|
946
|
+
* silencing all focus rings inside the open dropdown (keyboard a11y regression).
|
|
947
|
+
* Content panel now uses --c-nav-content-* tokens instead of generic popover vars.
|
|
948
|
+
*/
|
|
949
|
+
declare function NavigationMenuContent({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Content>): React$1.JSX.Element;
|
|
950
|
+
declare function NavigationMenuViewport({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Viewport>): React$1.JSX.Element;
|
|
951
|
+
/**
|
|
952
|
+
* NavigationMenuLink — top-level direct links AND content panel items.
|
|
953
|
+
*
|
|
954
|
+
* Fixes:
|
|
955
|
+
* • hover:bg-accent (amber full-fill) → --c-nav-item-hover-bg (surface-elevated)
|
|
956
|
+
* • focus:bg-accent → removed; replaced with DS ring on focus-visible
|
|
957
|
+
* • focus ring now visible (parent Content no longer suppresses it)
|
|
958
|
+
* • active state: brand-subtle bg + brand-fg text
|
|
959
|
+
* For content items with left-border indicator, add
|
|
960
|
+
* `border-l-2 border-l-[var(--c-nav-item-active-border)]` via className.
|
|
961
|
+
*/
|
|
962
|
+
declare function NavigationMenuLink({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Link>): React$1.JSX.Element;
|
|
963
|
+
declare function NavigationMenuIndicator({ className, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Indicator>): React$1.JSX.Element;
|
|
964
|
+
|
|
965
|
+
declare function Pagination({ className, ...props }: React$1.ComponentProps<"nav">): React$1.JSX.Element;
|
|
966
|
+
declare function PaginationContent({ className, ...props }: React$1.ComponentProps<"ul">): React$1.JSX.Element;
|
|
967
|
+
declare function PaginationItem({ ...props }: React$1.ComponentProps<"li">): React$1.JSX.Element;
|
|
444
968
|
type PaginationLinkProps = {
|
|
445
969
|
isActive?: boolean;
|
|
446
|
-
} &
|
|
447
|
-
declare function PaginationLink({ className, isActive,
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
970
|
+
} & React$1.ComponentProps<"a">;
|
|
971
|
+
declare function PaginationLink({ className, isActive, ...props }: PaginationLinkProps): React$1.JSX.Element;
|
|
972
|
+
type PaginationNavProps = {
|
|
973
|
+
disabled?: boolean;
|
|
974
|
+
} & React$1.ComponentProps<"a">;
|
|
975
|
+
declare function PaginationPrevious({ className, disabled, ...props }: PaginationNavProps): React$1.JSX.Element;
|
|
976
|
+
declare function PaginationNext({ className, disabled, ...props }: PaginationNavProps): React$1.JSX.Element;
|
|
977
|
+
declare function PaginationEllipsis({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
|
|
451
978
|
|
|
979
|
+
/**
|
|
980
|
+
* Popover — DFL Design System v0
|
|
981
|
+
*
|
|
982
|
+
* Tokens consumed (Layer 3):
|
|
983
|
+
* --c-popover-bg background surface (--s-surface-elevated #1f1c18)
|
|
984
|
+
* --c-popover-fg primary text (--s-ink-primary)
|
|
985
|
+
* --c-popover-border border color (--s-border-subtle)
|
|
986
|
+
* --c-popover-radius 10px (--p-radius-lg) — overlays use lg, not md
|
|
987
|
+
* --c-popover-shadow DS shadow token (--p-shadow 0 4px 12px…)
|
|
988
|
+
* --c-popover-padding interior padding (--p-space-4 = 16px)
|
|
989
|
+
*
|
|
990
|
+
* Focus ring on the trigger — apply via className on the wrapped element:
|
|
991
|
+
* focus-visible:ring-0
|
|
992
|
+
* focus-visible:[box-shadow:0_0_0_2px_var(--s-surface-page),_0_0_0_3px_#E07A4A]
|
|
993
|
+
*
|
|
994
|
+
* sideOffset default raised to 6 (was 4) — breathing room per DS spec.
|
|
995
|
+
*/
|
|
452
996
|
declare const Popover: React$1.FC<PopoverPrimitive.PopoverProps>;
|
|
453
997
|
declare const PopoverTrigger: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
998
|
+
declare const PopoverAnchor: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
454
999
|
declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
455
1000
|
|
|
456
|
-
|
|
1001
|
+
/**
|
|
1002
|
+
* Progress — DFL Design System v0
|
|
1003
|
+
*
|
|
1004
|
+
* Tokens consumed:
|
|
1005
|
+
* --c-progress-{track-bg,radius,h-sm,h-md,h-lg,duration,easing}
|
|
1006
|
+
* --c-progress-fill-{default,success,danger,warning,info}
|
|
1007
|
+
* backed by --s-brand-solid, --s-{success,danger,warning,info}-solid
|
|
1008
|
+
*
|
|
1009
|
+
* Props:
|
|
1010
|
+
* size: sm (4px) | md (8px, default) | lg (12px)
|
|
1011
|
+
* variant: default (amber) | success | danger | warning | info
|
|
1012
|
+
* value: 0–100
|
|
1013
|
+
*/
|
|
1014
|
+
declare const progressTrackVariants: (props?: ({
|
|
1015
|
+
size?: "sm" | "lg" | "md" | null | undefined;
|
|
1016
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1017
|
+
declare const progressFillVariants: (props?: ({
|
|
1018
|
+
variant?: "default" | "info" | "success" | "warning" | "danger" | null | undefined;
|
|
1019
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1020
|
+
interface ProgressProps extends React$1.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>, VariantProps<typeof progressTrackVariants>, VariantProps<typeof progressFillVariants> {
|
|
1021
|
+
}
|
|
1022
|
+
declare const Progress: React$1.ForwardRefExoticComponent<ProgressProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
457
1023
|
|
|
1024
|
+
/**
|
|
1025
|
+
* RadioGroup — DS v0 token-native refactor.
|
|
1026
|
+
*
|
|
1027
|
+
* Changes from vanilla shadcn:
|
|
1028
|
+
* - Border on unselected items uses --c-radio-border (→ --s-border-strong, #3a3530)
|
|
1029
|
+
* instead of border-primary (amber) which leaked the brand accent onto neutral state.
|
|
1030
|
+
* - Focus ring is the uniform DFL ring: box-shadow 0 0 0 2px page-bg, 0 0 0 3px #E07A4A
|
|
1031
|
+
* (instant — box-shadow not in transition-colors, appears/disappears without animation).
|
|
1032
|
+
* - Indicator is a pure CSS div (8px filled circle) replacing the Lucide <Circle> icon
|
|
1033
|
+
* which required SVG fill/color coupling via fill-current text-current.
|
|
1034
|
+
* - All knobs resolve through --c-radio-* component tokens → --s-* semantic tokens.
|
|
1035
|
+
*/
|
|
458
1036
|
declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
459
1037
|
declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1038
|
+
/**
|
|
1039
|
+
* RadioGroupRow — convenience compound: RadioGroupItem + Label with correct
|
|
1040
|
+
* disabled handling. Disabled propagates to both the circle (opacity/cursor via
|
|
1041
|
+
* the item) and the label (--c-radio-label-fg-disabled, cursor not-allowed).
|
|
1042
|
+
*
|
|
1043
|
+
* Use for typical radio list rows. Use RadioGroupItem directly when you need
|
|
1044
|
+
* finer composition control (e.g. custom label markup).
|
|
1045
|
+
*/
|
|
1046
|
+
interface RadioGroupRowProps {
|
|
1047
|
+
value: string;
|
|
1048
|
+
id: string;
|
|
1049
|
+
disabled?: boolean;
|
|
1050
|
+
children: React$1.ReactNode;
|
|
1051
|
+
className?: string;
|
|
1052
|
+
}
|
|
1053
|
+
declare const RadioGroupRow: {
|
|
1054
|
+
({ value, id, disabled, children, className, }: RadioGroupRowProps): React$1.JSX.Element;
|
|
1055
|
+
displayName: string;
|
|
1056
|
+
};
|
|
460
1057
|
|
|
461
|
-
|
|
462
|
-
|
|
1058
|
+
/**
|
|
1059
|
+
* ResizablePanelGroup / ResizablePanel / ResizableHandle
|
|
1060
|
+
*
|
|
1061
|
+
* DS v0 token adoption — Layer 3 component tokens (--c-resizable-*):
|
|
1062
|
+
* --c-resizable-handle-track → --s-border-subtle (1px divider, idle)
|
|
1063
|
+
* --c-resizable-handle-track-hover → --s-border-strong (divider on hover)
|
|
1064
|
+
* --c-resizable-handle-track-focus → --s-brand-solid (divider on keyboard focus)
|
|
1065
|
+
* --c-resizable-handle-track-drag → --s-brand-solid (divider while dragging)
|
|
1066
|
+
* --c-resizable-grip-bg → --s-surface-elevated
|
|
1067
|
+
* --c-resizable-grip-border → --s-border-subtle
|
|
1068
|
+
* --c-resizable-grip-border-hover → --s-border-strong
|
|
1069
|
+
* --c-resizable-grip-border-focus → --s-brand-solid
|
|
1070
|
+
* --c-resizable-grip-border-drag → --s-brand-solid
|
|
1071
|
+
* --c-resizable-grip-icon → --s-ink-muted
|
|
1072
|
+
* --c-resizable-grip-icon-drag → --s-brand-solid
|
|
1073
|
+
*
|
|
1074
|
+
* Focus ring: DFL uniform ring (2px surface-page gap + 1px amber) applied as
|
|
1075
|
+
* box-shadow on the grip widget when the handle has :focus-visible.
|
|
1076
|
+
* Drag state: react-resizable-panels emits data-resize-handle-active on
|
|
1077
|
+
* PanelResizeHandle during drag — drives amber track + amber-tinted grip +
|
|
1078
|
+
* amber dot icons.
|
|
1079
|
+
*/
|
|
1080
|
+
declare function ResizablePanelGroup({ className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelGroup>): React$1.JSX.Element;
|
|
1081
|
+
declare function ResizablePanel({ ...props }: React$1.ComponentProps<typeof ResizablePrimitive.Panel>): React$1.JSX.Element;
|
|
463
1082
|
declare function ResizableHandle({ withHandle, className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
|
|
464
1083
|
withHandle?: boolean;
|
|
465
|
-
}):
|
|
1084
|
+
}): React$1.JSX.Element;
|
|
466
1085
|
|
|
467
|
-
|
|
1086
|
+
/**
|
|
1087
|
+
* ScrollArea — Radix custom-scrollbar container with DS v0 token adoption.
|
|
1088
|
+
*
|
|
1089
|
+
* DS tokens consumed (Layer 3 → Layer 2 chain):
|
|
1090
|
+
* --c-scroll-area-thumb rest → --s-ink-muted (#7d7568)
|
|
1091
|
+
* --c-scroll-area-thumb-hover hover → --s-brand-solid (#E07A4A)
|
|
1092
|
+
* --c-scroll-area-thumb-active active → --s-brand-pressed (#c2663b)
|
|
1093
|
+
* --c-scroll-area-track-hover track bg on container hover
|
|
1094
|
+
* --c-scroll-area-width 8px scrollbar rail width
|
|
1095
|
+
* --c-scroll-area-radius 999px pill thumb
|
|
1096
|
+
*
|
|
1097
|
+
* Focus: the Viewport receives keyboard focus when children are non-focusable
|
|
1098
|
+
* (plain-text lists). The DS uniform amber ring is applied via focus-visible:
|
|
1099
|
+
* box-shadow: 0 0 0 2px var(--s-surface-page), 0 0 0 3px #E07A4A
|
|
1100
|
+
* When children ARE focusable (buttons, links), the ring belongs on those
|
|
1101
|
+
* elements — not on the scroll container.
|
|
1102
|
+
*/
|
|
1103
|
+
type ScrollAreaScrollbars = "vertical" | "horizontal" | "both";
|
|
1104
|
+
interface ScrollAreaProps extends React$1.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {
|
|
1105
|
+
/** Which scrollbar orientations to render. @default "vertical" */
|
|
1106
|
+
scrollbars?: ScrollAreaScrollbars;
|
|
1107
|
+
}
|
|
1108
|
+
declare const ScrollArea: React$1.ForwardRefExoticComponent<ScrollAreaProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
468
1109
|
declare const ScrollBar: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
469
1110
|
|
|
470
1111
|
declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
|
|
471
1112
|
declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
472
1113
|
declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
473
|
-
|
|
1114
|
+
/**
|
|
1115
|
+
* SelectTrigger — DFL Design System v0
|
|
1116
|
+
*
|
|
1117
|
+
* Design changes vs shadcn baseline:
|
|
1118
|
+
* - Focus ring: canonical DFL `outline: 1px solid #E07A4A; outline-offset: 3px`
|
|
1119
|
+
* via `.ds-focus-ring` class (no shadcn `ring-*` utilities).
|
|
1120
|
+
* - bg: --c-select-bg (sand-850), border: --c-select-border (sand-700)
|
|
1121
|
+
* - Hover: border escalates to --c-select-border-hover (sand-600)
|
|
1122
|
+
* - Open state: amber border + amber outline ring + chevron rotates 180° to amber
|
|
1123
|
+
* - Disabled: opacity 0.45 (spec), cursor not-allowed
|
|
1124
|
+
* - Error: border switches to --c-select-border-error (danger-solid)
|
|
1125
|
+
* - Chevron: --c-select-icon-color (sand-400); escalates on hover/open
|
|
1126
|
+
*/
|
|
1127
|
+
interface SelectTriggerProps extends React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {
|
|
1128
|
+
/** When true, the trigger displays the error border (--c-select-border-error). */
|
|
1129
|
+
error?: boolean;
|
|
1130
|
+
}
|
|
1131
|
+
declare const SelectTrigger: React$1.ForwardRefExoticComponent<SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
474
1132
|
declare const SelectScrollUpButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
475
1133
|
declare const SelectScrollDownButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
476
1134
|
declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
@@ -478,7 +1136,34 @@ declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitiv
|
|
|
478
1136
|
declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
479
1137
|
declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
480
1138
|
|
|
1139
|
+
/**
|
|
1140
|
+
* Separator — Radix UI primitive, 1-pixel rule consuming DS component tokens.
|
|
1141
|
+
*
|
|
1142
|
+
* Component tokens consumed (defined in tokens.css Layer 3):
|
|
1143
|
+
* --c-separator-color : line fill (default → --s-border-subtle → #2a2622)
|
|
1144
|
+
* --c-separator-thickness : line width/height (default → 1px)
|
|
1145
|
+
*
|
|
1146
|
+
* Override per-use via inline style:
|
|
1147
|
+
* style={{ "--c-separator-color": "var(--s-border-strong)" } as React.CSSProperties}
|
|
1148
|
+
*
|
|
1149
|
+
* Non-interactive — no focus ring needed.
|
|
1150
|
+
*/
|
|
481
1151
|
declare const Separator: React$1.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1152
|
+
/**
|
|
1153
|
+
* SeparatorWithLabel — composite: two separator lines flanking a centered label.
|
|
1154
|
+
*
|
|
1155
|
+
* Additional component tokens consumed:
|
|
1156
|
+
* --c-separator-label-fg : label text color (default → --s-ink-muted → #7d7568)
|
|
1157
|
+
* --c-separator-label-size : label font size (default → 11px)
|
|
1158
|
+
*
|
|
1159
|
+
* Usage:
|
|
1160
|
+
* <SeparatorWithLabel label="ou continue com" />
|
|
1161
|
+
* <SeparatorWithLabel label="Módulo 3" />
|
|
1162
|
+
*/
|
|
1163
|
+
interface SeparatorWithLabelProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1164
|
+
label: string;
|
|
1165
|
+
}
|
|
1166
|
+
declare const SeparatorWithLabel: React$1.ForwardRefExoticComponent<SeparatorWithLabelProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
482
1167
|
|
|
483
1168
|
declare const Sheet: React$1.FC<DialogPrimitive.DialogProps>;
|
|
484
1169
|
declare const SheetTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
@@ -486,25 +1171,56 @@ declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dial
|
|
|
486
1171
|
declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
|
|
487
1172
|
declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
488
1173
|
declare const sheetVariants: (props?: ({
|
|
489
|
-
side?: "
|
|
1174
|
+
side?: "left" | "right" | "bottom" | "top" | null | undefined;
|
|
490
1175
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
491
1176
|
interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
|
|
492
1177
|
}
|
|
493
1178
|
declare const SheetContent: React$1.ForwardRefExoticComponent<SheetContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
494
1179
|
declare const SheetHeader: {
|
|
495
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>):
|
|
1180
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
496
1181
|
displayName: string;
|
|
497
1182
|
};
|
|
498
1183
|
declare const SheetFooter: {
|
|
499
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>):
|
|
1184
|
+
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
500
1185
|
displayName: string;
|
|
501
1186
|
};
|
|
502
1187
|
declare const SheetTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
503
1188
|
declare const SheetDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
504
1189
|
|
|
1190
|
+
/**
|
|
1191
|
+
* Tooltip — DFL Design System v0
|
|
1192
|
+
*
|
|
1193
|
+
* Tokens consumed:
|
|
1194
|
+
* --c-tooltip-bg, --c-tooltip-fg, --c-tooltip-border,
|
|
1195
|
+
* --c-tooltip-radius, --c-tooltip-shadow
|
|
1196
|
+
*
|
|
1197
|
+
* Anatomy:
|
|
1198
|
+
* TooltipProvider — wrap page / section once (controls delayDuration etc.)
|
|
1199
|
+
* Tooltip — root (open state machine)
|
|
1200
|
+
* TooltipTrigger — the interactive element; carries the DS uniform focus ring
|
|
1201
|
+
* TooltipContent — the floating bubble; includes a directional Radix Arrow
|
|
1202
|
+
*
|
|
1203
|
+
* Focus ring:
|
|
1204
|
+
* TooltipTrigger adds the `.ds-focus-ring` class, which resolves to
|
|
1205
|
+
* `outline: 1px solid var(--s-border-focus); outline-offset: 3px` on
|
|
1206
|
+
* :focus-visible. When used with `asChild` + a Button, the class merges
|
|
1207
|
+
* into the child via Radix Slot.
|
|
1208
|
+
*
|
|
1209
|
+
* Arrow / caret:
|
|
1210
|
+
* TooltipPrimitive.Arrow is wired inside TooltipContent.
|
|
1211
|
+
* fill = --c-tooltip-bg (same as bubble bg)
|
|
1212
|
+
* stroke = --c-tooltip-border (matches bubble border)
|
|
1213
|
+
*
|
|
1214
|
+
* sideOffset default raised 4 → 6 for breathing room between bubble and trigger.
|
|
1215
|
+
*/
|
|
505
1216
|
declare const TooltipProvider: React$1.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
506
1217
|
declare const Tooltip: React$1.FC<TooltipPrimitive.TooltipProps>;
|
|
507
|
-
|
|
1218
|
+
/**
|
|
1219
|
+
* TooltipTrigger — wraps Radix Trigger and injects the DS uniform focus ring.
|
|
1220
|
+
* The `.ds-focus-ring` class is defined in tokens.css and applies
|
|
1221
|
+
* `outline: 1px solid var(--s-border-focus); outline-offset: 3px` on :focus-visible.
|
|
1222
|
+
*/
|
|
1223
|
+
declare const TooltipTrigger: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
508
1224
|
declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
509
1225
|
|
|
510
1226
|
type SidebarContext = {
|
|
@@ -570,14 +1286,86 @@ declare const SidebarMenuSubButton: React$1.ForwardRefExoticComponent<Omit<React
|
|
|
570
1286
|
isActive?: boolean;
|
|
571
1287
|
}, "ref"> & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
572
1288
|
|
|
573
|
-
|
|
1289
|
+
/**
|
|
1290
|
+
* Skeleton — loading placeholder block.
|
|
1291
|
+
*
|
|
1292
|
+
* Renders a directional warm shimmer (sand-800 → sand-700 sweep) driven by
|
|
1293
|
+
* `--c-skeleton-*` component tokens defined in tokens.css. Animates via
|
|
1294
|
+
* `@keyframes skeleton-shimmer`; automatically static under
|
|
1295
|
+
* `prefers-reduced-motion: reduce` (WCAG 2.3.3).
|
|
1296
|
+
*
|
|
1297
|
+
* Radius defaults to `--c-skeleton-radius-sm` (4px). Override via `style`:
|
|
1298
|
+
* borderRadius: "var(--c-skeleton-radius-lg)" — hero / media blocks
|
|
1299
|
+
* borderRadius: "var(--c-skeleton-radius-circle)" — circular avatars
|
|
1300
|
+
* borderRadius: "var(--p-radius-pill)" — pill / badge shapes
|
|
1301
|
+
*/
|
|
1302
|
+
declare function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
574
1303
|
|
|
575
|
-
|
|
1304
|
+
/**
|
|
1305
|
+
* Slider — DFL Design System v0
|
|
1306
|
+
*
|
|
1307
|
+
* Tokens consumed (Layer 3 — see tokens.css → --c-slider-*):
|
|
1308
|
+
* --c-slider-track-h track height 4px
|
|
1309
|
+
* --c-slider-track-bg empty track fill → --s-border-subtle
|
|
1310
|
+
* --c-slider-range-bg filled range fill → --s-brand-solid
|
|
1311
|
+
* --c-slider-thumb-size thumb diameter 20px
|
|
1312
|
+
* --c-slider-thumb-bg thumb fill → --s-surface-page
|
|
1313
|
+
* --c-slider-thumb-border thumb border color → --s-brand-solid
|
|
1314
|
+
* --c-slider-thumb-shadow base drop shadow
|
|
1315
|
+
* --c-slider-thumb-hover-shadow hover halo (7px amber rgba)
|
|
1316
|
+
* --c-slider-thumb-focus-shadow DS uniform ring (0 0 0 2px bg + 0 0 0 3px amber)
|
|
1317
|
+
*
|
|
1318
|
+
* States:
|
|
1319
|
+
* hover → amber-400 border + soft 7px rgba halo via --c-slider-thumb-hover-shadow
|
|
1320
|
+
* focus → DS uniform box-shadow ring, transition:none (instant per DS spec)
|
|
1321
|
+
* disabled → opacity-50, pointer-events-none, not-allowed cursor
|
|
1322
|
+
*
|
|
1323
|
+
* @param showTicks Render tick marks below the track at each step boundary.
|
|
1324
|
+
* Ticks before the current value are amber-tinted.
|
|
1325
|
+
*/
|
|
1326
|
+
declare function Slider({ className, defaultValue, value, min, max, step, showTicks, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root> & {
|
|
1327
|
+
showTicks?: boolean;
|
|
1328
|
+
}): React$1.JSX.Element;
|
|
576
1329
|
|
|
577
|
-
declare const SonnerToaster: ({ ...props }: ToasterProps) =>
|
|
1330
|
+
declare const SonnerToaster: ({ ...props }: ToasterProps) => React$1.JSX.Element;
|
|
578
1331
|
|
|
1332
|
+
/**
|
|
1333
|
+
* Switch — Radix UI primitive wired to DS v0 component tokens.
|
|
1334
|
+
*
|
|
1335
|
+
* Fixes vs original shadcn output:
|
|
1336
|
+
* 1. Thumb was `bg-background` → `--s-surface-page` (#0a0908, near-black) — invisible
|
|
1337
|
+
* on the dark unchecked track. Now uses `--c-switch-thumb-bg` (#f6f1e7, warm off-white).
|
|
1338
|
+
* 2. Focus ring was shadcn `ring-2 ring-ring ring-offset-2` (CSS outline approach).
|
|
1339
|
+
* Now uses the uniform DS box-shadow ring via `--c-switch-focus-ring`
|
|
1340
|
+
* (0 0 0 2px page-bg gap + 0 0 0 3px amber — box-shadow only, no outline property).
|
|
1341
|
+
* 3. Component token layer added: all values flow through `--c-switch-*` knobs
|
|
1342
|
+
* (appended to tokens.css Layer 3), making the component theme-overridable
|
|
1343
|
+
* at the per-component level without touching global alias chains.
|
|
1344
|
+
*/
|
|
579
1345
|
declare const Switch: React$1.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
580
1346
|
|
|
1347
|
+
/**
|
|
1348
|
+
* Table — DFL Design System v0 (token-native refactor)
|
|
1349
|
+
*
|
|
1350
|
+
* Tokens consumed (Layer 3 → Layer 2):
|
|
1351
|
+
* --c-table-header-fg → --s-ink-muted header cell text
|
|
1352
|
+
* --c-table-header-bg → transparent header cell bg
|
|
1353
|
+
* --c-table-divider → --s-border-subtle row separator lines
|
|
1354
|
+
* --c-table-row-hover-bg → --s-surface-raised tbody row hover bg
|
|
1355
|
+
* --c-table-row-selected-bg → --s-brand-subtle selected row amber wash
|
|
1356
|
+
* --c-table-row-selected-border → --s-brand-border selected row 2px left signal
|
|
1357
|
+
* --c-table-caption-fg → --s-ink-muted caption / empty-state text
|
|
1358
|
+
*
|
|
1359
|
+
* Body cell default ink: --s-ink-secondary (#c9c0b4)
|
|
1360
|
+
*
|
|
1361
|
+
* Numeric / ID cell conventions (applied by consumer via className):
|
|
1362
|
+
* font-mono text-[var(--s-ink-primary)] — ID cells (JetBrains Mono)
|
|
1363
|
+
* font-mono text-[var(--s-ink-primary)] text-right — amount cells (JetBrains Mono)
|
|
1364
|
+
*
|
|
1365
|
+
* Focus ring for interactive table elements (sort buttons, row-action icons):
|
|
1366
|
+
* Use <Button variant="ghost"> or <IconButton variant="ghost"> — both carry
|
|
1367
|
+
* the uniform DS amber double-shadow ring on :focus-visible automatically.
|
|
1368
|
+
*/
|
|
581
1369
|
declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & React$1.RefAttributes<HTMLTableElement>>;
|
|
582
1370
|
declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
|
|
583
1371
|
declare const TableBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
|
|
@@ -587,6 +1375,24 @@ declare const TableHead: React$1.ForwardRefExoticComponent<React$1.ThHTMLAttribu
|
|
|
587
1375
|
declare const TableCell: React$1.ForwardRefExoticComponent<React$1.TdHTMLAttributes<HTMLTableCellElement> & React$1.RefAttributes<HTMLTableCellElement>>;
|
|
588
1376
|
declare const TableCaption: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableCaptionElement> & React$1.RefAttributes<HTMLTableCaptionElement>>;
|
|
589
1377
|
|
|
1378
|
+
/**
|
|
1379
|
+
* Tabs — DFL Design System v0
|
|
1380
|
+
*
|
|
1381
|
+
* Tokens consumed (underline-indicator pattern):
|
|
1382
|
+
* --c-tabs-fg inactive trigger text → --s-ink-muted
|
|
1383
|
+
* --c-tabs-fg-active active trigger text → --s-ink-primary
|
|
1384
|
+
* --c-tabs-indicator active 2 px bottom border → --s-brand-solid (#E07A4A)
|
|
1385
|
+
* --c-tabs-divider list 1 px bottom border → --s-border-subtle
|
|
1386
|
+
*
|
|
1387
|
+
* Layout:
|
|
1388
|
+
* - TabsList: transparent container, 1 px --c-tabs-divider bottom border.
|
|
1389
|
+
* No pill bg, no card-bg affordance, no border-radius container.
|
|
1390
|
+
* - TabsTrigger: 2 px transparent bottom border that becomes --c-tabs-indicator
|
|
1391
|
+
* when active. Overlaps list divider by 1 px so indicator sits on the line.
|
|
1392
|
+
* - Hover: secondary ink + faint rgba wash (rgba 255 255 255 / 0.035).
|
|
1393
|
+
* - Focus: uniform DFL ring via `.ds-focus-ring` (1 px amber, 3 px offset).
|
|
1394
|
+
* - Disabled: ink-disabled, pointer-events-none, opacity-50.
|
|
1395
|
+
*/
|
|
590
1396
|
declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
591
1397
|
declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
592
1398
|
declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
@@ -597,14 +1403,36 @@ interface TextareaProps extends React$1.TextareaHTMLAttributes<HTMLTextAreaEleme
|
|
|
597
1403
|
/**
|
|
598
1404
|
* Textarea — DFL Design System v0
|
|
599
1405
|
*
|
|
600
|
-
* Shares Input tokens (--c-input-*). Multi-line, 80px min height.
|
|
1406
|
+
* Shares Input tokens (--c-input-*). Multi-line, 80px min height. Resizable.
|
|
1407
|
+
*
|
|
1408
|
+
* Focus ring (DS v0 ch.5.2 uniform spec):
|
|
1409
|
+
* --c-textarea-ring-focus = 0 0 0 2px page-bg, 0 0 0 3px amber
|
|
1410
|
+
* --c-textarea-ring-focus-error = 0 0 0 2px page-bg, 0 0 0 3px danger-red
|
|
601
1411
|
*/
|
|
602
1412
|
declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
|
|
603
1413
|
|
|
1414
|
+
/**
|
|
1415
|
+
* Toast — DFL Design System v0
|
|
1416
|
+
*
|
|
1417
|
+
* Tokens consumed (Layer 3 → Layer 2 → Layer 1):
|
|
1418
|
+
* --c-toast-{bg,border,fg,fg-desc,radius,shadow,close-fg,close-fg-hover,accent-w,action-border}
|
|
1419
|
+
* --c-toast-{success,warning,danger,info}-{bg,border}
|
|
1420
|
+
* backed by --s-{success,warning,danger,info}-{subtle,border,fg,solid}
|
|
1421
|
+
*
|
|
1422
|
+
* Variants: default | success | warning | danger | info
|
|
1423
|
+
* `destructive` is kept as a backward-compat alias of `danger`.
|
|
1424
|
+
*
|
|
1425
|
+
* A11y fixes vs vanilla shadcn:
|
|
1426
|
+
* - ToastClose always visible at opacity-60 (was opacity-0 until group-hover)
|
|
1427
|
+
* - Focus ring uses the uniform DFL box-shadow ring instead of raw ring-2/ring-offset
|
|
1428
|
+
* - Semantic close-fg / title accent inherit per-variant colour via group selectors
|
|
1429
|
+
*
|
|
1430
|
+
* Left accent stripe rendered as ::before pseudo-element, coloured per variant.
|
|
1431
|
+
*/
|
|
604
1432
|
declare const ToastProvider: React$1.FC<ToastPrimitives.ToastProviderProps>;
|
|
605
1433
|
declare const ToastViewport: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastViewportProps & React$1.RefAttributes<HTMLOListElement>, "ref"> & React$1.RefAttributes<HTMLOListElement>>;
|
|
606
1434
|
declare const Toast: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastProps & React$1.RefAttributes<HTMLLIElement>, "ref"> & VariantProps<(props?: ({
|
|
607
|
-
variant?: "default" | "destructive" | null | undefined;
|
|
1435
|
+
variant?: "default" | "info" | "success" | "warning" | "danger" | "destructive" | null | undefined;
|
|
608
1436
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLLIElement>>;
|
|
609
1437
|
declare const ToastAction: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
610
1438
|
declare const ToastClose: React$1.ForwardRefExoticComponent<Omit<ToastPrimitives.ToastCloseProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
@@ -613,16 +1441,57 @@ declare const ToastDescription: React$1.ForwardRefExoticComponent<Omit<ToastPrim
|
|
|
613
1441
|
type ToastComponentProps = React$1.ComponentPropsWithoutRef<typeof Toast>;
|
|
614
1442
|
type ToastActionElement = React$1.ReactElement<typeof ToastAction>;
|
|
615
1443
|
|
|
616
|
-
declare function Toaster():
|
|
1444
|
+
declare function Toaster(): React$1.JSX.Element;
|
|
617
1445
|
|
|
1446
|
+
/**
|
|
1447
|
+
* toggleVariants — DFL DS v0
|
|
1448
|
+
*
|
|
1449
|
+
* Token hierarchy consumed:
|
|
1450
|
+
* --c-toggle-{bg,bg-hover,bg-active,bg-active-hover}
|
|
1451
|
+
* --c-toggle-{fg,fg-hover,fg-active}
|
|
1452
|
+
* --c-toggle-border
|
|
1453
|
+
* --c-toggle-focus-ring (uniform 2px-gap + 1px-amber spec, ch.5.2)
|
|
1454
|
+
*
|
|
1455
|
+
* Active state: amber wash (--s-brand-subtle) + amber-300 fg (--s-brand-fg),
|
|
1456
|
+
* NOT the generic --accent alias. Hover on active: slightly stronger amber wash.
|
|
1457
|
+
*
|
|
1458
|
+
* Focus ring: box-shadow 0 0 0 2px page-bg + 0 0 0 3px #E07A4A, z-index:10
|
|
1459
|
+
* so the ring is NOT clipped by siblings in a group.
|
|
1460
|
+
*
|
|
1461
|
+
* Disabled: 40% opacity + pointer-events:none (active state still visible at
|
|
1462
|
+
* reduced opacity to preserve context).
|
|
1463
|
+
*/
|
|
618
1464
|
declare const toggleVariants: (props?: ({
|
|
619
1465
|
variant?: "default" | "outline" | null | undefined;
|
|
620
1466
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
621
1467
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
622
|
-
declare function Toggle({ className, variant, size, ...props }: React$1.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>):
|
|
1468
|
+
declare function Toggle({ className, variant, size, ...props }: React$1.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): React$1.JSX.Element;
|
|
623
1469
|
|
|
624
|
-
|
|
625
|
-
|
|
1470
|
+
/**
|
|
1471
|
+
* ToggleGroup — DFL DS v0
|
|
1472
|
+
*
|
|
1473
|
+
* Tokens consumed (via toggleVariants in toggle.tsx):
|
|
1474
|
+
* --c-toggle-{bg,bg-hover,bg-active,bg-active-hover,fg,fg-hover,fg-active}
|
|
1475
|
+
* --c-toggle-{border,focus-ring,outline-active-shadow}
|
|
1476
|
+
* --c-toggle-group-radius
|
|
1477
|
+
*
|
|
1478
|
+
* Variant "outline":
|
|
1479
|
+
* • Group container gets --p-shadow-sm depth shadow
|
|
1480
|
+
* • Each item's border is `border-[var(--c-toggle-border)]` (--s-border-subtle)
|
|
1481
|
+
* • Non-first items have `border-l-0` (left removed) so only item-1's right
|
|
1482
|
+
* border acts as the internal divider — no double lines
|
|
1483
|
+
* • Active item gets an inset top-highlight shadow (--c-toggle-outline-active-shadow)
|
|
1484
|
+
*
|
|
1485
|
+
* Focus ring: see toggle.tsx — z-10 ensures ring renders above siblings.
|
|
1486
|
+
*/
|
|
1487
|
+
declare function ToggleGroup({ className, variant, size, children, ...props }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>): React$1.JSX.Element;
|
|
1488
|
+
declare function ToggleGroupItem({ className, children, variant, size, ...props }: React$1.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): React$1.JSX.Element;
|
|
1489
|
+
|
|
1490
|
+
/**
|
|
1491
|
+
* ProtectedRoute — auth guard component.
|
|
1492
|
+
* Renders children only when authenticated; calls onUnauthenticated otherwise.
|
|
1493
|
+
* Identical pattern across all 4 audited apps (~25-40 lines each).
|
|
1494
|
+
*/
|
|
626
1495
|
|
|
627
1496
|
interface ProtectedRouteProps {
|
|
628
1497
|
children: ReactNode;
|
|
@@ -631,7 +1500,7 @@ interface ProtectedRouteProps {
|
|
|
631
1500
|
/** Rendered while auth state is loading. Defaults to null. */
|
|
632
1501
|
loadingFallback?: ReactNode;
|
|
633
1502
|
}
|
|
634
|
-
declare const ProtectedRoute: ({ children, onUnauthenticated, loadingFallback, }: ProtectedRouteProps) =>
|
|
1503
|
+
declare const ProtectedRoute: ({ children, onUnauthenticated, loadingFallback, }: ProtectedRouteProps) => React__default.JSX.Element;
|
|
635
1504
|
|
|
636
1505
|
interface DflRemoteProps {
|
|
637
1506
|
src: string;
|
|
@@ -650,13 +1519,13 @@ interface DflRemoteProps {
|
|
|
650
1519
|
style?: React.CSSProperties;
|
|
651
1520
|
allow?: string;
|
|
652
1521
|
}
|
|
653
|
-
declare function DflRemote({ src, title, authToken, supabaseSession, onNavigate, onReady, fallback, className, style, allow, }: DflRemoteProps):
|
|
1522
|
+
declare function DflRemote({ src, title, authToken, supabaseSession, onNavigate, onReady, fallback, className, style, allow, }: DflRemoteProps): React$1.JSX.Element;
|
|
654
1523
|
|
|
655
1524
|
interface IframeAwareProps {
|
|
656
1525
|
children: React.ReactNode;
|
|
657
1526
|
allowedOrigins?: RegExp[];
|
|
658
1527
|
}
|
|
659
|
-
declare function IframeAware({ children, allowedOrigins }: IframeAwareProps):
|
|
1528
|
+
declare function IframeAware({ children, allowedOrigins }: IframeAwareProps): React$1.JSX.Element;
|
|
660
1529
|
|
|
661
1530
|
interface IframeContextValue {
|
|
662
1531
|
token: string | null;
|
|
@@ -686,6 +1555,60 @@ interface DflResizeMessage {
|
|
|
686
1555
|
type DflIframeMessage = DflSetTokenMessage | DflNavigateMessage | DflReadyMessage | DflResizeMessage;
|
|
687
1556
|
declare function isAllowedOrigin(origin: string): boolean;
|
|
688
1557
|
|
|
1558
|
+
/**
|
|
1559
|
+
* PasswordInput — DFL Design System v0 (Molecule)
|
|
1560
|
+
*
|
|
1561
|
+
* Opinionated password field: Input atom + reveal toggle (Eye/EyeOff).
|
|
1562
|
+
* Accepts optional label, help text, and error message.
|
|
1563
|
+
*
|
|
1564
|
+
* Tokens consumed (Layer 3 component tokens):
|
|
1565
|
+
* --c-input-{bg,fg,placeholder,border,border-hover,border-focus,ring-focus,border-error,radius}
|
|
1566
|
+
* --c-passwordinput-toggle-fg — toggle idle color (--s-ink-muted)
|
|
1567
|
+
* --c-passwordinput-toggle-fg-hover — toggle hover color (--s-ink-primary)
|
|
1568
|
+
*
|
|
1569
|
+
* WCAG 2.1 SC 2.1.1: toggle button is keyboard-reachable (tabIndex=0, default
|
|
1570
|
+
* for <button>). The DS uniform focus ring (2px bg gap + 1px amber) is applied
|
|
1571
|
+
* via focus-visible ring utilities.
|
|
1572
|
+
*
|
|
1573
|
+
* Error border: delegated to the Input atom's aria-invalid styles which resolve
|
|
1574
|
+
* to --c-input-border-error (= --s-danger-solid, #e07a7a). No raw hex fallbacks.
|
|
1575
|
+
*
|
|
1576
|
+
* ATOMIC TIER: Molecule (Input atom + Eye/EyeOff icons + optional label/help/error)
|
|
1577
|
+
* Moved from organisms/ to molecules/ to match the atomic-tier map.
|
|
1578
|
+
*/
|
|
1579
|
+
|
|
1580
|
+
interface PasswordInputProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Input>, "type"> {
|
|
1581
|
+
/** Optional field label rendered above the input. */
|
|
1582
|
+
label?: React$1.ReactNode;
|
|
1583
|
+
/** Error text — also flips the border to danger via aria-invalid. */
|
|
1584
|
+
error?: string;
|
|
1585
|
+
/** Helper text shown when there is no error. */
|
|
1586
|
+
helpText?: string;
|
|
1587
|
+
/** Convenience callback receiving the raw string value. */
|
|
1588
|
+
onValueChange?: (value: string) => void;
|
|
1589
|
+
}
|
|
1590
|
+
declare const PasswordInput: React$1.ForwardRefExoticComponent<PasswordInputProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
1591
|
+
|
|
1592
|
+
/**
|
|
1593
|
+
* LoginPage organism
|
|
1594
|
+
* Ported from dfl-learn's Login + AuthForm components.
|
|
1595
|
+
* Self-contained: uses @dfl/components primitives + useAuth hook.
|
|
1596
|
+
* No framer-motion dependency — plain CSS transitions.
|
|
1597
|
+
*
|
|
1598
|
+
* v1.1 — DS token hygiene pass:
|
|
1599
|
+
* - Removed raw hex overrides (#E07A4A); CTA consumes --c-button-primary-bg
|
|
1600
|
+
* via the Button primary variant. Mode-switch <button> and terms <a> use
|
|
1601
|
+
* --s-brand-solid via CSS var class.
|
|
1602
|
+
* - Uniform DS focus ring (box-shadow: 0 0 0 2px --s-surface-page, 0 0 0 3px
|
|
1603
|
+
* --s-border-focus) on mode-switch button and terms link via
|
|
1604
|
+
* --c-loginpage-focus-ring; Input + Button components carry their own rings.
|
|
1605
|
+
* - Inputs consume --c-input-* tokens natively (bg-secondary/border-secondary
|
|
1606
|
+
* compatibility aliases removed); aria-invalid drives error-border + bg.
|
|
1607
|
+
* - Error state: error banner (--c-loginpage-error-*), inputs get aria-invalid.
|
|
1608
|
+
* - Disabled CTA (signup + no terms) shows --s-surface-elevated bg +
|
|
1609
|
+
* --s-ink-disabled fg via inline style override.
|
|
1610
|
+
*/
|
|
1611
|
+
|
|
689
1612
|
interface LoginPageProps {
|
|
690
1613
|
/** Logo element or image src string. Defaults to DFL logo. */
|
|
691
1614
|
logo?: ReactNode | string;
|
|
@@ -703,8 +1626,42 @@ interface LoginPageProps {
|
|
|
703
1626
|
termsUrl?: string;
|
|
704
1627
|
/** Custom CSS class for the outer wrapper. */
|
|
705
1628
|
className?: string;
|
|
1629
|
+
/**
|
|
1630
|
+
* Pre-seed an error message for Storybook / SSR error hand-off.
|
|
1631
|
+
* Renders the component in the post-submit error state (banner + input borders).
|
|
1632
|
+
*/
|
|
1633
|
+
initialErrorMessage?: string;
|
|
1634
|
+
/** Pre-seed the submitting/loading state (Storybook). */
|
|
1635
|
+
initialIsSubmitting?: boolean;
|
|
1636
|
+
/** Pre-seed accepted-terms for signup stories (Storybook). */
|
|
1637
|
+
initialAcceptedTerms?: boolean;
|
|
1638
|
+
/**
|
|
1639
|
+
* Auto-focus a specific field on mount.
|
|
1640
|
+
* Used by the LoginInputFocused story to demonstrate the DS focus ring.
|
|
1641
|
+
*/
|
|
1642
|
+
focusField?: "email" | "password";
|
|
706
1643
|
}
|
|
707
|
-
declare function LoginPage({ logo, title, redirectUrl, onSuccess, onError, defaultMode, termsUrl, className, }: LoginPageProps):
|
|
1644
|
+
declare function LoginPage({ logo, title, redirectUrl, onSuccess, onError, defaultMode, termsUrl, className, initialErrorMessage, initialIsSubmitting, initialAcceptedTerms, focusField, }: LoginPageProps): React__default.JSX.Element;
|
|
1645
|
+
|
|
1646
|
+
/**
|
|
1647
|
+
* LoginScreen organism
|
|
1648
|
+
* Shared, behavior-agnostic auth UI. Renders branding + email/password fields
|
|
1649
|
+
* (the password field is the canonical PasswordInput with a reveal toggle) and
|
|
1650
|
+
* calls `onSubmit(email, password)`. NO supabase/auth logic lives here — the
|
|
1651
|
+
* consuming app wires its existing handler to `onSubmit` and drives `error` /
|
|
1652
|
+
* `loading` from its own state.
|
|
1653
|
+
*
|
|
1654
|
+
* NOTE: this is the prop-driven login. The legacy `LoginPage` (which embeds the
|
|
1655
|
+
* `useAuth` hook) is kept for existing consumers; new apps should adopt
|
|
1656
|
+
* `LoginScreen`.
|
|
1657
|
+
*
|
|
1658
|
+
* DS token fixes applied (v1.5.x):
|
|
1659
|
+
* • Title: Barlow Condensed 700 via --c-loginscreen-title-font (--s-font-display)
|
|
1660
|
+
* • Outer wrapper: explicit background: var(--c-loginscreen-bg) (--s-surface-page)
|
|
1661
|
+
* • Card: border-radius via --c-card-radius (10px), not rounded-xl (12px)
|
|
1662
|
+
* • Error: color via --c-loginscreen-error-fg (--s-danger-fg), no raw hex fallback
|
|
1663
|
+
* • Focus ring: DS uniform 2px gap + 1px amber ring on all focusable elements
|
|
1664
|
+
*/
|
|
708
1665
|
|
|
709
1666
|
interface LoginScreenProps {
|
|
710
1667
|
/** Logo element or image src. Defaults to the DFL logomark. */
|
|
@@ -730,37 +1687,7 @@ interface LoginScreenProps {
|
|
|
730
1687
|
/** Outer wrapper class. */
|
|
731
1688
|
className?: string;
|
|
732
1689
|
}
|
|
733
|
-
declare function LoginScreen({ logo, title, subtitle, emailLabel, passwordLabel, submitLabel, onSubmit, error, loading, footer, className, }: LoginScreenProps):
|
|
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
|
-
*/
|
|
1690
|
+
declare function LoginScreen({ logo, title, subtitle, emailLabel, passwordLabel, submitLabel, onSubmit, error, loading, footer, className, }: LoginScreenProps): React$1.JSX.Element;
|
|
764
1691
|
|
|
765
1692
|
/** Number of member hues defined as `--member-1..N` in tokens.css. */
|
|
766
1693
|
declare const MEMBER_PALETTE_SIZE = 10;
|
|
@@ -773,22 +1700,63 @@ declare function getInitials(name: string): string;
|
|
|
773
1700
|
declare function memberHueIndex(seed: string, paletteSize?: number): number;
|
|
774
1701
|
/** The CSS var() expression for a seed's member hue (e.g. `var(--member-3)`). */
|
|
775
1702
|
declare function memberHueVar(seed: string): string;
|
|
776
|
-
|
|
1703
|
+
/** CVA for the avatar root (width/height). */
|
|
1704
|
+
declare const avatarSizeVariants: (props?: ({
|
|
1705
|
+
size?: "sm" | "lg" | "md" | "xl" | "xs" | null | undefined;
|
|
1706
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1707
|
+
interface UserAvatarProps extends Omit<React$1.ComponentPropsWithoutRef<typeof Avatar>, "size">, VariantProps<typeof avatarSizeVariants> {
|
|
777
1708
|
/** Display name — drives the initials and (by default) the hue. */
|
|
778
1709
|
name: string;
|
|
779
|
-
/** Avatar image URL. Falls back to
|
|
1710
|
+
/** Avatar image URL. Falls back to coloured initials if absent/broken. */
|
|
780
1711
|
src?: string | null;
|
|
781
1712
|
/**
|
|
782
1713
|
* Stable identity used to pick the hue (e.g. user id). Defaults to `name`.
|
|
783
1714
|
* Pass a sticky id so the colour survives display-name changes.
|
|
784
1715
|
*/
|
|
785
1716
|
colorSeed?: string;
|
|
1717
|
+
/**
|
|
1718
|
+
* Size variant (xs=24 / sm=32 / md=40 / lg=56 / xl=72 px).
|
|
1719
|
+
* Defaults to `md`. Replaces the previous workaround of passing raw className.
|
|
1720
|
+
*/
|
|
1721
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
786
1722
|
}
|
|
787
1723
|
/**
|
|
788
|
-
* <UserAvatar name="Ada Lovelace" src={url} colorSeed={userId} />
|
|
1724
|
+
* <UserAvatar name="Ada Lovelace" src={url} colorSeed={userId} size="md" />
|
|
1725
|
+
*
|
|
1726
|
+
* Interactive usage — wrap in a button/link for clickable profile targets:
|
|
1727
|
+
* <button
|
|
1728
|
+
* className="rounded-full outline-none
|
|
1729
|
+
* focus-visible:shadow-[0_0_0_2px_var(--background),0_0_0_3px_#E07A4A]"
|
|
1730
|
+
* >
|
|
1731
|
+
* <UserAvatar name="Ada Lovelace" />
|
|
1732
|
+
* </button>
|
|
1733
|
+
*
|
|
1734
|
+
* The focus ring MUST live on the outer wrapper, NOT on UserAvatar itself,
|
|
1735
|
+
* because overflow:hidden on the circle clips any box-shadow.
|
|
789
1736
|
*/
|
|
790
1737
|
declare const UserAvatar: React$1.ForwardRefExoticComponent<UserAvatarProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
791
1738
|
|
|
1739
|
+
/**
|
|
1740
|
+
* UserMenu organism
|
|
1741
|
+
* UserAvatar trigger + dropdown menu. Fully prop-driven and
|
|
1742
|
+
* behavior-agnostic — the consuming app passes its own handlers/items;
|
|
1743
|
+
* no routing or auth logic lives here.
|
|
1744
|
+
*
|
|
1745
|
+
* Tokens consumed (Layer 3 — --c-usermenu-*):
|
|
1746
|
+
* --c-usermenu-panel-bg dropdown panel background
|
|
1747
|
+
* --c-usermenu-panel-width panel fixed width (replaces hardcoded w-52)
|
|
1748
|
+
* --c-usermenu-item-hover-bg item hover/highlighted surface (#2a2622)
|
|
1749
|
+
* --c-usermenu-danger-fg destructive item fg (--s-danger-fg, no inline fallback)
|
|
1750
|
+
* --c-usermenu-danger-hover-bg destructive item hover bg (--s-danger-subtle)
|
|
1751
|
+
* --c-usermenu-item-focus-ring DS uniform focus ring for regular items
|
|
1752
|
+
* --c-usermenu-item-danger-focus-ring danger-fg ring for destructive items
|
|
1753
|
+
*
|
|
1754
|
+
* Trigger focus ring: inherited from Button variant="ghost" via
|
|
1755
|
+
* --c-button-focus-gap + --c-button-focus-brand (atoms-button refactor, 2026-07-02).
|
|
1756
|
+
* box-shadow: 0 0 0 2px var(--c-button-focus-gap), 0 0 0 3px var(--c-button-focus-brand).
|
|
1757
|
+
* No additional trigger-level override required in UserMenu.
|
|
1758
|
+
*/
|
|
1759
|
+
|
|
792
1760
|
interface UserMenuItem {
|
|
793
1761
|
/** Visible label. */
|
|
794
1762
|
label: string;
|
|
@@ -825,9 +1793,23 @@ interface UserMenuProps {
|
|
|
825
1793
|
onSignOut?: () => void;
|
|
826
1794
|
/** Dropdown alignment. Defaults to "end". */
|
|
827
1795
|
align?: "start" | "center" | "end";
|
|
1796
|
+
/**
|
|
1797
|
+
* Open the dropdown on mount (uncontrolled). Useful for stories / tests
|
|
1798
|
+
* that need to show the open panel without user interaction.
|
|
1799
|
+
*/
|
|
1800
|
+
defaultOpen?: boolean;
|
|
828
1801
|
className?: string;
|
|
829
1802
|
}
|
|
830
|
-
declare function UserMenu({ name, email, avatarUrl, colorSeed, showName, items, onProfile, onSettings, onSignOut, align, className, }: UserMenuProps):
|
|
1803
|
+
declare function UserMenu({ name, email, avatarUrl, colorSeed, showName, items, onProfile, onSettings, onSignOut, align, defaultOpen, className, }: UserMenuProps): React$1.JSX.Element;
|
|
1804
|
+
|
|
1805
|
+
/**
|
|
1806
|
+
* ConfirmDialog organism
|
|
1807
|
+
* Generic confirm/delete dialog built on the AlertDialog primitive.
|
|
1808
|
+
* Replaces the per-app Confirm/Delete re-wraps — pass title/body/labels
|
|
1809
|
+
* and an onConfirm handler. Behavior-agnostic: the consumer owns the action.
|
|
1810
|
+
*
|
|
1811
|
+
* Controlled (`open` + `onOpenChange`) or trigger-driven (`trigger`).
|
|
1812
|
+
*/
|
|
831
1813
|
|
|
832
1814
|
interface ConfirmDialogProps {
|
|
833
1815
|
/** Dialog heading. */
|
|
@@ -856,7 +1838,14 @@ interface ConfirmDialogProps {
|
|
|
856
1838
|
/** Disable the confirm button (e.g. while a parent validates). */
|
|
857
1839
|
confirmDisabled?: boolean;
|
|
858
1840
|
}
|
|
859
|
-
declare function ConfirmDialog({ title, body, confirmLabel, cancelLabel, variant, onConfirm, onCancel, open, onOpenChange, trigger, confirmDisabled, }: ConfirmDialogProps):
|
|
1841
|
+
declare function ConfirmDialog({ title, body, confirmLabel, cancelLabel, variant, onConfirm, onCancel, open, onOpenChange, trigger, confirmDisabled, }: ConfirmDialogProps): React$1.JSX.Element;
|
|
1842
|
+
|
|
1843
|
+
/**
|
|
1844
|
+
* AppSidebar organism
|
|
1845
|
+
* Generic collapsible sidebar for DFL apps.
|
|
1846
|
+
* Based on João's AppSidebar (dfl-notifications) + DFL design tokens.
|
|
1847
|
+
* Uses the Sidebar primitive from @dfl/components.
|
|
1848
|
+
*/
|
|
860
1849
|
|
|
861
1850
|
interface NavItem {
|
|
862
1851
|
title: string;
|
|
@@ -899,10 +1888,44 @@ interface AppSidebarProps {
|
|
|
899
1888
|
}
|
|
900
1889
|
/**
|
|
901
1890
|
* AppSidebar wraps the Sidebar primitive with SidebarProvider.
|
|
902
|
-
* Renders an optional trigger button + the sidebar itself.
|
|
903
1891
|
* Pass `children` to render the main content area next to the sidebar.
|
|
1892
|
+
*
|
|
1893
|
+
* The SidebarTrigger (collapse toggle) MUST live inside an AppNavbar `leftSlot`
|
|
1894
|
+
* that is passed as part of `children` — this keeps the unified 56px topbar as
|
|
1895
|
+
* the only top chrome (no separate 48px trigger strip stacking above it).
|
|
1896
|
+
*
|
|
1897
|
+
* Example:
|
|
1898
|
+
* <AppSidebar navGroups={...}>
|
|
1899
|
+
* <AppNavbar leftSlot={<SidebarTrigger />} ... />
|
|
1900
|
+
* <main>...</main>
|
|
1901
|
+
* </AppSidebar>
|
|
1902
|
+
*/
|
|
1903
|
+
declare function AppSidebar({ defaultOpen, children, ...props }: AppSidebarProps): React__default.JSX.Element;
|
|
1904
|
+
|
|
1905
|
+
/**
|
|
1906
|
+
* AppNavbar organism
|
|
1907
|
+
* Top navigation bar with optional left slot (e.g. SidebarTrigger), breadcrumb,
|
|
1908
|
+
* user menu, and theme toggle. Works standalone — no router dependency.
|
|
1909
|
+
*
|
|
1910
|
+
* DS v0 tokens consumed (Layer 3 → Layer 2):
|
|
1911
|
+
* --c-navbar-bg → --s-surface-panel (#141210 — elevated panel, NOT page flush)
|
|
1912
|
+
* --c-navbar-border → --s-border-subtle
|
|
1913
|
+
* --c-navbar-h → 56px (same as --c-header-h)
|
|
1914
|
+
* --c-navbar-px → --p-space-4
|
|
1915
|
+
* --c-navbar-breadcrumb-fg → --s-ink-muted
|
|
1916
|
+
* --c-navbar-breadcrumb-fg-current → --s-ink-primary
|
|
1917
|
+
*
|
|
1918
|
+
* leftSlot: embed a SidebarTrigger here so the sidebar toggle lives in the unified
|
|
1919
|
+
* 56px topbar rather than in a separate 48px strip (which would create 104px of dead
|
|
1920
|
+
* chrome). Pass <SidebarTrigger /> as leftSlot in the AppShell template.
|
|
1921
|
+
*
|
|
1922
|
+
* Focus ring: all interactive elements carry `.ds-focus-ring` (outline form, from
|
|
1923
|
+
* tokens.css) or `.c-appshell-focus` (box-shadow form, preferred in AppShell context).
|
|
1924
|
+
* The button's built-in `focus-visible:ring-*` is zeroed so only the DS ring shows.
|
|
1925
|
+
*
|
|
1926
|
+
* Sign-out item: uses --s-danger-fg / --s-danger-subtle directly — never
|
|
1927
|
+
* the raw `text-destructive` shadcn alias which breaks if compat mapping drifts.
|
|
904
1928
|
*/
|
|
905
|
-
declare function AppSidebar({ defaultOpen, children, ...props }: AppSidebarProps): react_jsx_runtime.JSX.Element;
|
|
906
1929
|
|
|
907
1930
|
interface BreadcrumbEntry {
|
|
908
1931
|
label: string;
|
|
@@ -919,7 +1942,12 @@ interface AppNavbarProps {
|
|
|
919
1942
|
breadcrumbs?: BreadcrumbEntry[];
|
|
920
1943
|
/** User info for the avatar menu. */
|
|
921
1944
|
userInfo?: NavbarUserInfo;
|
|
922
|
-
/**
|
|
1945
|
+
/**
|
|
1946
|
+
* Current theme — controls the toggle icon only (Moon ↔ Sun).
|
|
1947
|
+
* The navbar surface is ALWAYS --c-navbar-bg (--s-surface-page, #0a0908),
|
|
1948
|
+
* dark-first regardless of this prop. "light" mode is editorial-only in DFL DS v0.
|
|
1949
|
+
* Default is "dark" (dark-first per DFL DS v0).
|
|
1950
|
+
*/
|
|
923
1951
|
theme?: "light" | "dark";
|
|
924
1952
|
/** Called when user clicks the theme toggle button. */
|
|
925
1953
|
onThemeToggle?: () => void;
|
|
@@ -929,12 +1957,39 @@ interface AppNavbarProps {
|
|
|
929
1957
|
onSettingsClick?: () => void;
|
|
930
1958
|
/** Called when user clicks Sign Out menu item. */
|
|
931
1959
|
onSignOut?: () => void;
|
|
932
|
-
/** Extra action
|
|
1960
|
+
/** Extra action elements rendered to the right of breadcrumbs (8px gap). */
|
|
933
1961
|
actions?: ReactNode;
|
|
1962
|
+
/**
|
|
1963
|
+
* Optional slot rendered to the LEFT of the breadcrumb row.
|
|
1964
|
+
* Embed a `<SidebarTrigger />` here so the sidebar toggle lives inside the
|
|
1965
|
+
* unified 56px topbar, replacing the redundant 48px trigger strip above it.
|
|
1966
|
+
*/
|
|
1967
|
+
leftSlot?: ReactNode;
|
|
934
1968
|
/** Custom CSS class for the navbar wrapper. */
|
|
935
1969
|
className?: string;
|
|
936
1970
|
}
|
|
937
|
-
declare function AppNavbar({ breadcrumbs, userInfo, theme, onThemeToggle, onProfileClick, onSettingsClick, onSignOut, actions, className, }: AppNavbarProps):
|
|
1971
|
+
declare function AppNavbar({ breadcrumbs, userInfo, theme, onThemeToggle, onProfileClick, onSettingsClick, onSignOut, actions, leftSlot, className, }: AppNavbarProps): React__default.JSX.Element;
|
|
1972
|
+
|
|
1973
|
+
/**
|
|
1974
|
+
* Gantt organism — a real roadmap Gantt (rows × week columns).
|
|
1975
|
+
*
|
|
1976
|
+
* Ported from João's cohort Gantt (joao.devfellowship.com home) to the DFL
|
|
1977
|
+
* design system: dark surfaces, amber single-accent, Barlow/Inter/JBMono,
|
|
1978
|
+
* 4px grid, rounded (radius-lg) cards. ~90% visual parity, on-brand.
|
|
1979
|
+
*
|
|
1980
|
+
* Anatomy (matches the reference):
|
|
1981
|
+
* ┌ STAGE / TASK ┬ W1 │ W2 │ W3 │ … │ Wn ┐ ← week axis header (mono-uppercase)
|
|
1982
|
+
* │ ▸ Stage 1 ● │ ▓▓▓▓▓▓░░░░░ 40% │ ← stage row: bar across its week-span,
|
|
1983
|
+
* │ milestone │ ▓▓▓ │ amber-filled to progress
|
|
1984
|
+
* │ milestone │ ░░░ │ ← milestone sub-bars positioned by week
|
|
1985
|
+
* │ ▸ Stage 2 ● │ ░░░░░ 0% │
|
|
1986
|
+
* └──────────────┴───────────────────────┘
|
|
1987
|
+
* Dependencies (predecessor → successor) render as connector links between
|
|
1988
|
+
* stage bars, NOT plain arrows between cards.
|
|
1989
|
+
*
|
|
1990
|
+
* Pure (no data fetching). Consumer maps its model into GanttStage[] and the
|
|
1991
|
+
* derived week axis. Self-contained: only depends on cn + DS tokens/utilities.
|
|
1992
|
+
*/
|
|
938
1993
|
|
|
939
1994
|
interface GanttMilestone {
|
|
940
1995
|
id: string;
|
|
@@ -999,6 +2054,14 @@ interface GanttProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
999
2054
|
nameColWidth?: number;
|
|
1000
2055
|
/** Min px width of a single week column. Defaults to 64. */
|
|
1001
2056
|
weekMinWidth?: number;
|
|
2057
|
+
/**
|
|
2058
|
+
* Optional click handler for a milestone. When provided, each milestone's
|
|
2059
|
+
* name-column cell becomes a keyboard-accessible button that invokes this
|
|
2060
|
+
* callback with the milestone and its parent stage. When omitted, milestone
|
|
2061
|
+
* rows render exactly as before (a non-interactive cell) — fully
|
|
2062
|
+
* backward-compatible, so existing consumers are unaffected.
|
|
2063
|
+
*/
|
|
2064
|
+
onMilestoneClick?: (milestone: GanttMilestone, stage: GanttStage) => void;
|
|
1002
2065
|
}
|
|
1003
2066
|
/** Default width of the sticky name column. ~2× the original 240 → readable. */
|
|
1004
2067
|
declare const DEFAULT_NAME_COL_WIDTH = 320;
|
|
@@ -1020,7 +2083,40 @@ declare function barGridColumn(weekStart: number, weekSpan: number, weekCount: n
|
|
|
1020
2083
|
start: number;
|
|
1021
2084
|
span: number;
|
|
1022
2085
|
};
|
|
1023
|
-
declare function Gantt({ stages, weeks, dependencies, rowsHeader, stagesOnly, header, labelWidth, nameColWidth, weekMinWidth, className, style, ...rest }: GanttProps):
|
|
2086
|
+
declare function Gantt({ stages, weeks, dependencies, rowsHeader, stagesOnly, header, labelWidth, nameColWidth, weekMinWidth, onMilestoneClick, className, style, ...rest }: GanttProps): React$1.JSX.Element;
|
|
2087
|
+
|
|
2088
|
+
/**
|
|
2089
|
+
* PublishDrawer organism — the central node of the DFL content-creation machine.
|
|
2090
|
+
*
|
|
2091
|
+
* A shared, app-agnostic publish widget (ADR-6 of plan
|
|
2092
|
+
* `20260501-content-creation-machine`). Any DFL creator app (Lesson Studio,
|
|
2093
|
+
* Course Shaper, …) imports it, hands it a recorded `videoUrl` plus a Supabase
|
|
2094
|
+
* client, and it orchestrates the existing `dfl-publisher-*` edge functions to
|
|
2095
|
+
* publish the piece cross-platform via Zernio + register the lesson.
|
|
2096
|
+
*
|
|
2097
|
+
* v1 scope (Q3=B, locked TG 2026-05-31): **YouTube only**. IG / TikTok are v2.
|
|
2098
|
+
* v1 SEO (Q4=B): the creator types title / keyword manually — no dfl-seo call.
|
|
2099
|
+
*
|
|
2100
|
+
* Self-contained: composes @dfl/components primitives. The `SupabaseClient` is
|
|
2101
|
+
* injected (never hardcoded) — same convention as AuthProvider/LoginPage. The
|
|
2102
|
+
* caller's session JWT rides along automatically via `supabase.functions.invoke`,
|
|
2103
|
+
* which the edge fns require for `auth.getUser()`.
|
|
2104
|
+
*
|
|
2105
|
+
* Edge-fn contracts (dfl-schema/supabase/functions):
|
|
2106
|
+
* - dfl-publisher-list-accounts GET → { ok, accounts: PublisherAccount[] }
|
|
2107
|
+
* - render-design-template POST → { output_url } (Thumbify)
|
|
2108
|
+
* - dfl-publisher-create-post POST → { ok, zernio_post_id, post_url, status, log_id }
|
|
2109
|
+
* - dfl-publisher-register-lesson POST → { ok, lesson_id, ... }
|
|
2110
|
+
*
|
|
2111
|
+
* DS token corrections (v1.1.0):
|
|
2112
|
+
* - Youtube icon: text-red-600 → color: var(--c-publish-drawer-platform-fg)
|
|
2113
|
+
* - CheckCircle2: text-green-600 → color: var(--c-publish-drawer-success-fg)
|
|
2114
|
+
* - Error message: bare text-destructive <p> → styled box via --s-danger-* tokens
|
|
2115
|
+
* - Zernio post ID: bare text → JetBrains Mono chip via --c-publish-drawer-postid-font
|
|
2116
|
+
* - SelectTrigger: shadcn legacy focus:ring-2 → DS focus ring via --c-input-ring-focus
|
|
2117
|
+
* - RenderingThumb: added indeterminate progress bar + brand status note
|
|
2118
|
+
* - Publishing: added inline brand status note
|
|
2119
|
+
*/
|
|
1024
2120
|
|
|
1025
2121
|
/** Minimal subset of `@supabase/supabase-js` SupabaseClient we rely on.
|
|
1026
2122
|
* Kept structural so the package never hard-depends on supabase-js. */
|
|
@@ -1083,6 +2179,15 @@ interface PublishDrawerProps {
|
|
|
1083
2179
|
/** Called on error. */
|
|
1084
2180
|
onError?: (error: Error) => void;
|
|
1085
2181
|
className?: string;
|
|
2182
|
+
/**
|
|
2183
|
+
* @internal Storybook-only props — bypass async effects to pin a specific
|
|
2184
|
+
* visual state without needing mock supabase timing tricks.
|
|
2185
|
+
* Never pass these in production code.
|
|
2186
|
+
*/
|
|
2187
|
+
_storyStatus?: PublishStatus;
|
|
2188
|
+
_storyResult?: PublishResult | null;
|
|
2189
|
+
_storyAccounts?: PublisherAccount[];
|
|
2190
|
+
_storyErrorMsg?: string | null;
|
|
1086
2191
|
}
|
|
1087
2192
|
/** Parse a comma/space-separated tag/keyword string into a clean array. */
|
|
1088
2193
|
declare function parseTags(raw: string): string[];
|
|
@@ -1095,6 +2200,6 @@ declare function validatePublishForm(input: {
|
|
|
1095
2200
|
description: string;
|
|
1096
2201
|
accountId: string | null;
|
|
1097
2202
|
}): string | null;
|
|
1098
|
-
declare function PublishDrawer({ open, onOpenChange, supabase, videoUrl, transcript, suggestedTitle, suggestedDescription, suggestedThumbnailUrl, thumbnailTemplateId, buId, registerLesson, onPublished, onError, className, }: PublishDrawerProps):
|
|
2203
|
+
declare function PublishDrawer({ open, onOpenChange, supabase, videoUrl, transcript, suggestedTitle, suggestedDescription, suggestedThumbnailUrl, thumbnailTemplateId, buId, registerLesson, onPublished, onError, className, _storyStatus, _storyResult, _storyAccounts, _storyErrorMsg, }: PublishDrawerProps): React$1.JSX.Element;
|
|
1099
2204
|
|
|
1100
|
-
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, DEFAULT_NAME_COL_WIDTH, 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, Gantt, type GanttDependency, type GanttMilestone, type GanttProps, type GanttStage, 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, barGridColumn, buttonVariants, clampPct, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, resolveNameColWidth, resolveWeekCount, resolveWeekLabels, stageProgress, toggleVariants, useFormField, useSidebar, validatePublishForm };
|
|
2205
|
+
export { ALLOWED_ORIGINS, AVATAR_MEMBER_PALETTE_SIZE, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, type AlertDialogActionProps, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppNavbar, type AppNavbarProps, AppSidebar, type AppSidebarProps, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarImage, type AvatarSize, AvatarStatus, type AvatarStatusValue, type AvatarTone, 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, CarouselDots, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleHeader, CollapsibleItem, 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, DEFAULT_NAME_COL_WIDTH, 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, Gantt, type GanttDependency, type GanttMilestone, type GanttProps, type GanttStage, 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, type OTPStatus, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, type ProgressProps, ProtectedRoute, type ProtectedRouteProps, PublishDrawer, type PublishDrawerProps, type PublishDrawerSupabase, type PublishResult, type PublishStatus, type PublisherAccount, RadioGroup, RadioGroupItem, RadioGroupRow, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, type ScrollAreaScrollbars, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, SeparatorWithLabel, 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, avatarMemberColor, badgeVariants, barGridColumn, buttonVariants, clampPct, filterPublishableAccounts, getInitials, iconButtonVariants, isAllowedOrigin, kbdVariants, labelVariants, memberHueIndex, memberHueVar, navigationMenuTriggerStyle, parseTags, resolveNameColWidth, resolveWeekCount, resolveWeekLabels, stageProgress, toggleVariants, useFormField, useSidebar, validatePublishForm };
|