@epfl-sti/poesis 0.1.9 → 0.1.10

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.
Files changed (93) hide show
  1. package/dist/components/data-display/Card.d.ts +20 -0
  2. package/dist/components/data-display/Card.d.ts.map +1 -0
  3. package/dist/components/data-display/DescriptionList.d.ts +23 -0
  4. package/dist/components/data-display/DescriptionList.d.ts.map +1 -0
  5. package/dist/components/data-display/EmptyState.d.ts +18 -0
  6. package/dist/components/data-display/EmptyState.d.ts.map +1 -0
  7. package/dist/components/data-display/Table.d.ts +53 -0
  8. package/dist/components/data-display/Table.d.ts.map +1 -0
  9. package/dist/components/data-display/index.d.ts +5 -0
  10. package/dist/components/data-display/index.d.ts.map +1 -0
  11. package/dist/components/feedback/Alert.d.ts +18 -0
  12. package/dist/components/feedback/Alert.d.ts.map +1 -0
  13. package/dist/components/feedback/ConfirmDialog.d.ts +26 -0
  14. package/dist/components/feedback/ConfirmDialog.d.ts.map +1 -0
  15. package/dist/components/feedback/Dialog.d.ts +20 -0
  16. package/dist/components/feedback/Dialog.d.ts.map +1 -0
  17. package/dist/components/feedback/Toast.d.ts +5 -0
  18. package/dist/components/feedback/Toast.d.ts.map +1 -0
  19. package/dist/components/feedback/index.d.ts +6 -0
  20. package/dist/components/feedback/index.d.ts.map +1 -0
  21. package/dist/components/feedback/toastContext.d.ts +17 -0
  22. package/dist/components/feedback/toastContext.d.ts.map +1 -0
  23. package/dist/components/layout/BurgerDrawer.d.ts +25 -0
  24. package/dist/components/layout/BurgerDrawer.d.ts.map +1 -0
  25. package/dist/components/layout/PageShell.d.ts +32 -0
  26. package/dist/components/layout/PageShell.d.ts.map +1 -0
  27. package/dist/components/layout/SideNav.d.ts +22 -0
  28. package/dist/components/layout/SideNav.d.ts.map +1 -0
  29. package/dist/components/layout/TopNav.d.ts +24 -0
  30. package/dist/components/layout/TopNav.d.ts.map +1 -0
  31. package/dist/components/layout/index.d.ts +10 -0
  32. package/dist/components/layout/index.d.ts.map +1 -0
  33. package/dist/components/layout/types.d.ts +31 -0
  34. package/dist/components/layout/types.d.ts.map +1 -0
  35. package/dist/components/ui/Avatar.d.ts +25 -0
  36. package/dist/components/ui/Avatar.d.ts.map +1 -0
  37. package/dist/components/ui/Badge.d.ts +34 -0
  38. package/dist/components/ui/Badge.d.ts.map +1 -0
  39. package/dist/components/ui/Button.d.ts +35 -0
  40. package/dist/components/ui/Button.d.ts.map +1 -0
  41. package/dist/components/ui/Checkbox.d.ts +16 -0
  42. package/dist/components/ui/Checkbox.d.ts.map +1 -0
  43. package/dist/components/ui/DropdownMenu.d.ts +30 -0
  44. package/dist/components/ui/DropdownMenu.d.ts.map +1 -0
  45. package/dist/components/ui/FileUpload.d.ts +27 -0
  46. package/dist/components/ui/FileUpload.d.ts.map +1 -0
  47. package/dist/components/ui/IconButton.d.ts +34 -0
  48. package/dist/components/ui/IconButton.d.ts.map +1 -0
  49. package/dist/components/ui/Input.d.ts +21 -0
  50. package/dist/components/ui/Input.d.ts.map +1 -0
  51. package/dist/components/ui/LanguageSwitcher.d.ts +11 -0
  52. package/dist/components/ui/LanguageSwitcher.d.ts.map +1 -0
  53. package/dist/components/ui/Pagination.d.ts +36 -0
  54. package/dist/components/ui/Pagination.d.ts.map +1 -0
  55. package/dist/components/ui/Popover.d.ts +18 -0
  56. package/dist/components/ui/Popover.d.ts.map +1 -0
  57. package/dist/components/ui/ProgressBar.d.ts +30 -0
  58. package/dist/components/ui/ProgressBar.d.ts.map +1 -0
  59. package/dist/components/ui/RadioGroup.d.ts +45 -0
  60. package/dist/components/ui/RadioGroup.d.ts.map +1 -0
  61. package/dist/components/ui/Select.d.ts +15 -0
  62. package/dist/components/ui/Select.d.ts.map +1 -0
  63. package/dist/components/ui/Spinner.d.ts +19 -0
  64. package/dist/components/ui/Spinner.d.ts.map +1 -0
  65. package/dist/components/ui/Switch.d.ts +12 -0
  66. package/dist/components/ui/Switch.d.ts.map +1 -0
  67. package/dist/components/ui/Tabs.d.ts +36 -0
  68. package/dist/components/ui/Tabs.d.ts.map +1 -0
  69. package/dist/components/ui/Textarea.d.ts +18 -0
  70. package/dist/components/ui/Textarea.d.ts.map +1 -0
  71. package/dist/components/ui/ThemeToggle.d.ts +16 -0
  72. package/dist/components/ui/ThemeToggle.d.ts.map +1 -0
  73. package/dist/components/ui/Tooltip.d.ts +16 -0
  74. package/dist/components/ui/Tooltip.d.ts.map +1 -0
  75. package/dist/components/ui/index.d.ts +21 -0
  76. package/dist/components/ui/index.d.ts.map +1 -0
  77. package/dist/hooks/useAuth.d.ts +33 -0
  78. package/dist/hooks/useAuth.d.ts.map +1 -0
  79. package/dist/hooks/useLanguage.d.ts +14 -0
  80. package/dist/hooks/useLanguage.d.ts.map +1 -0
  81. package/dist/hooks/useTheme.d.ts +21 -0
  82. package/dist/hooks/useTheme.d.ts.map +1 -0
  83. package/dist/i18n/index.d.ts +3 -0
  84. package/dist/i18n/index.d.ts.map +1 -0
  85. package/dist/lib.d.ts +11 -0
  86. package/dist/lib.d.ts.map +1 -0
  87. package/dist/poesis.js +4 -4
  88. package/dist/poesis.js.map +1 -1
  89. package/dist/routes/types.d.ts +39 -0
  90. package/dist/routes/types.d.ts.map +1 -0
  91. package/dist/theme/reactSelectStyles.d.ts +12 -0
  92. package/dist/theme/reactSelectStyles.d.ts.map +1 -0
  93. package/package.json +3 -3
@@ -0,0 +1,20 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface CardProps extends ComponentPropsWithoutRef<"div"> {
3
+ /** Optional header content — rendered above the body with a bottom border. */
4
+ header?: ReactNode;
5
+ /** Optional footer content — rendered below the body with a top border. */
6
+ footer?: ReactNode;
7
+ /** Optional actions aligned to the right inside the footer area. */
8
+ actions?: ReactNode;
9
+ /** Remove the default padding on the body section. */
10
+ noPadding?: boolean;
11
+ /** Card body content. */
12
+ children?: ReactNode;
13
+ }
14
+ /**
15
+ * Elevated surface container with optional header, footer, and actions slots.
16
+ *
17
+ * Uses `radius-md` and `shadow-md` from the design tokens.
18
+ */
19
+ export declare const Card: import("react").ForwardRefExoticComponent<CardProps & import("react").RefAttributes<HTMLDivElement>>;
20
+ //# sourceMappingURL=Card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/data-display/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAc,MAAM,OAAO,CAAC;AAIlF,MAAM,WAAW,SAAU,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IAC9D,8EAA8E;IAC9E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAID;;;;GAIG;AACH,eAAO,MAAM,IAAI,sGAqCf,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface DescriptionItem {
3
+ /** Label / key text. */
4
+ label: ReactNode;
5
+ /** Value / description text. */
6
+ value: ReactNode;
7
+ }
8
+ export type DescriptionListLayout = "vertical" | "horizontal";
9
+ export interface DescriptionListProps extends ComponentPropsWithoutRef<"dl"> {
10
+ /** Array of key-value items. */
11
+ items: DescriptionItem[];
12
+ /** Layout direction. @default "horizontal" */
13
+ layout?: DescriptionListLayout;
14
+ /** Show a light divider between items. @default true */
15
+ dividers?: boolean;
16
+ }
17
+ /**
18
+ * Key-value pair layout for detail views.
19
+ *
20
+ * Supports horizontal (label left, value right) and vertical (label above value) layouts.
21
+ */
22
+ export declare const DescriptionList: import("react").ForwardRefExoticComponent<DescriptionListProps & import("react").RefAttributes<HTMLDListElement>>;
23
+ //# sourceMappingURL=DescriptionList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DescriptionList.d.ts","sourceRoot":"","sources":["../../../src/components/data-display/DescriptionList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAc,MAAM,OAAO,CAAC;AAIlF,MAAM,WAAW,eAAe;IAC5B,wBAAwB;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,gCAAgC;IAChC,KAAK,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE9D,MAAM,WAAW,oBAAqB,SAAQ,wBAAwB,CAAC,IAAI,CAAC;IACxE,gCAAgC;IAChC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAID;;;;GAIG;AACH,eAAO,MAAM,eAAe,mHA2C3B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface EmptyStateProps extends ComponentPropsWithoutRef<"div"> {
3
+ /** Optional illustration or icon element. */
4
+ illustration?: ReactNode;
5
+ /** Primary message. */
6
+ title: string;
7
+ /** Optional secondary description. */
8
+ description?: string;
9
+ /** Optional call-to-action element (e.g. a Button). */
10
+ action?: ReactNode;
11
+ }
12
+ /**
13
+ * Placeholder shown when a view has no content.
14
+ *
15
+ * Provides an illustration slot, message, and optional CTA.
16
+ */
17
+ export declare const EmptyState: import("react").ForwardRefExoticComponent<EmptyStateProps & import("react").RefAttributes<HTMLDivElement>>;
18
+ //# sourceMappingURL=EmptyState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/data-display/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAc,MAAM,OAAO,CAAC;AAIlF,MAAM,WAAW,eAAgB,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACpE,6CAA6C;IAC7C,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,MAAM,CAAC,EAAE,SAAS,CAAC;CACtB;AAID;;;;GAIG;AACH,eAAO,MAAM,UAAU,4GAgCrB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export type SortDirection = "asc" | "desc";
3
+ export interface SortState {
4
+ /** Column key currently sorted. */
5
+ column: string;
6
+ /** Sort direction. */
7
+ direction: SortDirection;
8
+ }
9
+ export interface TableColumn<T> {
10
+ /** Unique key used for sorting & React keying. */
11
+ key: string;
12
+ /** Column header label. */
13
+ header: ReactNode;
14
+ /** Render the cell content for a given row. */
15
+ cell: (row: T, index: number) => ReactNode;
16
+ /** Enable sorting on this column. @default false */
17
+ sortable?: boolean;
18
+ /**
19
+ * Extract a sortable value from a row.
20
+ * Required for built-in (uncontrolled) sorting.
21
+ * The return type is also used to auto-detect the sort icon style.
22
+ */
23
+ sortValue?: (row: T) => string | number | null | undefined;
24
+ /** Optional header cell className. */
25
+ headerClassName?: string;
26
+ /** Optional body cell className. */
27
+ cellClassName?: string;
28
+ }
29
+ export interface TableProps<T> extends Omit<ComponentPropsWithoutRef<"div">, "children"> {
30
+ /** Column definitions. */
31
+ columns: TableColumn<T>[];
32
+ /** Row data array. */
33
+ data: T[];
34
+ /** Unique key extractor for each row. */
35
+ rowKey: (row: T, index: number) => string | number;
36
+ /** Show striped rows. @default true */
37
+ striped?: boolean;
38
+ /** Controlled sort state. */
39
+ sort?: SortState;
40
+ /** Called when a sortable column header is clicked. */
41
+ onSortChange?: (sort: SortState) => void;
42
+ /** Content shown when data is empty. */
43
+ emptyContent?: ReactNode;
44
+ }
45
+ /**
46
+ * Data table with sortable headers, striped rows, and a responsive scroll wrapper.
47
+ *
48
+ * Accepts generic row type `T` for full type safety.
49
+ */
50
+ export declare const Table: <T>(props: TableProps<T> & {
51
+ ref?: React.Ref<HTMLDivElement>;
52
+ }) => React.ReactElement | null;
53
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../src/components/data-display/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAKjB,MAAM,OAAO,CAAC;AAWf,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,MAAM,WAAW,SAAS;IACtB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,EAAE,aAAa,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,MAAM,EAAE,SAAS,CAAC;IAClB,+CAA+C;IAC/C,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC3C,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IACpF,0BAA0B;IAC1B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,sBAAsB;IACtB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,yCAAyC;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IACnD,uCAAuC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,wCAAwC;IACxC,YAAY,CAAC,EAAE,SAAS,CAAC;CAC5B;AA4CD;;;;GAIG;AACH,eAAO,MAAM,KAAK,EAoKZ,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;CAAE,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { Card, type CardProps } from "./Card";
2
+ export { DescriptionList, type DescriptionItem, type DescriptionListLayout, type DescriptionListProps, } from "./DescriptionList";
3
+ export { EmptyState, type EmptyStateProps } from "./EmptyState";
4
+ export { Table, type SortDirection, type SortState, type TableColumn, type TableProps, } from "./Table";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/data-display/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACH,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACH,KAAK,EACL,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,GAClB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type ReactNode } from "react";
2
+ export type AlertVariant = "success" | "warning" | "error" | "info";
3
+ export interface AlertProps {
4
+ /** Visual variant — controls icon, color, and background. */
5
+ variant: AlertVariant;
6
+ /** Optional bold title above the body. */
7
+ title?: string;
8
+ /** Alert body content. */
9
+ children: ReactNode;
10
+ /** Show a dismiss (×) button. */
11
+ dismissible?: boolean;
12
+ /** Callback fired when the dismiss button is clicked. */
13
+ onDismiss?: () => void;
14
+ /** Additional CSS classes on the root element. */
15
+ className?: string;
16
+ }
17
+ export declare function Alert({ variant, title, children, dismissible, onDismiss, className, }: AlertProps): import("react/jsx-runtime").JSX.Element | null;
18
+ //# sourceMappingURL=Alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/Alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAWjD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,UAAU;IACvB,6DAA6D;IAC7D,OAAO,EAAE,YAAY,CAAC;IACtB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,SAAS,CAAC;IACpB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAoCD,wBAAgB,KAAK,CAAC,EAClB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAmB,EACnB,SAAS,EACT,SAAc,GACjB,EAAE,UAAU,kDAsCZ"}
@@ -0,0 +1,26 @@
1
+ import { type ReactNode } from "react";
2
+ import { type DialogSize } from "./Dialog";
3
+ export interface ConfirmDialogProps {
4
+ /** Whether the dialog is open. */
5
+ open: boolean;
6
+ /** Callback to close without confirming. */
7
+ onCancel: () => void;
8
+ /** Callback when the user confirms the action. */
9
+ onConfirm: () => void;
10
+ /** Dialog title. */
11
+ title: string;
12
+ /** Body message / description. */
13
+ children: ReactNode;
14
+ /** Text for the confirm button. Default: "Confirm". */
15
+ confirmLabel?: string;
16
+ /** Text for the cancel button. Default: "Cancel". */
17
+ cancelLabel?: string;
18
+ /** Danger variant — red confirm button with a warning icon. */
19
+ danger?: boolean;
20
+ /** Show a spinner on the confirm button and disable both buttons. */
21
+ submitting?: boolean;
22
+ /** Width preset. Default: "sm". */
23
+ size?: DialogSize;
24
+ }
25
+ export declare function ConfirmDialog({ open, onCancel, onConfirm, title, children, confirmLabel, cancelLabel, danger, submitting, size, }: ConfirmDialogProps): import("react/jsx-runtime").JSX.Element;
26
+ //# sourceMappingURL=ConfirmDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAU,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAInD,MAAM,WAAW,kBAAkB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,kDAAkD;IAClD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mCAAmC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AAID,wBAAgB,aAAa,CAAC,EAC1B,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAwB,EACxB,WAAsB,EACtB,MAAc,EACd,UAAkB,EAClB,IAAW,GACd,EAAE,kBAAkB,2CAkDpB"}
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from "react";
2
+ export type DialogSize = "sm" | "md" | "lg";
3
+ export interface DialogProps {
4
+ /** Whether the dialog is open. */
5
+ open: boolean;
6
+ /** Callback to close the dialog. */
7
+ onClose: () => void;
8
+ /** Optional dialog title shown in the header. */
9
+ title?: string;
10
+ /** Width preset. Default: "md". */
11
+ size?: DialogSize;
12
+ /** Dialog body content. */
13
+ children: ReactNode;
14
+ /** Optional footer (buttons, etc.). */
15
+ footer?: ReactNode;
16
+ /** Additional CSS classes on the panel. */
17
+ className?: string;
18
+ }
19
+ export declare function Dialog({ open, onClose, title, size, children, footer, className, }: DialogProps): import("react").ReactPortal | null;
20
+ //# sourceMappingURL=Dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM9E,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAW;IACxB,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,oCAAoC;IACpC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,2BAA2B;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,uCAAuC;IACvC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAYD,wBAAgB,MAAM,CAAC,EACnB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAW,EACX,QAAQ,EACR,MAAM,EACN,SAAc,GACjB,EAAE,WAAW,sCA4Hb"}
@@ -0,0 +1,5 @@
1
+ import { type ReactNode } from "react";
2
+ export declare function ToastProvider({ children }: {
3
+ children: ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AA0HjF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CA8BlE"}
@@ -0,0 +1,6 @@
1
+ export { Alert, type AlertProps, type AlertVariant } from "./Alert";
2
+ export { ConfirmDialog, type ConfirmDialogProps } from "./ConfirmDialog";
3
+ export { Dialog, type DialogProps, type DialogSize } from "./Dialog";
4
+ export { ToastProvider } from "./Toast";
5
+ export { useToast, type ToastData, type ToastVariant } from "./toastContext";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export type ToastVariant = "success" | "warning" | "error" | "info";
2
+ export interface ToastData {
3
+ id: string;
4
+ variant: ToastVariant;
5
+ title?: string;
6
+ message: string;
7
+ /** Auto-dismiss duration in ms. 0 = persistent. Default: 5000 */
8
+ duration?: number;
9
+ }
10
+ export type AddToastInput = Omit<ToastData, "id">;
11
+ export interface ToastContextValue {
12
+ addToast: (toast: AddToastInput) => string;
13
+ removeToast: (id: string) => void;
14
+ }
15
+ export declare const ToastContext: import("react").Context<ToastContextValue | null>;
16
+ export declare function useToast(): ToastContextValue;
17
+ //# sourceMappingURL=toastContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toastContext.d.ts","sourceRoot":"","sources":["../../../src/components/feedback/toastContext.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC;IAC3C,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAID,eAAO,MAAM,YAAY,mDAAgD,CAAC;AAE1E,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C"}
@@ -0,0 +1,25 @@
1
+ import type { NavCategory, NavSection } from "./types";
2
+ export interface BurgerDrawerProps {
3
+ /** Whether the drawer is open */
4
+ open: boolean;
5
+ /** Called to close the drawer */
6
+ onClose: () => void;
7
+ /** Top-level categories */
8
+ categories?: NavCategory[];
9
+ /** Active category id */
10
+ activeCategoryId?: string;
11
+ /** Called when a category is selected */
12
+ onCategoryChange?: (id: string) => void;
13
+ /** Sections for the active category */
14
+ sections?: NavSection[];
15
+ /** Active link id */
16
+ activeLinkId?: string;
17
+ /** Called when a link is clicked */
18
+ onLinkClick?: (href: string) => void;
19
+ }
20
+ /**
21
+ * Mobile slide-over drawer that merges TopNav categories and SideNav links.
22
+ * Slides in from the left with a backdrop overlay.
23
+ */
24
+ export declare function BurgerDrawer({ open, onClose, categories, activeCategoryId, onCategoryChange, sections, activeLinkId, onLinkClick, }: BurgerDrawerProps): import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=BurgerDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BurgerDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/layout/BurgerDrawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAC9B,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EACzB,IAAI,EACJ,OAAO,EACP,UAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,QAAa,EACb,YAAY,EACZ,WAAW,GACd,EAAE,iBAAiB,2CAqHnB"}
@@ -0,0 +1,32 @@
1
+ import { type ReactNode } from "react";
2
+ import type { NavCategory, NavSection } from "./types";
3
+ export interface PageShellProps {
4
+ /** Page content */
5
+ children: ReactNode;
6
+ /** Custom logo element for TopNav */
7
+ logo?: ReactNode;
8
+ /** Top-level categories */
9
+ categories?: NavCategory[];
10
+ /** Active category id */
11
+ activeCategoryId?: string;
12
+ /** Called when a category tab is clicked */
13
+ onCategoryChange?: (id: string) => void;
14
+ /** Sidebar sections for the active category */
15
+ sections?: NavSection[];
16
+ /** Active link id for sidebar highlight */
17
+ activeLinkId?: string;
18
+ /** Called when a sidebar link is clicked */
19
+ onLinkClick?: (href: string) => void;
20
+ /** Slot for TopNav right-side actions */
21
+ actions?: ReactNode;
22
+ /** Whether the sidebar is collapsed */
23
+ sideNavCollapsed?: boolean;
24
+ }
25
+ /**
26
+ * Full application shell composing TopNav + SideNav + content area.
27
+ *
28
+ * - Desktop: fixed top bar + sidebar + scrollable main
29
+ * - Mobile: fixed top bar + burger drawer + full-width main
30
+ */
31
+ export declare function PageShell({ children, logo, categories, activeCategoryId, onCategoryChange, sections, activeLinkId, onLinkClick, actions, sideNavCollapsed, }: PageShellProps): import("react/jsx-runtime").JSX.Element;
32
+ //# sourceMappingURL=PageShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageShell.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC3B,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,qCAAqC;IACrC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACtB,QAAQ,EACR,IAAI,EACJ,UAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,QAAa,EACb,YAAY,EACZ,WAAW,EACX,OAAO,EACP,gBAAwB,GAC3B,EAAE,cAAc,2CAkDhB"}
@@ -0,0 +1,22 @@
1
+ import type { NavSection } from "./types";
2
+ export interface SideNavProps {
3
+ /** Grouped navigation sections for the active category */
4
+ sections?: NavSection[];
5
+ /** Currently active link id (for highlight) */
6
+ activeLinkId?: string;
7
+ /** Called when a link is clicked */
8
+ onLinkClick?: (href: string) => void;
9
+ /** Whether the sidebar is collapsed to icon-only mode */
10
+ collapsed?: boolean;
11
+ /** Called to toggle collapsed state */
12
+ onToggleCollapse?: () => void;
13
+ }
14
+ /**
15
+ * Sidebar navigation with grouped, collapsible sections.
16
+ *
17
+ * - 256px wide (or 64px collapsed)
18
+ * - Hidden on mobile (content moves into BurgerDrawer)
19
+ * - Fixed height, scrollable when content overflows
20
+ */
21
+ export declare function SideNav({ sections, activeLinkId, onLinkClick, collapsed, }: SideNavProps): import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=SideNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNav.d.ts","sourceRoot":"","sources":["../../../src/components/layout/SideNav.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,WAAW,YAAY;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EACpB,QAAa,EACb,YAAY,EACZ,WAAW,EACX,SAAiB,GACpB,EAAE,YAAY,2CAqBd"}
@@ -0,0 +1,24 @@
1
+ import { type ReactNode } from "react";
2
+ import type { NavCategory } from "./types";
3
+ export interface TopNavProps {
4
+ /** EPFL logo or app name element */
5
+ logo?: ReactNode;
6
+ /** Top-level navigation categories */
7
+ categories?: NavCategory[];
8
+ /** Currently active category id */
9
+ activeCategoryId?: string;
10
+ /** Called when a category tab is clicked */
11
+ onCategoryChange?: (id: string) => void;
12
+ /** Slot for right-side actions (language switcher, theme toggle, avatar) */
13
+ actions?: ReactNode;
14
+ /** Called when the mobile burger button is clicked */
15
+ onBurgerClick?: () => void;
16
+ }
17
+ /**
18
+ * Fixed top navigation bar.
19
+ *
20
+ * Desktop: Logo + category tabs + actions.
21
+ * Mobile (<lg): Logo + burger + actions.
22
+ */
23
+ export declare function TopNav({ logo, categories, activeCategoryId, onCategoryChange, actions, onBurgerClick, }: TopNavProps): import("react/jsx-runtime").JSX.Element;
24
+ //# sourceMappingURL=TopNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopNav.d.ts","sourceRoot":"","sources":["../../../src/components/layout/TopNav.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,WAAW;IACxB,oCAAoC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sCAAsC;IACtC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,EACnB,IAAI,EACJ,UAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,aAAa,GAChB,EAAE,WAAW,2CAiDb"}
@@ -0,0 +1,10 @@
1
+ export { TopNav } from "./TopNav";
2
+ export type { TopNavProps } from "./TopNav";
3
+ export { SideNav } from "./SideNav";
4
+ export type { SideNavProps } from "./SideNav";
5
+ export { BurgerDrawer } from "./BurgerDrawer";
6
+ export type { BurgerDrawerProps } from "./BurgerDrawer";
7
+ export { PageShell } from "./PageShell";
8
+ export type { PageShellProps } from "./PageShell";
9
+ export type { IconComponent, NavCategory, NavLink, NavSection, NavigationConfig } from "./types";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ComponentType, SVGAttributes } from "react";
2
+ /** Bootstrap-icon component type from react-bootstrap-icons */
3
+ export type IconComponent = ComponentType<SVGAttributes<SVGElement> & {
4
+ size?: number;
5
+ }>;
6
+ /** A top-level category shown in the TopNav */
7
+ export interface NavCategory {
8
+ id: string;
9
+ label: string;
10
+ icon?: IconComponent;
11
+ }
12
+ /** A single navigation link inside a SideNav section */
13
+ export interface NavLink {
14
+ id: string;
15
+ label: string;
16
+ href: string;
17
+ icon?: IconComponent;
18
+ }
19
+ /** A grouped section of links in the SideNav */
20
+ export interface NavSection {
21
+ id: string;
22
+ title?: string;
23
+ links: NavLink[];
24
+ }
25
+ /** Full navigation config consumed by the layout shell */
26
+ export interface NavigationConfig {
27
+ categories: NavCategory[];
28
+ /** Sections for the currently active category */
29
+ sections: NavSection[];
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/layout/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1D,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEzF,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wDAAwD;AACxD,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,EAAE,UAAU,EAAE,CAAC;CAC1B"}
@@ -0,0 +1,25 @@
1
+ import { type ComponentPropsWithoutRef } from "react";
2
+ declare const sizeClasses: {
3
+ readonly sm: "size-8 text-caption";
4
+ readonly md: "size-10 text-small";
5
+ readonly lg: "size-14 text-body";
6
+ };
7
+ export type AvatarSize = keyof typeof sizeClasses;
8
+ export interface AvatarProps extends ComponentPropsWithoutRef<"span"> {
9
+ /** Image URL. Falls back to initials when absent or broken. */
10
+ src?: string | null;
11
+ /** Full name used to derive initials. */
12
+ name: string;
13
+ /** Size preset. @default "md" */
14
+ size?: AvatarSize;
15
+ /** Alt text for the image. Defaults to `name`. */
16
+ alt?: string;
17
+ }
18
+ /**
19
+ * User avatar with an image that falls back to initials.
20
+ *
21
+ * Always renders a circular element. Sizes: `sm` (32 px), `md` (40 px), `lg` (56 px).
22
+ */
23
+ export declare function Avatar({ src, name, size, alt, className, ...rest }: AvatarProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAY,MAAM,OAAO,CAAC;AAIhE,QAAA,MAAM,WAAW;;;;CAIP,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD,MAAM,WAAW,WAAY,SAAQ,wBAAwB,CAAC,MAAM,CAAC;IACjE,+DAA+D;IAC/D,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAW,EAAE,GAAG,EAAE,SAAc,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,2CA6B3F"}
@@ -0,0 +1,34 @@
1
+ import type { ComponentPropsWithoutRef } from "react";
2
+ declare const colorClasses: {
3
+ readonly default: "bg-bg-tertiary text-text-primary";
4
+ readonly success: "bg-success-bg text-success";
5
+ readonly warning: "bg-warning-bg text-warning";
6
+ readonly error: "bg-error-bg text-error";
7
+ readonly info: "bg-info-bg text-info";
8
+ };
9
+ export type BadgeColor = keyof typeof colorClasses;
10
+ export interface DotBadgeProps extends ComponentPropsWithoutRef<"span"> {
11
+ /** Semantic color. @default "default" */
12
+ color?: BadgeColor;
13
+ /** Render as a small status dot instead of a text pill. */
14
+ dot: true;
15
+ children?: never;
16
+ }
17
+ export interface TextBadgeProps extends ComponentPropsWithoutRef<"span"> {
18
+ /** Semantic color. @default "default" */
19
+ color?: BadgeColor;
20
+ dot?: false;
21
+ children: React.ReactNode;
22
+ }
23
+ export type BadgeProps = DotBadgeProps | TextBadgeProps;
24
+ /**
25
+ * Status indicator — either a small colored dot or a text pill.
26
+ *
27
+ * ```tsx
28
+ * <Badge color="success" dot /> // status dot
29
+ * <Badge color="error">Failed</Badge> // text pill
30
+ * ```
31
+ */
32
+ export declare function Badge({ color, dot, className, children, ...rest }: BadgeProps): import("react/jsx-runtime").JSX.Element;
33
+ export {};
34
+ //# sourceMappingURL=Badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAItD,QAAA,MAAM,YAAY;;;;;;CAMR,CAAC;AAUX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,YAAY,CAAC;AAInD,MAAM,WAAW,aAAc,SAAQ,wBAAwB,CAAC,MAAM,CAAC;IACnE,yCAAyC;IACzC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,2DAA2D;IAC3D,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,KAAK,CAAC;CACpB;AAID,MAAM,WAAW,cAAe,SAAQ,wBAAwB,CAAC,MAAM,CAAC;IACpE,yCAAyC;IACzC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,EAAE,KAAiB,EAAE,GAAG,EAAE,SAAc,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,2CAwB9F"}
@@ -0,0 +1,35 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ declare const variantClasses: {
3
+ readonly primary: "bg-primary text-white hover:bg-primary-hover focus-visible:ring-primary";
4
+ readonly secondary: "border border-border text-text-primary bg-bg-primary hover:bg-bg-tertiary focus-visible:ring-primary";
5
+ readonly ghost: "text-text-primary hover:bg-bg-tertiary focus-visible:ring-primary";
6
+ readonly danger: "bg-error text-white hover:opacity-90 focus-visible:ring-error";
7
+ };
8
+ declare const sizeClasses: {
9
+ readonly sm: "text-small px-3 py-1 gap-1.5";
10
+ readonly md: "text-body px-4 py-2 gap-2";
11
+ readonly lg: "text-body px-5 py-2.5 gap-2";
12
+ };
13
+ export type ButtonVariant = keyof typeof variantClasses;
14
+ export type ButtonSize = keyof typeof sizeClasses;
15
+ export interface ButtonProps extends ComponentPropsWithoutRef<"button"> {
16
+ /** Visual style variant. @default "primary" */
17
+ variant?: ButtonVariant;
18
+ /** Size preset. @default "md" */
19
+ size?: ButtonSize;
20
+ /** Show a spinner and disable interaction. */
21
+ loading?: boolean;
22
+ /** Optional icon before children. */
23
+ iconLeft?: ReactNode;
24
+ /** Optional icon after children. */
25
+ iconRight?: ReactNode;
26
+ }
27
+ /**
28
+ * Primary action element.
29
+ *
30
+ * Supports four variants (`primary`, `secondary`, `ghost`, `danger`),
31
+ * three sizes (`sm`, `md`, `lg`), and a `loading` state.
32
+ */
33
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
34
+ export {};
35
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAc,MAAM,OAAO,CAAC;AAKlF,QAAA,MAAM,cAAc;;;;;CAMV,CAAC;AAEX,QAAA,MAAM,WAAW;;;;CAIP,CAAC;AAQX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,cAAc,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD,MAAM,WAAW,WAAY,SAAQ,wBAAwB,CAAC,QAAQ,CAAC;IACnE,+CAA+C;IAC/C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iCAAiC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,oCAAoC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,2GA2CjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
+ export interface CheckboxProps extends Omit<ComponentPropsWithoutRef<"input">, "type"> {
3
+ /** Label displayed next to the checkbox. */
4
+ label?: ReactNode;
5
+ /** Put the checkbox in an indeterminate state. */
6
+ indeterminate?: boolean;
7
+ /** Helper text below the label. */
8
+ helperText?: string;
9
+ /** Error message — replaces helper text and triggers error styling. */
10
+ error?: string;
11
+ }
12
+ /**
13
+ * Custom-styled checkbox with indeterminate support.
14
+ */
15
+ export declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
16
+ //# sourceMappingURL=Checkbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAClF,4CAA4C;IAC5C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,4GAmFnB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type Placement } from "@floating-ui/react";
2
+ import { type ReactNode } from "react";
3
+ export interface DropdownMenuProps {
4
+ /** The trigger element that opens the menu. */
5
+ trigger: ReactNode;
6
+ /** Menu items. Use `DropdownItem` and `DropdownDivider`. */
7
+ children: ReactNode;
8
+ /** Preferred placement of the floating menu. @default "bottom-start" */
9
+ placement?: Placement;
10
+ /** Additional CSS classes on the menu panel. */
11
+ className?: string;
12
+ }
13
+ export interface DropdownItemProps {
14
+ /** Item label or content. */
15
+ children: ReactNode;
16
+ /** Optional icon rendered before the label. */
17
+ icon?: ReactNode;
18
+ /** Danger / destructive styling. */
19
+ danger?: boolean;
20
+ /** Whether the item is disabled. */
21
+ disabled?: boolean;
22
+ /** Click handler. */
23
+ onClick?: () => void;
24
+ /** Additional CSS classes. */
25
+ className?: string;
26
+ }
27
+ export declare function DropdownDivider(): import("react/jsx-runtime").JSX.Element;
28
+ export declare const DropdownItem: import("react").ForwardRefExoticComponent<DropdownItemProps & import("react").RefAttributes<HTMLButtonElement>>;
29
+ export declare function DropdownMenu({ trigger, children, placement, className, }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
30
+ //# sourceMappingURL=DropdownMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,SAAS,EAQjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGH,KAAK,SAAS,EAKjB,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,iBAAiB;IAC9B,+CAA+C;IAC/C,OAAO,EAAE,SAAS,CAAC;IACnB,4DAA4D;IAC5D,QAAQ,EAAE,SAAS,CAAC;IACpB,wEAAwE;IACxE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,6BAA6B;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAkBD,wBAAgB,eAAe,4CAE9B;AAID,eAAO,MAAM,YAAY,iHAoCvB,CAAC;AAIH,wBAAgB,YAAY,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,SAA0B,EAC1B,SAAc,GACjB,EAAE,iBAAiB,2CAgEnB"}