@pattern-stack/frontend-patterns 0.2.0-alpha.1 → 0.2.0-alpha.4

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 (57) hide show
  1. package/dist/atoms/components/core/Badge/Badge.d.ts +1 -1
  2. package/dist/atoms/components/data/DataTable/DataTable.d.ts +2 -2
  3. package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -1
  4. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +29 -4
  5. package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -1
  6. package/dist/atoms/components/data/DataTable/index.d.ts +1 -0
  7. package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -1
  8. package/dist/atoms/components/data/index.d.ts +1 -1
  9. package/dist/atoms/components/data/index.d.ts.map +1 -1
  10. package/dist/atoms/hooks/index.d.ts +3 -0
  11. package/dist/atoms/hooks/index.d.ts.map +1 -1
  12. package/dist/atoms/hooks/useEntityData.d.ts +36 -0
  13. package/dist/atoms/hooks/useEntityData.d.ts.map +1 -0
  14. package/dist/atoms/hooks/useFieldMetadata.d.ts +18 -0
  15. package/dist/atoms/hooks/useFieldMetadata.d.ts.map +1 -0
  16. package/dist/atoms/hooks/useResponsiveTable.d.ts +103 -0
  17. package/dist/atoms/hooks/useResponsiveTable.d.ts.map +1 -0
  18. package/dist/atoms/primitives/sheet.d.ts +23 -0
  19. package/dist/atoms/primitives/sheet.d.ts.map +1 -0
  20. package/dist/atoms/services/auth-service.d.ts.map +1 -1
  21. package/dist/atoms/types/auth.d.ts +51 -0
  22. package/dist/atoms/types/auth.d.ts.map +1 -1
  23. package/dist/atoms/types/index.d.ts +1 -0
  24. package/dist/atoms/types/index.d.ts.map +1 -1
  25. package/dist/atoms/types/ui-config.d.ts +35 -11
  26. package/dist/atoms/types/ui-config.d.ts.map +1 -1
  27. package/dist/atoms/types/ui-metadata.d.ts +103 -0
  28. package/dist/atoms/types/ui-metadata.d.ts.map +1 -0
  29. package/dist/atoms/utils/field-detection.d.ts +2 -2
  30. package/dist/atoms/utils/field-detection.d.ts.map +1 -1
  31. package/dist/atoms/utils/ui-mapping.d.ts +9 -3
  32. package/dist/atoms/utils/ui-mapping.d.ts.map +1 -1
  33. package/dist/features/auth/hooks/useAuth.d.ts.map +1 -1
  34. package/dist/frontend-patterns.css +1 -4554
  35. package/dist/index.d.ts +5 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.es.js +4329 -16086
  38. package/dist/index.es.js.map +1 -1
  39. package/dist/index.js +4329 -16085
  40. package/dist/index.js.map +1 -1
  41. package/dist/molecules/layout/ListToolbar/ListToolbar.d.ts +37 -0
  42. package/dist/molecules/layout/ListToolbar/ListToolbar.d.ts.map +1 -0
  43. package/dist/molecules/layout/ListToolbar/index.d.ts +2 -0
  44. package/dist/molecules/layout/ListToolbar/index.d.ts.map +1 -0
  45. package/dist/molecules/layout/PageTitle/PageTitle.d.ts +17 -0
  46. package/dist/molecules/layout/PageTitle/PageTitle.d.ts.map +1 -0
  47. package/dist/molecules/layout/PageTitle/index.d.ts +2 -0
  48. package/dist/molecules/layout/PageTitle/index.d.ts.map +1 -0
  49. package/dist/molecules/layout/index.d.ts +2 -0
  50. package/dist/molecules/layout/index.d.ts.map +1 -1
  51. package/dist/templates/ListPageTemplate.d.ts +21 -0
  52. package/dist/templates/ListPageTemplate.d.ts.map +1 -0
  53. package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
  54. package/dist/templates/factory.d.ts.map +1 -1
  55. package/dist/templates/index.d.ts +1 -0
  56. package/dist/templates/index.d.ts.map +1 -1
  57. package/package.json +4 -3
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const badgeVariants: (props?: {
4
- variant?: "success" | "secondary" | "default" | "info" | "warning" | "destructive" | "outline";
4
+ variant?: "success" | "secondary" | "warning" | "info" | "default" | "destructive" | "outline";
5
5
  size?: "sm" | "lg" | "default";
6
6
  } & import("class-variance-authority/types").ClassProp) => string;
7
7
  export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
@@ -1,5 +1,5 @@
1
1
  import type { IListLoadable } from "../../../types";
2
2
  import type { DataTableProps } from "./DataTable.types";
3
- export type { Column, ResponsiveColumn, DataTableProps, } from "./DataTable.types";
4
- export declare function DataTable<T extends Record<string, unknown>>({ data, columns, searchPlaceholder, pageSize, showPagination, showSearch, onRowClick, emptyMessage, className, hover, isLoading, loadingItemCount, responsive, renderMobileCard, ui, }: DataTableProps<T> & IListLoadable): import("react/jsx-runtime").JSX.Element;
3
+ export type { Column, ResponsiveColumn, DataTableProps, DataTableColumn, } from "./DataTable.types";
4
+ export declare function DataTable<T extends Record<string, unknown>>({ data, columns, searchPlaceholder, pageSize, showPagination, showSearch, onRowClick, emptyMessage, className, hover, isLoading, loadingItemCount, responsive, renderMobileCard, ui, error, errorTitle, errorRetry, }: DataTableProps<T> & IListLoadable): import("react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=DataTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../src/atoms/components/data/DataTable/DataTable.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AASpD,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAK3B,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAI3B,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3D,IAAI,EACJ,OAAO,EACP,iBAA+B,EAC/B,QAAa,EACb,cAAqB,EACrB,UAAiB,EACjB,UAAU,EACV,YAAkC,EAClC,SAAc,EACd,KAAa,EACb,SAAiB,EACjB,gBAAoB,EACpB,UAAiB,EACjB,gBAAgB,EAChB,EAAE,GACH,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,2CA0XnC"}
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../../../src/atoms/components/data/DataTable/DataTable.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AASpD,OAAO,KAAK,EAGV,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAM3B,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AA4B3B,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3D,IAAI,EACJ,OAAO,EACP,iBAA+B,EAC/B,QAAa,EACb,cAAqB,EACrB,UAAiB,EACjB,UAAU,EACV,YAAkC,EAClC,SAAc,EACd,KAAa,EACb,SAAiB,EACjB,gBAAoB,EACpB,UAAiB,EACjB,gBAAgB,EAChB,EAAE,EACF,KAAY,EACZ,UAAU,EACV,UAAU,GACX,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,2CAqanC"}
@@ -1,5 +1,6 @@
1
1
  import type { ResponsiveColumnConfig, DisplayMode, ResponsiveValue, Breakpoint } from "../../../config/responsive";
2
- import type { UIConfig } from "../../../types/ui-config";
2
+ import type { UIConfig, UIType, FieldFormat } from "../../../types/ui-config";
3
+ import type { ColumnMetadata } from "../../../types/ui-metadata";
3
4
  export interface Column<T> {
4
5
  key: string;
5
6
  header: string | React.ReactNode;
@@ -7,8 +8,21 @@ export interface Column<T> {
7
8
  sortable?: boolean;
8
9
  filterable?: boolean;
9
10
  width?: string;
10
- /** Auto-render badges for status/category columns */
11
- type?: "status" | "category" | "default";
11
+ /**
12
+ * Field type for automatic rendering.
13
+ * When set, DataTable uses defaultFieldRenderers to format the cell.
14
+ * Overridden by custom `cell` renderer if provided.
15
+ *
16
+ * Supports all UIType values: text, password, number, money, percent,
17
+ * date, datetime, email, url, phone, boolean, badge, status, entity,
18
+ * user, json, image, rating, color, file.
19
+ */
20
+ type?: UIType;
21
+ /**
22
+ * Format configuration for typed fields.
23
+ * Used by money (currency, decimals, locale), date (locale), status (statusColors), etc.
24
+ */
25
+ format?: FieldFormat;
12
26
  }
13
27
  export interface ResponsiveColumn<T> extends Column<T>, ResponsiveColumnConfig {
14
28
  /** Responsive width adjustments */
@@ -22,9 +36,14 @@ export interface ResponsiveColumn<T> extends Column<T>, ResponsiveColumnConfig {
22
36
  /** Priority for column visibility (higher = more important) */
23
37
  priority?: number;
24
38
  }
39
+ /**
40
+ * Union type for DataTable columns - accepts both internal Column format
41
+ * and backend ColumnMetadata format for seamless API integration.
42
+ */
43
+ export type DataTableColumn<T> = Column<T> | ResponsiveColumn<T> | ColumnMetadata;
25
44
  export interface DataTableProps<T> {
26
45
  data: T[];
27
- columns: Column<T>[] | ResponsiveColumn<T>[];
46
+ columns: DataTableColumn<T>[];
28
47
  searchPlaceholder?: string;
29
48
  pageSize?: number;
30
49
  showPagination?: boolean;
@@ -47,5 +66,11 @@ export interface DataTableProps<T> {
47
66
  }) => React.ReactNode;
48
67
  /** UI configuration for automatic field rendering */
49
68
  ui?: UIConfig<T>;
69
+ /** Error state - renders error message instead of table */
70
+ error?: Error | string | null;
71
+ /** Custom error title (default: "Error loading data") */
72
+ errorTitle?: string;
73
+ /** Callback for retry button */
74
+ errorRetry?: () => void;
50
75
  }
51
76
  //# sourceMappingURL=DataTable.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.types.d.ts","sourceRoot":"","sources":["../../../../../src/atoms/components/data/DataTable/DataTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,UAAU,EACX,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,CACjC,SAAQ,MAAM,CAAC,CAAC,CAAC,EACf,sBAAsB;IACxB,mCAAmC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,yCAAyC;IACzC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,CAAC,EAAE,CAAC;QACV,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KACjC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,qDAAqD;IACrD,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAClB"}
1
+ {"version":3,"file":"DataTable.types.d.ts","sourceRoot":"","sources":["../../../../../src/atoms/components/data/DataTable/DataTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,UAAU,EACX,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,CACjC,SAAQ,MAAM,CAAC,CAAC,CAAC,EACf,sBAAsB;IACxB,mCAAmC;IACnC,eAAe,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,yCAAyC;IACzC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,6CAA6C;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;AAElF,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,CAAC,EAAE,CAAC;QACV,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;KACjC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,qDAAqD;IACrD,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9B,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB"}
@@ -1,3 +1,4 @@
1
1
  export * from "./DataTable";
2
2
  export * from "./TableCellWithTooltip";
3
+ export type { DataTableColumn } from "./DataTable.types";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/atoms/components/data/DataTable/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/atoms/components/data/DataTable/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { DataTable, type DataTableProps, type Column, type ResponsiveColumn, } from "./DataTable";
1
+ export { DataTable, type DataTableProps, type Column, type ResponsiveColumn, type DataTableColumn, } from "./DataTable";
2
2
  export { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, TableFooter, type TableProps, } from "./Table";
3
3
  export { DataBadge, type DataBadgeProps } from "./DataBadge";
4
4
  export { IconBadge, type IconBadgeProps } from "./IconBadge";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/atoms/components/data/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,EACL,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/atoms/components/data/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,EACL,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC"}
@@ -2,4 +2,7 @@ export * from "./use-toast";
2
2
  export * from "./useApi";
3
3
  export * from "./useHealth";
4
4
  export * from "./useResponsive";
5
+ export * from "./useFieldMetadata";
6
+ export * from "./useResponsiveTable";
7
+ export * from "./useEntityData";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/hooks/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { ColumnMetadata } from "../types/ui-metadata";
2
+ interface UseEntityDataOptions {
3
+ /** View context for metadata (default: 'list') */
4
+ view?: "list" | "detail" | "form";
5
+ /** Custom source ID for tenant-specific fields */
6
+ sourceId?: string;
7
+ /** Page size limit */
8
+ limit?: number;
9
+ /** Page offset */
10
+ offset?: number;
11
+ /** Filter parameters */
12
+ filters?: Record<string, unknown>;
13
+ /** Whether queries are enabled */
14
+ enabled?: boolean;
15
+ }
16
+ interface UseEntityDataResult<T> {
17
+ /** Entity data array */
18
+ data: T[];
19
+ /** Column metadata for DataTable */
20
+ columns: ColumnMetadata[];
21
+ /** Total count from API */
22
+ totalCount: number;
23
+ /** Combined loading state */
24
+ isLoading: boolean;
25
+ /** Data query loading state */
26
+ isLoadingData: boolean;
27
+ /** Metadata query loading state */
28
+ isLoadingMetadata: boolean;
29
+ /** First error from either query */
30
+ error: Error | null;
31
+ /** Refetch both queries */
32
+ refetch: () => void;
33
+ }
34
+ export declare function useEntityData<T>(entity: string, options?: UseEntityDataOptions): UseEntityDataResult<T>;
35
+ export {};
36
+ //# sourceMappingURL=useEntityData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEntityData.d.ts","sourceRoot":"","sources":["../../../src/atoms/hooks/useEntityData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAE9B,UAAU,oBAAoB;IAC5B,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAOD,UAAU,mBAAmB,CAAC,CAAC;IAC7B,wBAAwB;IACxB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,oCAAoC;IACpC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oCAAoC;IACpC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CAAC,CAAC,CAAC,CA8DxB"}
@@ -0,0 +1,18 @@
1
+ import type { ColumnMetadataResponse } from "../types/ui-metadata";
2
+ interface UseFieldMetadataOptions {
3
+ entity: string;
4
+ view?: "list" | "detail" | "form";
5
+ enabled?: boolean;
6
+ }
7
+ /**
8
+ * Fetch field metadata from backend for dynamic UI rendering.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * const { data, isLoading } = useFieldMetadata({ entity: "accounts" });
13
+ * // data.columns contains ColumnMetadata[]
14
+ * ```
15
+ */
16
+ export declare function useFieldMetadata({ entity, view, enabled, }: UseFieldMetadataOptions): import("@tanstack/react-query").UseQueryResult<ColumnMetadataResponse, Error>;
17
+ export {};
18
+ //# sourceMappingURL=useFieldMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFieldMetadata.d.ts","sourceRoot":"","sources":["../../../src/atoms/hooks/useFieldMetadata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,IAAa,EACb,OAAc,GACf,EAAE,uBAAuB,iFAazB"}
@@ -0,0 +1,103 @@
1
+ export type TableViewMode = "full" | "compact" | "cards";
2
+ export interface UseResponsiveTableOptions {
3
+ /**
4
+ * Initial view mode
5
+ * @default "full"
6
+ */
7
+ initialView?: TableViewMode;
8
+ /**
9
+ * Whether to enable automatic view switching based on overflow
10
+ * @default true
11
+ */
12
+ autoSwitch?: boolean;
13
+ /**
14
+ * Minimum width (px) below which to always show cards
15
+ * This is a fallback for very narrow containers
16
+ * @default 400
17
+ */
18
+ minWidthForCompact?: number;
19
+ /**
20
+ * Debounce delay (ms) for resize/overflow checks
21
+ * @default 100
22
+ */
23
+ debounceMs?: number;
24
+ /**
25
+ * Callback when view mode changes
26
+ */
27
+ onViewChange?: (view: TableViewMode) => void;
28
+ }
29
+ export interface UseResponsiveTableResult {
30
+ /**
31
+ * Current view mode (full, compact, or cards)
32
+ */
33
+ viewMode: TableViewMode;
34
+ /**
35
+ * Manually set the view mode (disables auto-switching)
36
+ */
37
+ setViewMode: (mode: TableViewMode) => void;
38
+ /**
39
+ * Re-enable auto-switching after manual override
40
+ */
41
+ enableAutoSwitch: () => void;
42
+ /**
43
+ * Whether auto-switching is currently enabled
44
+ */
45
+ isAutoSwitching: boolean;
46
+ /**
47
+ * Ref to attach to the full table container for overflow detection
48
+ */
49
+ fullTableRef: React.RefObject<HTMLDivElement | null>;
50
+ /**
51
+ * Ref to attach to the compact table container for overflow detection
52
+ */
53
+ compactTableRef: React.RefObject<HTMLDivElement | null>;
54
+ /**
55
+ * Current overflow state for debugging
56
+ */
57
+ overflowState: {
58
+ fullOverflows: boolean;
59
+ compactOverflows: boolean;
60
+ };
61
+ }
62
+ /**
63
+ * Hook for responsive table view switching based on content overflow.
64
+ *
65
+ * Instead of arbitrary breakpoints, this hook detects when tables
66
+ * would require horizontal scrolling and switches to a more compact view.
67
+ *
68
+ * View hierarchy: full → compact → cards
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * const {
73
+ * viewMode,
74
+ * setViewMode,
75
+ * fullTableRef,
76
+ * compactTableRef,
77
+ * isAutoSwitching
78
+ * } = useResponsiveTable();
79
+ *
80
+ * return (
81
+ * <div>
82
+ * {viewMode === 'full' && (
83
+ * <div ref={fullTableRef}>
84
+ * <DataTable columns={fullColumns} ... />
85
+ * </div>
86
+ * )}
87
+ * {viewMode === 'compact' && (
88
+ * <div ref={compactTableRef}>
89
+ * <DataTable columns={compactColumns} ... />
90
+ * </div>
91
+ * )}
92
+ * {viewMode === 'cards' && <CardList ... />}
93
+ * </div>
94
+ * );
95
+ * ```
96
+ */
97
+ export declare function useResponsiveTable(options?: UseResponsiveTableOptions): UseResponsiveTableResult;
98
+ /**
99
+ * Simplified hook that just reports if a container has overflow
100
+ * Useful for custom overflow detection logic
101
+ */
102
+ export declare function useOverflowDetection(ref: React.RefObject<HTMLElement>): boolean;
103
+ //# sourceMappingURL=useResponsiveTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResponsiveTable.d.ts","sourceRoot":"","sources":["../../../src/atoms/hooks/useResponsiveTable.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;OAEG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAE7B;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAExD;;OAEG;IACH,aAAa,EAAE;QACb,aAAa,EAAE,OAAO,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAiL1B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAChC,OAAO,CAoBT"}
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ import * as SheetPrimitive from "@radix-ui/react-dialog";
3
+ declare const Sheet: React.FC<SheetPrimitive.DialogProps>;
4
+ declare const SheetTrigger: React.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
7
+ declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content> {
9
+ side?: "top" | "bottom" | "left" | "right";
10
+ }
11
+ declare const SheetContent: React.ForwardRefExoticComponent<SheetContentProps & React.RefAttributes<HTMLDivElement>>;
12
+ declare const SheetHeader: {
13
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
14
+ displayName: string;
15
+ };
16
+ declare const SheetFooter: {
17
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
18
+ displayName: string;
19
+ };
20
+ declare const SheetTitle: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
21
+ declare const SheetDescription: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
22
+ export { Sheet, SheetPortal, SheetOverlay, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
23
+ //# sourceMappingURL=sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/atoms/primitives/sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAC;AAIzD,QAAA,MAAM,KAAK,sCAAsB,CAAC;AAClC,QAAA,MAAM,YAAY,6GAAyB,CAAC;AAC5C,QAAA,MAAM,UAAU,2GAAuB,CAAC;AACxC,QAAA,MAAM,WAAW,4CAAwB,CAAC;AAE1C,QAAA,MAAM,YAAY,6JAYhB,CAAC;AAUH,UAAU,iBACR,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC;IACrE,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED,QAAA,MAAM,YAAY,0FAsBhB,CAAC;AAGH,QAAA,MAAM,WAAW;8BAGd,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAQtC,CAAC;AAGF,QAAA,MAAM,WAAW;8BAGd,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAQtC,CAAC;AAGF,QAAA,MAAM,UAAU,mKASd,CAAC;AAGH,QAAA,MAAM,gBAAgB,6KASpB,CAAC;AAGH,OAAO,EACL,KAAK,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../../src/atoms/services/auth-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,gBAAgB,EAGhB,SAAS,EACV,MAAM,UAAU,CAAC;AAElB,qBAAa,WAAW,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,cAAc,CAA8B;gBAExC,MAAM,EAAE,UAAU;IAS9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,UAAU;IAclB,YAAY,IAAI,SAAS,GAAG,IAAI;IAchC,OAAO,CAAC,YAAY;IAUpB,aAAa,IAAI,CAAC,GAAG,IAAI;IAYzB,OAAO,CAAC,aAAa;IAIrB,SAAS,IAAI,IAAI;IAOX,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBhD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBrB,mBAAmB;IA6BjC,OAAO,CAAC,oBAAoB;IAc5B,cAAc,IAAI,OAAO;IAOzB,kBAAkB,IAAI,OAAO;IAQvB,cAAc,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAanC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB9B"}
1
+ {"version":3,"file":"auth-service.d.ts","sourceRoot":"","sources":["../../../src/atoms/services/auth-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,gBAAgB,EAGhB,SAAS,EACV,MAAM,UAAU,CAAC;AAqBlB,qBAAa,WAAW,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IACpD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,cAAc,CAA8B;gBAExC,MAAM,EAAE,UAAU;IAS9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,UAAU;IAclB,YAAY,IAAI,SAAS,GAAG,IAAI;IAchC,OAAO,CAAC,YAAY;IAUpB,aAAa,IAAI,CAAC,GAAG,IAAI;IAYzB,OAAO,CAAC,aAAa;IAIrB,SAAS,IAAI,IAAI;IAOX,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAyChD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBrB,mBAAmB;IAgDjC,OAAO,CAAC,oBAAoB;IAc5B,cAAc,IAAI,OAAO;IAOzB,kBAAkB,IAAI,OAAO;IAQvB,cAAc,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAanC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB9B"}
@@ -1,3 +1,18 @@
1
+ /**
2
+ * Auth Configuration Types
3
+ *
4
+ * React-specific configuration for the auth system.
5
+ * Domain types (User, LoginRequest, etc.) should be generated
6
+ * from the backend OpenAPI spec.
7
+ */
8
+ /**
9
+ * @deprecated Use generated UserInfo or UserResponse from @/generated/types instead.
10
+ * This is kept for backward compatibility during migration.
11
+ *
12
+ * After running `pattern-stack generate hooks` against backend:
13
+ * - UserInfo: Basic user info in auth responses
14
+ * - UserResponse: Full user data for /me endpoint
15
+ */
1
16
  export interface BaseUser {
2
17
  id: string;
3
18
  email: string;
@@ -6,13 +21,23 @@ export interface BaseUser {
6
21
  roles?: string[];
7
22
  permissions?: string[];
8
23
  }
24
+ /**
25
+ * @deprecated Use BaseUser directly or generated UserInfo type.
26
+ */
9
27
  export type ExtendedUser = BaseUser;
28
+ /**
29
+ * @deprecated Use generated RegisterRequest from @/generated/types instead.
30
+ */
10
31
  export interface RegisterData {
11
32
  email: string;
12
33
  password: string;
13
34
  name?: string;
14
35
  username?: string;
15
36
  }
37
+ /**
38
+ * Auth endpoint configuration.
39
+ * Frontend-specific configuration for API endpoints.
40
+ */
16
41
  export interface AuthEndpoints {
17
42
  login: string;
18
43
  register?: string;
@@ -20,6 +45,10 @@ export interface AuthEndpoints {
20
45
  me: string;
21
46
  logout?: string;
22
47
  }
48
+ /**
49
+ * Auth system configuration.
50
+ * Frontend-specific configuration for the auth provider.
51
+ */
23
52
  export interface AuthConfig {
24
53
  apiUrl: string;
25
54
  endpoints: AuthEndpoints;
@@ -31,22 +60,40 @@ export interface AuthConfig {
31
60
  adminRoles?: string[];
32
61
  userRoles?: string[];
33
62
  };
63
+ requireAuth?: boolean;
64
+ publicPaths?: string[];
34
65
  }
66
+ /**
67
+ * @deprecated Use generated LoginRequest from @/generated/types instead.
68
+ * Backend expects: { email: string; password: string; }
69
+ */
35
70
  export interface LoginCredentials {
36
71
  email: string;
37
72
  password: string;
38
73
  }
74
+ /**
75
+ * @deprecated Use generated TokenResponse from @/generated/types instead.
76
+ * Backend returns: { user: UserInfo; access_token: string; refresh_token: string; token_type: "bearer"; }
77
+ */
39
78
  export interface LoginResponse<T extends BaseUser = BaseUser> {
40
79
  token: string;
41
80
  refreshToken?: string;
42
81
  user: T;
43
82
  expiresIn?: number;
44
83
  }
84
+ /**
85
+ * @deprecated Use generated RefreshResult from @/generated/types instead.
86
+ * Backend returns: { access_token: string; token_type: "bearer"; }
87
+ */
45
88
  export interface RefreshResponse {
46
89
  token: string;
47
90
  refreshToken?: string;
48
91
  expiresIn?: number;
49
92
  }
93
+ /**
94
+ * Auth context type for React components.
95
+ * This is frontend-specific and should stay in this file.
96
+ */
50
97
  export interface AuthContextType<T extends BaseUser = BaseUser> {
51
98
  user: T | null;
52
99
  isAuthenticated: boolean;
@@ -58,6 +105,10 @@ export interface AuthContextType<T extends BaseUser = BaseUser> {
58
105
  hasPermission: (permission: string) => boolean;
59
106
  hasRole: (role: string) => boolean;
60
107
  }
108
+ /**
109
+ * Token storage data structure.
110
+ * Frontend-specific for managing stored tokens.
111
+ */
61
112
  export interface TokenData {
62
113
  token: string;
63
114
  refreshToken?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/auth.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAKD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IACzB,YAAY,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,QAAQ,CAAC;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC5D,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;IACzB,YAAY,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,QAAQ,CAAC;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAC5D,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -4,4 +4,5 @@ export * from "./auth";
4
4
  export * from "./navigation";
5
5
  export * from "./entity-config";
6
6
  export * from "./ui-config";
7
+ export * from "./ui-metadata";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -6,20 +6,44 @@
6
6
  import type { ReactNode } from "react";
7
7
  import type { Breakpoint } from "../config/responsive";
8
8
  /**
9
- * Supported UI field types that can be automatically detected and rendered
9
+ * Canonical UI types for field rendering.
10
+ * These types define HOW data should be displayed visually.
11
+ *
12
+ * IMPORTANT: Must match backend UIType exactly (19 types).
13
+ * @mirror backend: pattern_stack/atoms/metadata/schemas.py::UIType
14
+ */
15
+ export type UIType = "text" | "password" | "number" | "money" | "percent" | "date" | "datetime" | "email" | "url" | "phone" | "boolean" | "badge" | "status" | "entity" | "user" | "json" | "image" | "rating" | "color" | "file";
16
+ /**
17
+ * @deprecated Use UIType instead
10
18
  */
11
- export type UIFieldType = "status" | "category" | "money" | "percent" | "date" | "datetime" | "user" | "entity" | "boolean" | "text" | "number" | "email" | "url" | "phone";
19
+ export type UIFieldType = UIType;
20
+ /**
21
+ * Format configuration for field renderers
22
+ * Passed from column metadata to customize rendering behavior
23
+ */
24
+ export interface FieldFormat {
25
+ /** Currency code for money fields (e.g., "USD", "EUR") */
26
+ currency?: string;
27
+ /** Number of decimal places for money/percent/number fields */
28
+ decimals?: number;
29
+ /** Locale for number/date formatting (e.g., "en-US", "de-DE") */
30
+ locale?: string;
31
+ /** Date format string or Intl options */
32
+ dateFormat?: string;
33
+ /** Custom status-to-color mapping for status fields */
34
+ statusColors?: Record<string, "success" | "warning" | "error" | "info" | "neutral">;
35
+ /** Explicit entity type for entity fields (vendor, partner, company, customer) */
36
+ entityType?: "vendor" | "partner" | "company" | "customer";
37
+ /** Max value for rating display (default 5) */
38
+ max?: number;
39
+ }
12
40
  /**
13
41
  * UI configuration for a specific field
14
42
  */
15
43
  export interface UIFieldConfig {
16
- type: UIFieldType;
44
+ type: UIType;
17
45
  colorScheme?: "sequential" | "hash" | "static";
18
- format?: {
19
- currency?: string;
20
- decimals?: number;
21
- dateFormat?: string;
22
- };
46
+ format?: FieldFormat;
23
47
  display?: {
24
48
  [K in Breakpoint]?: "full" | "compact" | "icon-only";
25
49
  };
@@ -28,7 +52,7 @@ export interface UIFieldConfig {
28
52
  * UI configuration for an entire entity/model
29
53
  */
30
54
  export type UIConfig<T = Record<string, unknown>> = {
31
- [K in keyof T]?: UIFieldType | UIFieldConfig;
55
+ [K in keyof T]?: UIType | UIFieldConfig;
32
56
  };
33
57
  /**
34
58
  * Props for components that support UI mapping
@@ -40,11 +64,11 @@ export interface UIConfigurable<T = Record<string, unknown>> {
40
64
  /**
41
65
  * Renderer function for custom field rendering
42
66
  */
43
- export type FieldRenderer<T = unknown> = (value: T, fieldName: string, breakpoint: Breakpoint, item?: Record<string, unknown>) => ReactNode;
67
+ export type FieldRenderer<T = unknown> = (value: T, fieldName: string, breakpoint: Breakpoint, item?: Record<string, unknown>, format?: FieldFormat) => ReactNode;
44
68
  /**
45
69
  * Registry of field renderers
46
70
  */
47
71
  export type FieldRendererRegistry = {
48
- [K in UIFieldType]: FieldRenderer;
72
+ [K in UIType]: FieldRenderer;
49
73
  };
50
74
  //# sourceMappingURL=ui-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/ui-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,UAAU,GACV,OAAO,GACP,SAAS,GACT,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,GACP,KAAK,GACL,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAElB,WAAW,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,OAAO,CAAC,EAAE;SACP,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW;KACrD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KACjD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,aAAa;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CACvC,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,SAAS,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;KACjC,CAAC,IAAI,WAAW,GAAG,aAAa;CAClC,CAAC"}
1
+ {"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/ui-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,MAAM,GAEd,MAAM,GACN,UAAU,GAEV,QAAQ,GACR,OAAO,GACP,SAAS,GAET,MAAM,GACN,UAAU,GAEV,OAAO,GACP,KAAK,GACL,OAAO,GAEP,SAAS,GAET,OAAO,GACP,QAAQ,GAER,QAAQ,GACR,MAAM,GAEN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IACpF,kFAAkF;IAClF,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3D,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,OAAO,CAAC,EAAE;SACP,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW;KACrD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KACjD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CACvC,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,WAAW,KACjB,SAAS,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;KACjC,CAAC,IAAI,MAAM,GAAG,aAAa;CAC7B,CAAC"}