@usefidel/design-system 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -480,6 +480,10 @@ interface TagProps extends HTMLAttributes<HTMLSpanElement> {
480
480
  dot?: Tone;
481
481
  /** Leading icon, drawn at 14px, e.g. a repository or branch mark. */
482
482
  icon?: ReactNode;
483
+ /** Shows a remove button at the end; its label is "Remove <removeLabel>". */
484
+ onRemove?: () => void;
485
+ /** Names the tag for the remove button. Defaults to the text when it is a string. */
486
+ removeLabel?: string;
483
487
  children: ReactNode;
484
488
  }
485
489
  /**
@@ -487,7 +491,7 @@ interface TagProps extends HTMLAttributes<HTMLSpanElement> {
487
491
  * optional coloured dot. Measured from Figma "✅Project" comparison-type chip
488
492
  * (node 231:59808).
489
493
  */
490
- declare function Tag({ dot, icon, className, children, ...rest }: TagProps): react.JSX.Element;
494
+ declare function Tag({ dot, icon, onRemove, removeLabel, className, children, ...rest }: TagProps): react.JSX.Element;
491
495
 
492
496
  interface MultiSelectOption {
493
497
  value: string;
@@ -566,6 +570,8 @@ interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>
566
570
  description?: ReactNode;
567
571
  /** Primary action, usually a Button. */
568
572
  action?: ReactNode;
573
+ /** Second button, shown on the same row after the primary one. */
574
+ secondaryAction?: ReactNode;
569
575
  /** Secondary line under the action, e.g. a help link. */
570
576
  footer?: ReactNode;
571
577
  /** `compact` for an empty list inside a card or table: smaller title and
@@ -577,7 +583,7 @@ interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>
577
583
  * action and footer, for a list or page with nothing in it yet. Measured from
578
584
  * Figma "✅Project" Empty State Container (node 231:59661).
579
585
  */
580
- declare function EmptyState({ illustration, title, description, action, footer, size, className, ...rest }: EmptyStateProps): react.JSX.Element;
586
+ declare function EmptyState({ illustration, title, description, action, secondaryAction, footer, size, className, ...rest }: EmptyStateProps): react.JSX.Element;
581
587
  /**
582
588
  * Two tilted cards with a search badge: "nothing found yet". Drawn from the
583
589
  * Figma "Stacked Cards" layers (node 80:49887), 240×160.
@@ -1145,4 +1151,160 @@ declare function ToastRegion({ className, children, ...rest }: ToastRegionProps)
1145
1151
  /** Fidel design-system Toast: a short status message with an optional action. Place it in a ToastRegion. */
1146
1152
  declare function Toast({ children, action, onDismiss, duration, className, ...rest }: ToastProps): react.JSX.Element;
1147
1153
 
1148
- export { Accordion, type AccordionProps, AppLayout, type AppLayoutProps, AppNav, type AppNavProps, Avatar, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarProps, type AvatarSize, Badge, type BadgeProps, BrandButton, type BrandButtonProps, type Breakpoint, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Callout, type CalloutProps, type CalloutTone, Card, type CardPadding, type CardProps, type CardTone, Checkbox, type CheckboxProps, type DiffElement, type DiffPropertyLine, DiffPropertyList, type DiffPropertyListProps, DiffSection, type DiffSectionProps, Divider, type DividerProps, EmptyState, type EmptyStateProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, Input, type InputProps, ListLabel, type ListLabelProps, Menu, type MenuDivider, type MenuEntry, type MenuItem, type MenuLabel, type MenuPlacement, type MenuProps, type MenuSearch, MismatchCard, type MismatchCardProps, type MismatchProperty, Modal, type ModalProps, type ModalSize, type ModalTone, MultiSelect, type MultiSelectOption, type MultiSelectProps, PageHeader, type PageHeaderProps, Pagination, type PaginationProps, PricingCard, type PricingCardProps, Radio, RadioCard, type RadioCardProps, type RadioProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Select, type SelectOption, type SelectProps, SettingsSection, type SettingsSectionProps, Sidebar, type SidebarBrandProps, SidebarItem, type SidebarItemProps, type SidebarProps, type SidebarSectionProps, type SidebarState, Skeleton, SkeletonGroup, type SkeletonGroupProps, type SkeletonProps, type SkeletonShape, Spinner, type SpinnerProps, Split, type SplitProps, StackedCardsIllustration, Stat, type StatProps, StatusDot, type StatusDotProps, type StatusDotStatus, type Step, StepList, type StepListProps, type StepStatus, Swatch, type SwatchProps, TabNav, type TabNavProps, Table, type TableColumn, type TableProps, Tag, type TagProps, Toast, type ToastAction, type ToastProps, ToastRegion, type ToastRegionProps, Toggle, type ToggleProps, type ToggleSize, type Tone, Tooltip, type TooltipProps, type TooltipSide, WorkspaceAvatar, WorkspaceSwitcher, type WorkspaceSwitcherProps, breakpoints, useSidebar };
1154
+ type StepperStepStatus = 'done' | 'current' | 'upcoming';
1155
+ interface StepperStepProps {
1156
+ status: StepperStepStatus;
1157
+ children: ReactNode;
1158
+ }
1159
+ declare function StepperStep(_: StepperStepProps): null;
1160
+ interface StepperProps extends HTMLAttributes<HTMLOListElement> {
1161
+ /** Stepper.Step elements, in order. */
1162
+ children: ReactNode;
1163
+ }
1164
+ /** Fidel design-system Stepper: a numbered row of steps joined by lines, for a multi-step form. */
1165
+ declare function StepperRoot({ className, children, ...rest }: StepperProps): react.JSX.Element;
1166
+ declare const Stepper: typeof StepperRoot & {
1167
+ Step: typeof StepperStep;
1168
+ };
1169
+
1170
+ interface NumberedStepsProps extends HTMLAttributes<HTMLOListElement> {
1171
+ /** NumberedSteps.Item elements, in order. */
1172
+ children: ReactNode;
1173
+ }
1174
+ declare function NumberedStepsRoot({ className, children, ...rest }: NumberedStepsProps): react.JSX.Element;
1175
+ declare function NumberedStepsItem({ className, children, ...rest }: HTMLAttributes<HTMLLIElement>): react.JSX.Element;
1176
+ /** Fidel design-system NumberedSteps: a form laid out as numbered steps joined by a line. */
1177
+ declare const NumberedSteps: typeof NumberedStepsRoot & {
1178
+ Item: typeof NumberedStepsItem;
1179
+ };
1180
+
1181
+ interface OptionListProps extends HTMLAttributes<HTMLDivElement> {
1182
+ children: ReactNode;
1183
+ }
1184
+ declare function OptionListRoot({ className, children, ...rest }: OptionListProps): react.JSX.Element;
1185
+ declare function OptionListLabel({ className, children, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
1186
+ interface OptionRowProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'title'> {
1187
+ /** @default 'radio' */
1188
+ control?: 'radio' | 'checkbox';
1189
+ title: ReactNode;
1190
+ description?: ReactNode;
1191
+ /** Quiet text or a Badge at the end of the row, e.g. "Recommended" or "main, 3d ago". */
1192
+ meta?: ReactNode;
1193
+ }
1194
+ /** One choice in an OptionList: a radio or checkbox with a title, a second line and optional end content. */
1195
+ declare function OptionRow({ control, title, description, meta, className, checked, disabled, ...rest }: OptionRowProps): react.JSX.Element;
1196
+ /** Fidel design-system OptionList: radio or checkbox rows in one bordered group, with optional group labels. */
1197
+ declare const OptionList: typeof OptionListRoot & {
1198
+ Label: typeof OptionListLabel;
1199
+ Row: typeof OptionRow;
1200
+ };
1201
+
1202
+ interface ChecklistProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
1203
+ title?: ReactNode;
1204
+ children: ReactNode;
1205
+ }
1206
+ declare function ChecklistRoot({ title, className, children, ...rest }: ChecklistProps): react.JSX.Element;
1207
+ interface ChecklistItemProps {
1208
+ done: boolean;
1209
+ label: ReactNode;
1210
+ /** The chosen value under the label, or a placeholder such as "Not set yet". */
1211
+ value: ReactNode;
1212
+ }
1213
+ declare function ChecklistItem({ done, label, value }: ChecklistItemProps): react.JSX.Element;
1214
+ /** Fidel design-system Checklist: a summary of choices so far, each ticked once set. */
1215
+ declare const Checklist: typeof ChecklistRoot & {
1216
+ Item: typeof ChecklistItem;
1217
+ };
1218
+
1219
+ interface DrawerProps {
1220
+ open: boolean;
1221
+ /** Called on Escape, the close button, or a click on the page behind. */
1222
+ onClose: () => void;
1223
+ title: ReactNode;
1224
+ description?: ReactNode;
1225
+ children?: ReactNode;
1226
+ /** Pinned to the bottom: a summary on the left and the buttons, primary last. */
1227
+ footer?: ReactNode;
1228
+ /** False blocks every way of closing, e.g. while saving. @default true */
1229
+ dismissible?: boolean;
1230
+ }
1231
+ /**
1232
+ * Fidel design-system Drawer: a floating panel that slides in from the right over the
1233
+ * page, for picking or editing without leaving it. Traps focus, locks page
1234
+ * scroll and returns focus on close, like Modal.
1235
+ */
1236
+ declare function Drawer({ open, onClose, title, description, children, footer, dismissible }: DrawerProps): react.ReactPortal | null;
1237
+
1238
+ interface ResourceCardStat {
1239
+ label: ReactNode;
1240
+ value: ReactNode;
1241
+ }
1242
+ interface ResourceCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
1243
+ /** 16px icon before the title, e.g. a repository mark. */
1244
+ icon?: ReactNode;
1245
+ title: ReactNode;
1246
+ /** Beside the title, e.g. a Tag. */
1247
+ badge?: ReactNode;
1248
+ /** Small lines under the title. */
1249
+ meta?: ReactNode[];
1250
+ stats?: ResourceCardStat[];
1251
+ /** At the end of the card, e.g. a "Manage" button. */
1252
+ action?: ReactNode;
1253
+ /** `add` is the dashed card that invites adding another resource. @default 'default' */
1254
+ variant?: 'default' | 'add';
1255
+ }
1256
+ /** Fidel design-system ResourceCard: one linked thing (a repository, an account) with its numbers and an action. */
1257
+ declare function ResourceCard({ icon, title, badge, meta, stats, action, variant, className, ...rest }: ResourceCardProps): react.JSX.Element;
1258
+
1259
+ interface PageSkeletonProps {
1260
+ /** What's loading, for screen readers. @default 'Loading' */
1261
+ label?: string;
1262
+ children: ReactNode;
1263
+ }
1264
+ /** Fidel design-system PageSkeleton: a page's loading layout, composed from its parts so it matches the page. */
1265
+ declare function PageSkeletonRoot({ label, children }: PageSkeletonProps): react.JSX.Element;
1266
+ interface PageSkeletonHeaderProps {
1267
+ /** Real text when the title is known before data loads, e.g. "Projects". */
1268
+ title?: ReactNode;
1269
+ description?: ReactNode | boolean;
1270
+ breadcrumb?: boolean;
1271
+ action?: boolean;
1272
+ /** Number of tabs under the title. */
1273
+ tabs?: number;
1274
+ }
1275
+ /** The PageHeader with bars where data-driven text will go. */
1276
+ declare function PageSkeletonHeader({ title, description, breadcrumb, action, tabs }: PageSkeletonHeaderProps): react.JSX.Element;
1277
+ /** A search field and filter buttons. */
1278
+ declare function PageSkeletonToolbar({ filters }: {
1279
+ filters?: number;
1280
+ }): react.JSX.Element;
1281
+ /** A bordered table with a header row and `rows` rows of `columns` cells. */
1282
+ declare function PageSkeletonTable({ rows, columns }: {
1283
+ rows?: number;
1284
+ columns?: number;
1285
+ }): react.JSX.Element;
1286
+ /** A grid of cards. */
1287
+ declare function PageSkeletonCards({ count, height, columns }: {
1288
+ count?: number;
1289
+ height?: number;
1290
+ columns?: number;
1291
+ }): react.JSX.Element;
1292
+ /** Labelled fields, one under the other. */
1293
+ declare function PageSkeletonForm({ fields }: {
1294
+ fields?: number;
1295
+ }): react.JSX.Element;
1296
+ /** Main content beside a fixed-width aside, like a form with its summary. */
1297
+ declare function PageSkeletonSplit({ children, aside }: {
1298
+ children: ReactNode;
1299
+ aside: ReactNode;
1300
+ }): react.JSX.Element;
1301
+ declare const PageSkeleton: typeof PageSkeletonRoot & {
1302
+ Header: typeof PageSkeletonHeader;
1303
+ Toolbar: typeof PageSkeletonToolbar;
1304
+ Table: typeof PageSkeletonTable;
1305
+ Cards: typeof PageSkeletonCards;
1306
+ Form: typeof PageSkeletonForm;
1307
+ Split: typeof PageSkeletonSplit;
1308
+ };
1309
+
1310
+ export { Accordion, type AccordionProps, AppLayout, type AppLayoutProps, AppNav, type AppNavProps, Avatar, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarProps, type AvatarSize, Badge, type BadgeProps, BrandButton, type BrandButtonProps, type Breakpoint, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Callout, type CalloutProps, type CalloutTone, Card, type CardPadding, type CardProps, type CardTone, Checkbox, type CheckboxProps, Checklist, type ChecklistItemProps, type ChecklistProps, type DiffElement, type DiffPropertyLine, DiffPropertyList, type DiffPropertyListProps, DiffSection, type DiffSectionProps, Divider, type DividerProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, Input, type InputProps, ListLabel, type ListLabelProps, Menu, type MenuDivider, type MenuEntry, type MenuItem, type MenuLabel, type MenuPlacement, type MenuProps, type MenuSearch, MismatchCard, type MismatchCardProps, type MismatchProperty, Modal, type ModalProps, type ModalSize, type ModalTone, MultiSelect, type MultiSelectOption, type MultiSelectProps, NumberedSteps, type NumberedStepsProps, OptionList, type OptionListProps, OptionRow, type OptionRowProps, PageHeader, type PageHeaderProps, PageSkeleton, type PageSkeletonHeaderProps, type PageSkeletonProps, Pagination, type PaginationProps, PricingCard, type PricingCardProps, Radio, RadioCard, type RadioCardProps, type RadioProps, ResourceCard, type ResourceCardProps, type ResourceCardStat, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Select, type SelectOption, type SelectProps, SettingsSection, type SettingsSectionProps, Sidebar, type SidebarBrandProps, SidebarItem, type SidebarItemProps, type SidebarProps, type SidebarSectionProps, type SidebarState, Skeleton, SkeletonGroup, type SkeletonGroupProps, type SkeletonProps, type SkeletonShape, Spinner, type SpinnerProps, Split, type SplitProps, StackedCardsIllustration, Stat, type StatProps, StatusDot, type StatusDotProps, type StatusDotStatus, type Step, StepList, type StepListProps, type StepStatus, Stepper, type StepperProps, type StepperStepProps, type StepperStepStatus, Swatch, type SwatchProps, TabNav, type TabNavProps, Table, type TableColumn, type TableProps, Tag, type TagProps, Toast, type ToastAction, type ToastProps, ToastRegion, type ToastRegionProps, Toggle, type ToggleProps, type ToggleSize, type Tone, Tooltip, type TooltipProps, type TooltipSide, WorkspaceAvatar, WorkspaceSwitcher, type WorkspaceSwitcherProps, breakpoints, useSidebar };
package/dist/index.d.ts CHANGED
@@ -480,6 +480,10 @@ interface TagProps extends HTMLAttributes<HTMLSpanElement> {
480
480
  dot?: Tone;
481
481
  /** Leading icon, drawn at 14px, e.g. a repository or branch mark. */
482
482
  icon?: ReactNode;
483
+ /** Shows a remove button at the end; its label is "Remove <removeLabel>". */
484
+ onRemove?: () => void;
485
+ /** Names the tag for the remove button. Defaults to the text when it is a string. */
486
+ removeLabel?: string;
483
487
  children: ReactNode;
484
488
  }
485
489
  /**
@@ -487,7 +491,7 @@ interface TagProps extends HTMLAttributes<HTMLSpanElement> {
487
491
  * optional coloured dot. Measured from Figma "✅Project" comparison-type chip
488
492
  * (node 231:59808).
489
493
  */
490
- declare function Tag({ dot, icon, className, children, ...rest }: TagProps): react.JSX.Element;
494
+ declare function Tag({ dot, icon, onRemove, removeLabel, className, children, ...rest }: TagProps): react.JSX.Element;
491
495
 
492
496
  interface MultiSelectOption {
493
497
  value: string;
@@ -566,6 +570,8 @@ interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>
566
570
  description?: ReactNode;
567
571
  /** Primary action, usually a Button. */
568
572
  action?: ReactNode;
573
+ /** Second button, shown on the same row after the primary one. */
574
+ secondaryAction?: ReactNode;
569
575
  /** Secondary line under the action, e.g. a help link. */
570
576
  footer?: ReactNode;
571
577
  /** `compact` for an empty list inside a card or table: smaller title and
@@ -577,7 +583,7 @@ interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'>
577
583
  * action and footer, for a list or page with nothing in it yet. Measured from
578
584
  * Figma "✅Project" Empty State Container (node 231:59661).
579
585
  */
580
- declare function EmptyState({ illustration, title, description, action, footer, size, className, ...rest }: EmptyStateProps): react.JSX.Element;
586
+ declare function EmptyState({ illustration, title, description, action, secondaryAction, footer, size, className, ...rest }: EmptyStateProps): react.JSX.Element;
581
587
  /**
582
588
  * Two tilted cards with a search badge: "nothing found yet". Drawn from the
583
589
  * Figma "Stacked Cards" layers (node 80:49887), 240×160.
@@ -1145,4 +1151,160 @@ declare function ToastRegion({ className, children, ...rest }: ToastRegionProps)
1145
1151
  /** Fidel design-system Toast: a short status message with an optional action. Place it in a ToastRegion. */
1146
1152
  declare function Toast({ children, action, onDismiss, duration, className, ...rest }: ToastProps): react.JSX.Element;
1147
1153
 
1148
- export { Accordion, type AccordionProps, AppLayout, type AppLayoutProps, AppNav, type AppNavProps, Avatar, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarProps, type AvatarSize, Badge, type BadgeProps, BrandButton, type BrandButtonProps, type Breakpoint, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Callout, type CalloutProps, type CalloutTone, Card, type CardPadding, type CardProps, type CardTone, Checkbox, type CheckboxProps, type DiffElement, type DiffPropertyLine, DiffPropertyList, type DiffPropertyListProps, DiffSection, type DiffSectionProps, Divider, type DividerProps, EmptyState, type EmptyStateProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, Input, type InputProps, ListLabel, type ListLabelProps, Menu, type MenuDivider, type MenuEntry, type MenuItem, type MenuLabel, type MenuPlacement, type MenuProps, type MenuSearch, MismatchCard, type MismatchCardProps, type MismatchProperty, Modal, type ModalProps, type ModalSize, type ModalTone, MultiSelect, type MultiSelectOption, type MultiSelectProps, PageHeader, type PageHeaderProps, Pagination, type PaginationProps, PricingCard, type PricingCardProps, Radio, RadioCard, type RadioCardProps, type RadioProps, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Select, type SelectOption, type SelectProps, SettingsSection, type SettingsSectionProps, Sidebar, type SidebarBrandProps, SidebarItem, type SidebarItemProps, type SidebarProps, type SidebarSectionProps, type SidebarState, Skeleton, SkeletonGroup, type SkeletonGroupProps, type SkeletonProps, type SkeletonShape, Spinner, type SpinnerProps, Split, type SplitProps, StackedCardsIllustration, Stat, type StatProps, StatusDot, type StatusDotProps, type StatusDotStatus, type Step, StepList, type StepListProps, type StepStatus, Swatch, type SwatchProps, TabNav, type TabNavProps, Table, type TableColumn, type TableProps, Tag, type TagProps, Toast, type ToastAction, type ToastProps, ToastRegion, type ToastRegionProps, Toggle, type ToggleProps, type ToggleSize, type Tone, Tooltip, type TooltipProps, type TooltipSide, WorkspaceAvatar, WorkspaceSwitcher, type WorkspaceSwitcherProps, breakpoints, useSidebar };
1154
+ type StepperStepStatus = 'done' | 'current' | 'upcoming';
1155
+ interface StepperStepProps {
1156
+ status: StepperStepStatus;
1157
+ children: ReactNode;
1158
+ }
1159
+ declare function StepperStep(_: StepperStepProps): null;
1160
+ interface StepperProps extends HTMLAttributes<HTMLOListElement> {
1161
+ /** Stepper.Step elements, in order. */
1162
+ children: ReactNode;
1163
+ }
1164
+ /** Fidel design-system Stepper: a numbered row of steps joined by lines, for a multi-step form. */
1165
+ declare function StepperRoot({ className, children, ...rest }: StepperProps): react.JSX.Element;
1166
+ declare const Stepper: typeof StepperRoot & {
1167
+ Step: typeof StepperStep;
1168
+ };
1169
+
1170
+ interface NumberedStepsProps extends HTMLAttributes<HTMLOListElement> {
1171
+ /** NumberedSteps.Item elements, in order. */
1172
+ children: ReactNode;
1173
+ }
1174
+ declare function NumberedStepsRoot({ className, children, ...rest }: NumberedStepsProps): react.JSX.Element;
1175
+ declare function NumberedStepsItem({ className, children, ...rest }: HTMLAttributes<HTMLLIElement>): react.JSX.Element;
1176
+ /** Fidel design-system NumberedSteps: a form laid out as numbered steps joined by a line. */
1177
+ declare const NumberedSteps: typeof NumberedStepsRoot & {
1178
+ Item: typeof NumberedStepsItem;
1179
+ };
1180
+
1181
+ interface OptionListProps extends HTMLAttributes<HTMLDivElement> {
1182
+ children: ReactNode;
1183
+ }
1184
+ declare function OptionListRoot({ className, children, ...rest }: OptionListProps): react.JSX.Element;
1185
+ declare function OptionListLabel({ className, children, ...rest }: HTMLAttributes<HTMLDivElement>): react.JSX.Element;
1186
+ interface OptionRowProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size' | 'title'> {
1187
+ /** @default 'radio' */
1188
+ control?: 'radio' | 'checkbox';
1189
+ title: ReactNode;
1190
+ description?: ReactNode;
1191
+ /** Quiet text or a Badge at the end of the row, e.g. "Recommended" or "main, 3d ago". */
1192
+ meta?: ReactNode;
1193
+ }
1194
+ /** One choice in an OptionList: a radio or checkbox with a title, a second line and optional end content. */
1195
+ declare function OptionRow({ control, title, description, meta, className, checked, disabled, ...rest }: OptionRowProps): react.JSX.Element;
1196
+ /** Fidel design-system OptionList: radio or checkbox rows in one bordered group, with optional group labels. */
1197
+ declare const OptionList: typeof OptionListRoot & {
1198
+ Label: typeof OptionListLabel;
1199
+ Row: typeof OptionRow;
1200
+ };
1201
+
1202
+ interface ChecklistProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
1203
+ title?: ReactNode;
1204
+ children: ReactNode;
1205
+ }
1206
+ declare function ChecklistRoot({ title, className, children, ...rest }: ChecklistProps): react.JSX.Element;
1207
+ interface ChecklistItemProps {
1208
+ done: boolean;
1209
+ label: ReactNode;
1210
+ /** The chosen value under the label, or a placeholder such as "Not set yet". */
1211
+ value: ReactNode;
1212
+ }
1213
+ declare function ChecklistItem({ done, label, value }: ChecklistItemProps): react.JSX.Element;
1214
+ /** Fidel design-system Checklist: a summary of choices so far, each ticked once set. */
1215
+ declare const Checklist: typeof ChecklistRoot & {
1216
+ Item: typeof ChecklistItem;
1217
+ };
1218
+
1219
+ interface DrawerProps {
1220
+ open: boolean;
1221
+ /** Called on Escape, the close button, or a click on the page behind. */
1222
+ onClose: () => void;
1223
+ title: ReactNode;
1224
+ description?: ReactNode;
1225
+ children?: ReactNode;
1226
+ /** Pinned to the bottom: a summary on the left and the buttons, primary last. */
1227
+ footer?: ReactNode;
1228
+ /** False blocks every way of closing, e.g. while saving. @default true */
1229
+ dismissible?: boolean;
1230
+ }
1231
+ /**
1232
+ * Fidel design-system Drawer: a floating panel that slides in from the right over the
1233
+ * page, for picking or editing without leaving it. Traps focus, locks page
1234
+ * scroll and returns focus on close, like Modal.
1235
+ */
1236
+ declare function Drawer({ open, onClose, title, description, children, footer, dismissible }: DrawerProps): react.ReactPortal | null;
1237
+
1238
+ interface ResourceCardStat {
1239
+ label: ReactNode;
1240
+ value: ReactNode;
1241
+ }
1242
+ interface ResourceCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
1243
+ /** 16px icon before the title, e.g. a repository mark. */
1244
+ icon?: ReactNode;
1245
+ title: ReactNode;
1246
+ /** Beside the title, e.g. a Tag. */
1247
+ badge?: ReactNode;
1248
+ /** Small lines under the title. */
1249
+ meta?: ReactNode[];
1250
+ stats?: ResourceCardStat[];
1251
+ /** At the end of the card, e.g. a "Manage" button. */
1252
+ action?: ReactNode;
1253
+ /** `add` is the dashed card that invites adding another resource. @default 'default' */
1254
+ variant?: 'default' | 'add';
1255
+ }
1256
+ /** Fidel design-system ResourceCard: one linked thing (a repository, an account) with its numbers and an action. */
1257
+ declare function ResourceCard({ icon, title, badge, meta, stats, action, variant, className, ...rest }: ResourceCardProps): react.JSX.Element;
1258
+
1259
+ interface PageSkeletonProps {
1260
+ /** What's loading, for screen readers. @default 'Loading' */
1261
+ label?: string;
1262
+ children: ReactNode;
1263
+ }
1264
+ /** Fidel design-system PageSkeleton: a page's loading layout, composed from its parts so it matches the page. */
1265
+ declare function PageSkeletonRoot({ label, children }: PageSkeletonProps): react.JSX.Element;
1266
+ interface PageSkeletonHeaderProps {
1267
+ /** Real text when the title is known before data loads, e.g. "Projects". */
1268
+ title?: ReactNode;
1269
+ description?: ReactNode | boolean;
1270
+ breadcrumb?: boolean;
1271
+ action?: boolean;
1272
+ /** Number of tabs under the title. */
1273
+ tabs?: number;
1274
+ }
1275
+ /** The PageHeader with bars where data-driven text will go. */
1276
+ declare function PageSkeletonHeader({ title, description, breadcrumb, action, tabs }: PageSkeletonHeaderProps): react.JSX.Element;
1277
+ /** A search field and filter buttons. */
1278
+ declare function PageSkeletonToolbar({ filters }: {
1279
+ filters?: number;
1280
+ }): react.JSX.Element;
1281
+ /** A bordered table with a header row and `rows` rows of `columns` cells. */
1282
+ declare function PageSkeletonTable({ rows, columns }: {
1283
+ rows?: number;
1284
+ columns?: number;
1285
+ }): react.JSX.Element;
1286
+ /** A grid of cards. */
1287
+ declare function PageSkeletonCards({ count, height, columns }: {
1288
+ count?: number;
1289
+ height?: number;
1290
+ columns?: number;
1291
+ }): react.JSX.Element;
1292
+ /** Labelled fields, one under the other. */
1293
+ declare function PageSkeletonForm({ fields }: {
1294
+ fields?: number;
1295
+ }): react.JSX.Element;
1296
+ /** Main content beside a fixed-width aside, like a form with its summary. */
1297
+ declare function PageSkeletonSplit({ children, aside }: {
1298
+ children: ReactNode;
1299
+ aside: ReactNode;
1300
+ }): react.JSX.Element;
1301
+ declare const PageSkeleton: typeof PageSkeletonRoot & {
1302
+ Header: typeof PageSkeletonHeader;
1303
+ Toolbar: typeof PageSkeletonToolbar;
1304
+ Table: typeof PageSkeletonTable;
1305
+ Cards: typeof PageSkeletonCards;
1306
+ Form: typeof PageSkeletonForm;
1307
+ Split: typeof PageSkeletonSplit;
1308
+ };
1309
+
1310
+ export { Accordion, type AccordionProps, AppLayout, type AppLayoutProps, AppNav, type AppNavProps, Avatar, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarProps, type AvatarSize, Badge, type BadgeProps, BrandButton, type BrandButtonProps, type Breakpoint, Button, ButtonLink, type ButtonLinkProps, type ButtonProps, type ButtonSize, type ButtonVariant, Callout, type CalloutProps, type CalloutTone, Card, type CardPadding, type CardProps, type CardTone, Checkbox, type CheckboxProps, Checklist, type ChecklistItemProps, type ChecklistProps, type DiffElement, type DiffPropertyLine, DiffPropertyList, type DiffPropertyListProps, DiffSection, type DiffSectionProps, Divider, type DividerProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, Input, type InputProps, ListLabel, type ListLabelProps, Menu, type MenuDivider, type MenuEntry, type MenuItem, type MenuLabel, type MenuPlacement, type MenuProps, type MenuSearch, MismatchCard, type MismatchCardProps, type MismatchProperty, Modal, type ModalProps, type ModalSize, type ModalTone, MultiSelect, type MultiSelectOption, type MultiSelectProps, NumberedSteps, type NumberedStepsProps, OptionList, type OptionListProps, OptionRow, type OptionRowProps, PageHeader, type PageHeaderProps, PageSkeleton, type PageSkeletonHeaderProps, type PageSkeletonProps, Pagination, type PaginationProps, PricingCard, type PricingCardProps, Radio, RadioCard, type RadioCardProps, type RadioProps, ResourceCard, type ResourceCardProps, type ResourceCardStat, SearchInput, type SearchInputProps, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Select, type SelectOption, type SelectProps, SettingsSection, type SettingsSectionProps, Sidebar, type SidebarBrandProps, SidebarItem, type SidebarItemProps, type SidebarProps, type SidebarSectionProps, type SidebarState, Skeleton, SkeletonGroup, type SkeletonGroupProps, type SkeletonProps, type SkeletonShape, Spinner, type SpinnerProps, Split, type SplitProps, StackedCardsIllustration, Stat, type StatProps, StatusDot, type StatusDotProps, type StatusDotStatus, type Step, StepList, type StepListProps, type StepStatus, Stepper, type StepperProps, type StepperStepProps, type StepperStepStatus, Swatch, type SwatchProps, TabNav, type TabNavProps, Table, type TableColumn, type TableProps, Tag, type TagProps, Toast, type ToastAction, type ToastProps, ToastRegion, type ToastRegionProps, Toggle, type ToggleProps, type ToggleSize, type Tone, Tooltip, type TooltipProps, type TooltipSide, WorkspaceAvatar, WorkspaceSwitcher, type WorkspaceSwitcherProps, breakpoints, useSidebar };