@pattern-stack/frontend-patterns 0.2.0-alpha.1 → 0.2.0-alpha.12
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/atoms/components/core/Badge/Badge.d.ts +1 -1
- package/dist/atoms/components/data/DataTable/ColumnFilterDropdown.d.ts +32 -0
- package/dist/atoms/components/data/DataTable/ColumnFilterDropdown.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/ColumnVisibilityToggle.d.ts +32 -0
- package/dist/atoms/components/data/DataTable/ColumnVisibilityToggle.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/DataTable.d.ts +5 -2
- package/dist/atoms/components/data/DataTable/DataTable.d.ts.map +1 -1
- package/dist/atoms/components/data/DataTable/DataTable.expansion.d.ts +91 -0
- package/dist/atoms/components/data/DataTable/DataTable.expansion.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/DataTable.filters.d.ts +271 -0
- package/dist/atoms/components/data/DataTable/DataTable.filters.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/DataTable.types.d.ts +155 -5
- package/dist/atoms/components/data/DataTable/DataTable.types.d.ts.map +1 -1
- package/dist/atoms/components/data/DataTable/ExpandButton.d.ts +37 -0
- package/dist/atoms/components/data/DataTable/ExpandButton.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/FilterPill.d.ts +25 -0
- package/dist/atoms/components/data/DataTable/FilterPill.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/QuickFilterBar.d.ts +35 -0
- package/dist/atoms/components/data/DataTable/QuickFilterBar.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/BooleanFilterEditor.d.ts +10 -0
- package/dist/atoms/components/data/DataTable/filters/BooleanFilterEditor.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/DateFilterEditor.d.ts +11 -0
- package/dist/atoms/components/data/DataTable/filters/DateFilterEditor.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/MultiSelectFilterEditor.d.ts +10 -0
- package/dist/atoms/components/data/DataTable/filters/MultiSelectFilterEditor.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/NumberFilterEditor.d.ts +10 -0
- package/dist/atoms/components/data/DataTable/filters/NumberFilterEditor.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/SelectFilterEditor.d.ts +10 -0
- package/dist/atoms/components/data/DataTable/filters/SelectFilterEditor.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/TextFilterEditor.d.ts +10 -0
- package/dist/atoms/components/data/DataTable/filters/TextFilterEditor.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/filters/index.d.ts +14 -0
- package/dist/atoms/components/data/DataTable/filters/index.d.ts.map +1 -0
- package/dist/atoms/components/data/DataTable/index.d.ts +9 -0
- package/dist/atoms/components/data/DataTable/index.d.ts.map +1 -1
- package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts +1 -1
- package/dist/atoms/components/data/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/atoms/components/data/index.d.ts +3 -2
- package/dist/atoms/components/data/index.d.ts.map +1 -1
- package/dist/atoms/composed/ConnectionStatus/ConnectionStatus.d.ts +16 -0
- package/dist/atoms/composed/ConnectionStatus/ConnectionStatus.d.ts.map +1 -0
- package/dist/atoms/composed/ConnectionStatus/index.d.ts +3 -0
- package/dist/atoms/composed/ConnectionStatus/index.d.ts.map +1 -0
- package/dist/atoms/hooks/index.d.ts +9 -0
- package/dist/atoms/hooks/index.d.ts.map +1 -1
- package/dist/atoms/hooks/useAdaptiveTable.d.ts +49 -0
- package/dist/atoms/hooks/useAdaptiveTable.d.ts.map +1 -0
- package/dist/atoms/hooks/useApi.d.ts +1 -1
- package/dist/atoms/hooks/useApi.d.ts.map +1 -1
- package/dist/atoms/hooks/useColumnVisibility.d.ts +75 -0
- package/dist/atoms/hooks/useColumnVisibility.d.ts.map +1 -0
- package/dist/atoms/hooks/useEntityData.d.ts +36 -0
- package/dist/atoms/hooks/useEntityData.d.ts.map +1 -0
- package/dist/atoms/hooks/useEntityDetail.d.ts +43 -0
- package/dist/atoms/hooks/useEntityDetail.d.ts.map +1 -0
- package/dist/atoms/hooks/useExpandedRows.d.ts +66 -0
- package/dist/atoms/hooks/useExpandedRows.d.ts.map +1 -0
- package/dist/atoms/hooks/useFieldMetadata.d.ts +18 -0
- package/dist/atoms/hooks/useFieldMetadata.d.ts.map +1 -0
- package/dist/atoms/hooks/useOnlineStatus.d.ts +16 -0
- package/dist/atoms/hooks/useOnlineStatus.d.ts.map +1 -0
- package/dist/atoms/hooks/useResponsiveTable.d.ts +123 -0
- package/dist/atoms/hooks/useResponsiveTable.d.ts.map +1 -0
- package/dist/atoms/hooks/useTableFilters.d.ts +92 -0
- package/dist/atoms/hooks/useTableFilters.d.ts.map +1 -0
- package/dist/atoms/index.d.ts +1 -0
- package/dist/atoms/index.d.ts.map +1 -1
- package/dist/atoms/primitives/sheet.d.ts +23 -0
- package/dist/atoms/primitives/sheet.d.ts.map +1 -0
- package/dist/atoms/primitives/table.d.ts.map +1 -1
- package/dist/atoms/services/api/client.d.ts +12 -2
- package/dist/atoms/services/api/client.d.ts.map +1 -1
- package/dist/atoms/services/auth-service.d.ts +15 -0
- package/dist/atoms/services/auth-service.d.ts.map +1 -1
- package/dist/atoms/services/index.d.ts +2 -2
- package/dist/atoms/services/index.d.ts.map +1 -1
- package/dist/atoms/shared/config/table-config.d.ts +79 -0
- package/dist/atoms/shared/config/table-config.d.ts.map +1 -0
- package/dist/atoms/shared/index.d.ts +1 -0
- package/dist/atoms/shared/index.d.ts.map +1 -1
- package/dist/atoms/types/auth.d.ts +95 -2
- package/dist/atoms/types/auth.d.ts.map +1 -1
- package/dist/atoms/types/index.d.ts +1 -0
- package/dist/atoms/types/index.d.ts.map +1 -1
- package/dist/atoms/types/navigation.d.ts +1 -1
- package/dist/atoms/types/navigation.d.ts.map +1 -1
- package/dist/atoms/types/ui-config.d.ts +46 -11
- package/dist/atoms/types/ui-config.d.ts.map +1 -1
- package/dist/atoms/types/ui-metadata.d.ts +103 -0
- package/dist/atoms/types/ui-metadata.d.ts.map +1 -0
- package/dist/atoms/utils/entity-card-mapping.d.ts +105 -0
- package/dist/atoms/utils/entity-card-mapping.d.ts.map +1 -0
- package/dist/atoms/utils/field-detection.d.ts +2 -2
- package/dist/atoms/utils/field-detection.d.ts.map +1 -1
- package/dist/atoms/utils/icon-map.d.ts +48 -0
- package/dist/atoms/utils/icon-map.d.ts.map +1 -1
- package/dist/atoms/utils/index.d.ts +2 -0
- package/dist/atoms/utils/index.d.ts.map +1 -1
- package/dist/atoms/utils/ui-mapping.d.ts +9 -3
- package/dist/atoms/utils/ui-mapping.d.ts.map +1 -1
- package/dist/features/auth/components/ProtectedRoute.d.ts +3 -1
- package/dist/features/auth/components/ProtectedRoute.d.ts.map +1 -1
- package/dist/features/auth/hooks/useAuth.d.ts.map +1 -1
- package/dist/features/auth/providers/NoAuthProvider.d.ts +17 -0
- package/dist/features/auth/providers/NoAuthProvider.d.ts.map +1 -0
- package/dist/features/auth/providers/index.d.ts +1 -0
- package/dist/features/auth/providers/index.d.ts.map +1 -1
- package/dist/frontend-patterns.css +1 -4554
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +8816 -18278
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +8813 -18274
- package/dist/index.js.map +1 -1
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts +19 -3
- package/dist/molecules/layout/AppHeader/AppHeader.d.ts.map +1 -1
- package/dist/molecules/layout/AppHeader/index.d.ts +1 -1
- package/dist/molecules/layout/AppHeader/index.d.ts.map +1 -1
- package/dist/molecules/layout/AppLayout.d.ts +12 -1
- package/dist/molecules/layout/AppLayout.d.ts.map +1 -1
- package/dist/molecules/layout/BulkSelectionBar.d.ts +14 -2
- package/dist/molecules/layout/BulkSelectionBar.d.ts.map +1 -1
- package/dist/molecules/layout/FieldGrid/FieldGrid.d.ts +61 -0
- package/dist/molecules/layout/FieldGrid/FieldGrid.d.ts.map +1 -0
- package/dist/molecules/layout/FieldGrid/index.d.ts +2 -0
- package/dist/molecules/layout/FieldGrid/index.d.ts.map +1 -0
- package/dist/molecules/layout/ListToolbar/ListToolbar.d.ts +37 -0
- package/dist/molecules/layout/ListToolbar/ListToolbar.d.ts.map +1 -0
- package/dist/molecules/layout/ListToolbar/index.d.ts +2 -0
- package/dist/molecules/layout/ListToolbar/index.d.ts.map +1 -0
- package/dist/molecules/layout/PageTitle/PageTitle.d.ts +17 -0
- package/dist/molecules/layout/PageTitle/PageTitle.d.ts.map +1 -0
- package/dist/molecules/layout/PageTitle/index.d.ts +2 -0
- package/dist/molecules/layout/PageTitle/index.d.ts.map +1 -0
- package/dist/molecules/layout/index.d.ts +5 -2
- package/dist/molecules/layout/index.d.ts.map +1 -1
- package/dist/molecules/layout/navigation-context.d.ts.map +1 -1
- package/dist/sync/EntityStoreProvider.d.ts +35 -0
- package/dist/sync/EntityStoreProvider.d.ts.map +1 -0
- package/dist/sync/createEntityHooks.d.ts +29 -0
- package/dist/sync/createEntityHooks.d.ts.map +1 -0
- package/dist/sync/createStore.d.ts +65 -0
- package/dist/sync/createStore.d.ts.map +1 -0
- package/dist/sync/index.d.ts +6 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/types.d.ts +383 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/templates/ListPageTemplate.d.ts +21 -0
- package/dist/templates/ListPageTemplate.d.ts.map +1 -0
- package/dist/templates/admin/AdminCRUDTemplate.d.ts.map +1 -1
- package/dist/templates/factory.d.ts +20 -0
- package/dist/templates/factory.d.ts.map +1 -1
- package/dist/templates/index.d.ts +1 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/package.json +11 -7
- package/cli/commands/generate-hooks.ts +0 -325
- package/cli/commands/init.ts +0 -33
- package/cli/commands/scaffold.ts +0 -224
- package/cli/index.ts +0 -122
- package/cli/src/codegen/openapi/__tests__/naming-utils.test.js +0 -367
- package/cli/src/codegen/openapi/client-generator.js +0 -727
- package/cli/src/codegen/openapi/confidence-scorer.js +0 -93
- package/cli/src/codegen/openapi/hook-config.js +0 -48
- package/cli/src/codegen/openapi/hook-generator.js +0 -763
- package/cli/src/codegen/openapi/naming-constants.js +0 -98
- package/cli/src/codegen/openapi/naming-utils.js +0 -149
- package/cli/src/codegen/openapi/parser.js +0 -274
- package/cli/src/codegen/openapi/type-generator.js +0 -329
- package/dist/codegen/openapi/bulk-types.d.ts +0 -142
- package/dist/codegen/openapi/bulk-types.d.ts.map +0 -1
|
@@ -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,9 +45,35 @@ export interface AuthEndpoints {
|
|
|
20
45
|
me: string;
|
|
21
46
|
logout?: string;
|
|
22
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Auth mode determines how the auth system behaves.
|
|
50
|
+
* - 'pattern-stack': Expects backend-patterns format (access_token, refresh_token, user)
|
|
51
|
+
* - 'custom': Use responseMapper to transform backend responses
|
|
52
|
+
* - 'none': Auth is disabled, no providers or protection
|
|
53
|
+
*/
|
|
54
|
+
export type AuthMode = "pattern-stack" | "custom" | "none";
|
|
55
|
+
/**
|
|
56
|
+
* Callback for handling auth errors (401/403).
|
|
57
|
+
* Return true to suppress default behavior (page reload).
|
|
58
|
+
*/
|
|
59
|
+
export type AuthErrorHandler = (error: {
|
|
60
|
+
status: number;
|
|
61
|
+
message?: string;
|
|
62
|
+
}) => boolean | void;
|
|
63
|
+
/**
|
|
64
|
+
* Auth system configuration.
|
|
65
|
+
* Frontend-specific configuration for the auth provider.
|
|
66
|
+
*/
|
|
23
67
|
export interface AuthConfig {
|
|
24
|
-
|
|
25
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Auth mode. Default: 'pattern-stack'
|
|
70
|
+
* - 'pattern-stack': Backend-patterns format, no mapping needed
|
|
71
|
+
* - 'custom': Custom backend, use responseMapper
|
|
72
|
+
* - 'none': Auth disabled
|
|
73
|
+
*/
|
|
74
|
+
mode?: AuthMode;
|
|
75
|
+
apiUrl?: string;
|
|
76
|
+
endpoints?: Partial<AuthEndpoints>;
|
|
26
77
|
tokenStorage?: "localStorage" | "sessionStorage" | "cookie";
|
|
27
78
|
tokenRefreshBuffer?: number;
|
|
28
79
|
autoRefresh?: boolean;
|
|
@@ -31,22 +82,60 @@ export interface AuthConfig {
|
|
|
31
82
|
adminRoles?: string[];
|
|
32
83
|
userRoles?: string[];
|
|
33
84
|
};
|
|
85
|
+
requireAuth?: boolean;
|
|
86
|
+
publicPaths?: string[];
|
|
87
|
+
/**
|
|
88
|
+
* Skip server validation (/auth/me) if token is not expired locally.
|
|
89
|
+
* Enables offline-first auth - trusts the JWT without server roundtrip.
|
|
90
|
+
* Default: false (always validate with server)
|
|
91
|
+
*/
|
|
92
|
+
offlineFirst?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Called on 401/403 errors. Return true to prevent default page reload.
|
|
95
|
+
*/
|
|
96
|
+
onAuthError?: AuthErrorHandler;
|
|
97
|
+
/**
|
|
98
|
+
* Custom response mapper for 'custom' mode.
|
|
99
|
+
* Transforms backend response to standard format.
|
|
100
|
+
*/
|
|
101
|
+
responseMapper?: (response: unknown) => {
|
|
102
|
+
user: BaseUser;
|
|
103
|
+
token: string;
|
|
104
|
+
refreshToken?: string;
|
|
105
|
+
expiresIn?: number;
|
|
106
|
+
};
|
|
34
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* @deprecated Use generated LoginRequest from @/generated/types instead.
|
|
110
|
+
* Backend expects: { email: string; password: string; }
|
|
111
|
+
*/
|
|
35
112
|
export interface LoginCredentials {
|
|
36
113
|
email: string;
|
|
37
114
|
password: string;
|
|
38
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* @deprecated Use generated TokenResponse from @/generated/types instead.
|
|
118
|
+
* Backend returns: { user: UserInfo; access_token: string; refresh_token: string; token_type: "bearer"; }
|
|
119
|
+
*/
|
|
39
120
|
export interface LoginResponse<T extends BaseUser = BaseUser> {
|
|
40
121
|
token: string;
|
|
41
122
|
refreshToken?: string;
|
|
42
123
|
user: T;
|
|
43
124
|
expiresIn?: number;
|
|
44
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* @deprecated Use generated RefreshResult from @/generated/types instead.
|
|
128
|
+
* Backend returns: { access_token: string; token_type: "bearer"; }
|
|
129
|
+
*/
|
|
45
130
|
export interface RefreshResponse {
|
|
46
131
|
token: string;
|
|
47
132
|
refreshToken?: string;
|
|
48
133
|
expiresIn?: number;
|
|
49
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Auth context type for React components.
|
|
137
|
+
* This is frontend-specific and should stay in this file.
|
|
138
|
+
*/
|
|
50
139
|
export interface AuthContextType<T extends BaseUser = BaseUser> {
|
|
51
140
|
user: T | null;
|
|
52
141
|
isAuthenticated: boolean;
|
|
@@ -58,6 +147,10 @@ export interface AuthContextType<T extends BaseUser = BaseUser> {
|
|
|
58
147
|
hasPermission: (permission: string) => boolean;
|
|
59
148
|
hasRole: (role: string) => boolean;
|
|
60
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Token storage data structure.
|
|
152
|
+
* Frontend-specific for managing stored tokens.
|
|
153
|
+
*/
|
|
61
154
|
export interface TokenData {
|
|
62
155
|
token: string;
|
|
63
156
|
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;
|
|
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;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,GAAG,IAAI,CAAC;AAE/F;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,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;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK;QACtC,IAAI,EAAE,QAAQ,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;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"}
|
|
@@ -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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type IconName = "Palette" | "Menu" | "X" | "Shield" | "Users" | "BarChart3" | "Database" | "TrendingUp" | "Layout" | "Home" | "Settings" | "Bell" | "Search" | "Plus" | "Edit" | "Trash2" | "Eye" | "Download" | "Upload" | "Share" | "Lock" | "Unlock" | "Mail" | "Phone" | "Calendar" | "Clock" | "MapPin" | "Map" | "Star" | "Heart" | "Bookmark" | "Tag" | "Flag" | "File" | "Folder" | "Image" | "Video" | "Music" | "ChevronRight" | "ChevronDown" | "ChevronLeft" | "ChevronUp" | "ArrowRight" | "ArrowLeft" | "ArrowUp" | "ArrowDown" | "Check" | "AlertCircle" | "Info" | "HelpCircle" | "Building" | "Truck" | "Handshake" | "User";
|
|
1
|
+
export type IconName = "Palette" | "Menu" | "X" | "Shield" | "Users" | "BarChart" | "BarChart2" | "BarChart3" | "BarChart4" | "LineChart" | "AreaChart" | "PieChart" | "Database" | "TrendingUp" | "TrendingDown" | "Activity" | "Layout" | "Home" | "Settings" | "Bell" | "Search" | "Plus" | "Edit" | "Trash2" | "Eye" | "Download" | "Upload" | "Share" | "Lock" | "Unlock" | "Mail" | "Phone" | "Calendar" | "Clock" | "MapPin" | "Map" | "Star" | "Heart" | "Bookmark" | "Tag" | "Flag" | "File" | "Folder" | "Image" | "Video" | "Music" | "ChevronRight" | "ChevronDown" | "ChevronLeft" | "ChevronUp" | "ArrowRight" | "ArrowLeft" | "ArrowUp" | "ArrowDown" | "Check" | "AlertCircle" | "Info" | "HelpCircle" | "Building" | "Truck" | "Handshake" | "User" | "Brain" | "Calculator" | "ShoppingCart" | "Utensils" | "Car" | "Zap" | "Film" | "ShoppingBag" | "Wrench" | "CreditCard" | "Wallet" | "PiggyBank" | "Receipt" | "DollarSign" | "Percent" | "Gift" | "Package" | "Coffee" | "Plane" | "Bus" | "Fuel" | "Sparkles" | "Scissors" | "Dumbbell" | "Pill" | "Stethoscope" | "GraduationCap" | "Book" | "BookOpen" | "Gamepad2" | "Tv" | "Wifi" | "Droplets" | "Flame" | "TreePine" | "Dog" | "Baby" | "Shirt" | "Sofa" | "Hammer" | "Paintbrush" | "Lightbulb";
|
|
2
2
|
export interface NavigationItem {
|
|
3
3
|
/** Unique identifier for the navigation item */
|
|
4
4
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/navigation.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,MAAM,GACN,GAAG,GACH,QAAQ,GACR,OAAO,GACP,WAAW,GACX,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,GACN,QAAQ,GACR,KAAK,GACL,UAAU,GACV,QAAQ,GACR,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,OAAO,GACP,QAAQ,GACR,KAAK,GACL,MAAM,GACN,OAAO,GACP,UAAU,GACV,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,OAAO,GACP,cAAc,GACd,aAAa,GACb,aAAa,GACb,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,GACP,aAAa,GACb,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,WAAW,GACX,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/navigation.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,MAAM,GACN,GAAG,GACH,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,YAAY,GACZ,cAAc,GACd,UAAU,GACV,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,MAAM,GACN,MAAM,GACN,QAAQ,GACR,KAAK,GACL,UAAU,GACV,QAAQ,GACR,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,OAAO,GACP,UAAU,GACV,OAAO,GACP,QAAQ,GACR,KAAK,GACL,MAAM,GACN,OAAO,GACP,UAAU,GACV,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,OAAO,GACP,cAAc,GACd,aAAa,GACb,aAAa,GACb,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,GACT,WAAW,GACX,OAAO,GACP,aAAa,GACb,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,GACP,WAAW,GACX,MAAM,GACN,OAAO,GACP,YAAY,GAEZ,cAAc,GACd,UAAU,GACV,KAAK,GACL,KAAK,GACL,MAAM,GACN,aAAa,GACb,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,SAAS,GACT,YAAY,GACZ,SAAS,GACT,MAAM,GACN,SAAS,GACT,QAAQ,GACR,OAAO,GACP,KAAK,GACL,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,GACV,MAAM,GACN,aAAa,GACb,eAAe,GACf,MAAM,GACN,UAAU,GACV,UAAU,GACV,IAAI,GACJ,MAAM,GACN,UAAU,GACV,OAAO,GACP,UAAU,GACV,KAAK,GACL,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,gDAAgD;IAChD,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
|
|
@@ -6,20 +6,55 @@
|
|
|
6
6
|
import type { ReactNode } from "react";
|
|
7
7
|
import type { Breakpoint } from "../config/responsive";
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
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
|
|
18
|
+
*/
|
|
19
|
+
export type UIFieldType = UIType;
|
|
20
|
+
/**
|
|
21
|
+
* Option for select/dropdown fields
|
|
10
22
|
*/
|
|
11
|
-
export
|
|
23
|
+
export interface SelectOption {
|
|
24
|
+
value: string;
|
|
25
|
+
label: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Format configuration for field renderers
|
|
29
|
+
* Passed from column metadata to customize rendering behavior
|
|
30
|
+
*/
|
|
31
|
+
export interface FieldFormat {
|
|
32
|
+
/** Currency code for money fields (e.g., "USD", "EUR") */
|
|
33
|
+
currency?: string;
|
|
34
|
+
/** Number of decimal places for money/percent/number fields */
|
|
35
|
+
decimals?: number;
|
|
36
|
+
/** Locale for number/date formatting (e.g., "en-US", "de-DE") */
|
|
37
|
+
locale?: string;
|
|
38
|
+
/** Date format string or Intl options */
|
|
39
|
+
dateFormat?: string;
|
|
40
|
+
/** Custom status-to-color mapping for status fields */
|
|
41
|
+
statusColors?: Record<string, "success" | "warning" | "error" | "info" | "neutral">;
|
|
42
|
+
/** Explicit entity type for entity fields (vendor, partner, company, customer) */
|
|
43
|
+
entityType?: "vendor" | "partner" | "company" | "customer";
|
|
44
|
+
/** Max value for rating display (default 5) */
|
|
45
|
+
max?: number;
|
|
46
|
+
/** Options for select/dropdown fields */
|
|
47
|
+
options?: SelectOption[];
|
|
48
|
+
/** Whether the field is editable inline (enables dropdown for status fields) */
|
|
49
|
+
editable?: boolean;
|
|
50
|
+
}
|
|
12
51
|
/**
|
|
13
52
|
* UI configuration for a specific field
|
|
14
53
|
*/
|
|
15
54
|
export interface UIFieldConfig {
|
|
16
|
-
type:
|
|
55
|
+
type: UIType;
|
|
17
56
|
colorScheme?: "sequential" | "hash" | "static";
|
|
18
|
-
format?:
|
|
19
|
-
currency?: string;
|
|
20
|
-
decimals?: number;
|
|
21
|
-
dateFormat?: string;
|
|
22
|
-
};
|
|
57
|
+
format?: FieldFormat;
|
|
23
58
|
display?: {
|
|
24
59
|
[K in Breakpoint]?: "full" | "compact" | "icon-only";
|
|
25
60
|
};
|
|
@@ -28,7 +63,7 @@ export interface UIFieldConfig {
|
|
|
28
63
|
* UI configuration for an entire entity/model
|
|
29
64
|
*/
|
|
30
65
|
export type UIConfig<T = Record<string, unknown>> = {
|
|
31
|
-
[K in keyof T]?:
|
|
66
|
+
[K in keyof T]?: UIType | UIFieldConfig;
|
|
32
67
|
};
|
|
33
68
|
/**
|
|
34
69
|
* Props for components that support UI mapping
|
|
@@ -40,11 +75,11 @@ export interface UIConfigurable<T = Record<string, unknown>> {
|
|
|
40
75
|
/**
|
|
41
76
|
* Renderer function for custom field rendering
|
|
42
77
|
*/
|
|
43
|
-
export type FieldRenderer<T = unknown> = (value: T, fieldName: string, breakpoint: Breakpoint, item?: Record<string, unknown
|
|
78
|
+
export type FieldRenderer<T = unknown> = (value: T, fieldName: string, breakpoint: Breakpoint, item?: Record<string, unknown>, format?: FieldFormat) => ReactNode;
|
|
44
79
|
/**
|
|
45
80
|
* Registry of field renderers
|
|
46
81
|
*/
|
|
47
82
|
export type FieldRendererRegistry = {
|
|
48
|
-
[K in
|
|
83
|
+
[K in UIType]: FieldRenderer;
|
|
49
84
|
};
|
|
50
85
|
//# 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
|
|
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;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;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;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI Metadata Types
|
|
3
|
+
*
|
|
4
|
+
* This file contains UI metadata types that mirror the backend OpenAPI specification.
|
|
5
|
+
* These types enable dynamic UI rendering based on field metadata from the API.
|
|
6
|
+
*
|
|
7
|
+
* @mirror backend: pattern_stack/atoms/metadata/schemas.py
|
|
8
|
+
*/
|
|
9
|
+
import type { UIType } from "./ui-config";
|
|
10
|
+
/**
|
|
11
|
+
* Business importance levels for field prioritization.
|
|
12
|
+
*
|
|
13
|
+
* Controls field visibility and display priority in responsive layouts.
|
|
14
|
+
* Uses semantic naming (primary/secondary/tertiary) with backward compatible
|
|
15
|
+
* severity levels (critical/high/medium/low/minimal).
|
|
16
|
+
*
|
|
17
|
+
* @mirror backend: pattern_stack/atoms/metadata/schemas.py::SemanticImportance
|
|
18
|
+
*
|
|
19
|
+
* Semantic levels:
|
|
20
|
+
* - primary: Most important, always show
|
|
21
|
+
* - secondary: Supporting information
|
|
22
|
+
* - tertiary: Optional/metadata field (default)
|
|
23
|
+
*
|
|
24
|
+
* Backward compatible severity levels (mapped to semantic):
|
|
25
|
+
* - critical, high -> equivalent to primary
|
|
26
|
+
* - medium -> equivalent to secondary
|
|
27
|
+
* - low, minimal -> equivalent to tertiary
|
|
28
|
+
*/
|
|
29
|
+
export type UIImportance = "primary" | "secondary" | "tertiary" | "critical" | "high" | "medium" | "low" | "minimal";
|
|
30
|
+
/**
|
|
31
|
+
* Column/field metadata for dynamic UI rendering.
|
|
32
|
+
*
|
|
33
|
+
* Provides comprehensive metadata about a data field including its type,
|
|
34
|
+
* importance, display properties, and validation rules. Used by DataTable,
|
|
35
|
+
* forms, and other data-driven components to render fields appropriately.
|
|
36
|
+
*
|
|
37
|
+
* @mirror backend: pattern_stack/atoms/metadata/schemas.py::ColumnMetadata
|
|
38
|
+
*/
|
|
39
|
+
export interface ColumnMetadata {
|
|
40
|
+
/** Field name/key in the data object */
|
|
41
|
+
field: string;
|
|
42
|
+
/** Human-readable label for display */
|
|
43
|
+
label: string;
|
|
44
|
+
/** Semantic UI type for rendering */
|
|
45
|
+
type: UIType;
|
|
46
|
+
/** Business importance level for prioritization */
|
|
47
|
+
importance: UIImportance;
|
|
48
|
+
/** Logical grouping for field organization */
|
|
49
|
+
group?: string;
|
|
50
|
+
/** Whether the field supports sorting */
|
|
51
|
+
sortable?: boolean;
|
|
52
|
+
/** Whether the field supports filtering */
|
|
53
|
+
filterable?: boolean;
|
|
54
|
+
/** Type-specific formatting options */
|
|
55
|
+
format?: Record<string, unknown>;
|
|
56
|
+
/** Help text describing the field */
|
|
57
|
+
description?: string;
|
|
58
|
+
/** Placeholder text for input fields */
|
|
59
|
+
placeholder?: string;
|
|
60
|
+
/** Whether the field is visible by default */
|
|
61
|
+
visible?: boolean;
|
|
62
|
+
/** Whether the field is required in forms */
|
|
63
|
+
required?: boolean;
|
|
64
|
+
/** Whether the field is computed/read-only */
|
|
65
|
+
computed?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* API response for column metadata.
|
|
69
|
+
*
|
|
70
|
+
* Returned by metadata endpoints to provide UI rendering information
|
|
71
|
+
* for a specific entity and view type.
|
|
72
|
+
*/
|
|
73
|
+
export interface ColumnMetadataResponse {
|
|
74
|
+
/** Array of column metadata definitions */
|
|
75
|
+
columns: ColumnMetadata[];
|
|
76
|
+
/** Entity type these columns belong to */
|
|
77
|
+
entity: string;
|
|
78
|
+
/** View context (list/detail/form) */
|
|
79
|
+
view: "list" | "detail" | "form";
|
|
80
|
+
/** Metadata schema version */
|
|
81
|
+
version: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Field group metadata for form sections.
|
|
85
|
+
*
|
|
86
|
+
* Organizes related fields into collapsible sections within forms.
|
|
87
|
+
* Groups provide visual organization and progressive disclosure of form fields.
|
|
88
|
+
*/
|
|
89
|
+
export interface FieldGroupMetadata {
|
|
90
|
+
/** Unique group identifier */
|
|
91
|
+
name: string;
|
|
92
|
+
/** Human-readable group label */
|
|
93
|
+
label: string;
|
|
94
|
+
/** Help text describing the group */
|
|
95
|
+
description?: string;
|
|
96
|
+
/** Display order relative to other groups */
|
|
97
|
+
order?: number;
|
|
98
|
+
/** Whether the group can be collapsed */
|
|
99
|
+
collapsible?: boolean;
|
|
100
|
+
/** Whether the group starts collapsed */
|
|
101
|
+
collapsed_default?: boolean;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=ui-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-metadata.d.ts","sourceRoot":"","sources":["../../../src/atoms/types/ui-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,WAAW,GACX,UAAU,GACV,UAAU,GACV,MAAM,GACN,QAAQ,GACR,KAAK,GACL,SAAS,CAAC;AAEd;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IAEd,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IAEd,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IAEb,mDAAmD;IACnD,UAAU,EAAE,YAAY,CAAC;IAEzB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,2CAA2C;IAC3C,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAEjC,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity Card Mapping Utilities
|
|
3
|
+
*
|
|
4
|
+
* Maps entity data and column metadata to ListCard props for responsive
|
|
5
|
+
* card-based display of table data.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
import type { ColumnMetadata } from "../types/ui-metadata";
|
|
9
|
+
import { type ListCardProps } from "../components/data/ListCard";
|
|
10
|
+
import type { Column } from "../components/data/DataTable";
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for mapping entity data to ListCard props.
|
|
13
|
+
* Allows customization of which fields map to which card elements.
|
|
14
|
+
*/
|
|
15
|
+
export interface EntityCardMapping {
|
|
16
|
+
/** Field to use as card title (default: first primary column or 'name') */
|
|
17
|
+
titleField?: string;
|
|
18
|
+
/** Field to use as subtitle */
|
|
19
|
+
subtitleField?: string;
|
|
20
|
+
/** Field to display as the value (typically money/number) */
|
|
21
|
+
valueField?: string;
|
|
22
|
+
/** Field to display as status badge */
|
|
23
|
+
statusField?: string;
|
|
24
|
+
/** Fields to show in metadata row (default: auto-detect up to 3) */
|
|
25
|
+
metadataFields?: string[];
|
|
26
|
+
/** Icon configuration */
|
|
27
|
+
iconConfig?: {
|
|
28
|
+
/** Icon variant type */
|
|
29
|
+
variant: "category" | "status";
|
|
30
|
+
/** Field to derive icon/color from */
|
|
31
|
+
field?: string;
|
|
32
|
+
/** Static icon to use */
|
|
33
|
+
icon?: React.ReactNode;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Convert entity data and column metadata to ListCard props.
|
|
38
|
+
*
|
|
39
|
+
* @param item - The entity data row
|
|
40
|
+
* @param columns - Column metadata from the API
|
|
41
|
+
* @param mapping - Optional custom mapping configuration
|
|
42
|
+
* @param entityType - Optional entity type for icon/category inference
|
|
43
|
+
* @returns Props for the ListCard component
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* const cardProps = entityToListCardProps(row, columns);
|
|
48
|
+
* return <ListCard {...cardProps} onClick={() => handleClick(row)} />;
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function entityToListCardProps(item: Record<string, unknown>, columns: ColumnMetadata[], mapping?: EntityCardMapping, entityType?: string): ListCardProps;
|
|
52
|
+
/**
|
|
53
|
+
* Options for generating compact columns
|
|
54
|
+
*/
|
|
55
|
+
export interface CompactColumnsOptions {
|
|
56
|
+
/** Maximum number of columns in compact view (default: 5) */
|
|
57
|
+
maxColumns?: number;
|
|
58
|
+
/** Whether to use abbreviated headers (default: true) */
|
|
59
|
+
abbreviateHeaders?: boolean;
|
|
60
|
+
/** Fields to always include regardless of importance */
|
|
61
|
+
requiredFields?: string[];
|
|
62
|
+
/** Fields to exclude from compact view */
|
|
63
|
+
excludeFields?: string[];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate compact column definitions from full column metadata.
|
|
67
|
+
*
|
|
68
|
+
* Creates a reduced set of columns suitable for narrow displays.
|
|
69
|
+
* Prioritizes primary importance columns and applies compact formatting.
|
|
70
|
+
*
|
|
71
|
+
* @param columns - Full column metadata
|
|
72
|
+
* @param options - Customization options
|
|
73
|
+
* @returns Array of compact Column definitions
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```tsx
|
|
77
|
+
* const compactCols = generateCompactColumns(metadata.columns, { maxColumns: 4 });
|
|
78
|
+
* <DataTable columns={isCompact ? compactCols : fullCols} data={data} />
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function generateCompactColumns<T extends Record<string, unknown>>(columns: ColumnMetadata[], options?: CompactColumnsOptions): Column<T>[];
|
|
82
|
+
/**
|
|
83
|
+
* Render function for mobile cards that uses entityToListCardProps.
|
|
84
|
+
*
|
|
85
|
+
* Returns a render function compatible with DataTable's renderMobileCard prop.
|
|
86
|
+
*
|
|
87
|
+
* @param columns - Column metadata
|
|
88
|
+
* @param mapping - Optional custom card mapping
|
|
89
|
+
* @param entityType - Optional entity type for icon inference
|
|
90
|
+
* @returns Render function for mobile cards
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```tsx
|
|
94
|
+
* <DataTable
|
|
95
|
+
* data={data}
|
|
96
|
+
* columns={columns}
|
|
97
|
+
* renderMobileCard={createMobileCardRenderer(metadata.columns, undefined, 'accounts')}
|
|
98
|
+
* />
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function createMobileCardRenderer<T extends Record<string, unknown>>(columns: ColumnMetadata[], mapping?: EntityCardMapping, entityType?: string): (props: {
|
|
102
|
+
data: T[];
|
|
103
|
+
onItemClick?: (item: T) => void;
|
|
104
|
+
}) => React.ReactNode;
|
|
105
|
+
//# sourceMappingURL=entity-card-mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-card-mapping.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/entity-card-mapping.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAG3D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,yBAAyB;IACzB,UAAU,CAAC,EAAE;QACX,wBAAwB;QACxB,OAAO,EAAE,UAAU,GAAG,QAAQ,CAAC;QAC/B,sCAAsC;QACtC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,yBAAyB;QACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACxB,CAAC;CACH;AA6QD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,aAAa,CAkGf;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAAC,CAAC,CAAC,EAAE,CA8Cb;AA0BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxE,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;CAAE,KAAK,KAAK,CAAC,SAAS,CAoB5E"}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Automatically detects field types based on name, pattern, and value
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { UIType, UIConfig } from "../types/ui-config";
|
|
7
7
|
/**
|
|
8
8
|
* Get field type for a given field name and optional value
|
|
9
9
|
*/
|
|
10
|
-
export declare function getFieldType(fieldName: string, value?: unknown, explicitUI?: UIConfig):
|
|
10
|
+
export declare function getFieldType(fieldName: string, value?: unknown, explicitUI?: UIConfig): UIType;
|
|
11
11
|
/**
|
|
12
12
|
* Analyze an array of data to build automatic UI configuration
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-detection.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/field-detection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"field-detection.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/field-detection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAuN3D;;GAEG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,QAAQ,GACpB,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9D,IAAI,EAAE,CAAC,EAAE,EACT,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GACvB,QAAQ,CAAC,CAAC,CAAC,CAqBb"}
|
|
@@ -5,9 +5,17 @@ export declare const iconMap: {
|
|
|
5
5
|
X: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
6
6
|
Shield: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
7
7
|
Users: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
8
|
+
BarChart: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
9
|
+
BarChart2: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
8
10
|
BarChart3: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
11
|
+
BarChart4: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
12
|
+
LineChart: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
13
|
+
AreaChart: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
14
|
+
PieChart: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
9
15
|
Database: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
10
16
|
TrendingUp: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
17
|
+
TrendingDown: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
18
|
+
Activity: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
11
19
|
Layout: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
12
20
|
Home: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
13
21
|
Settings: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
@@ -56,6 +64,46 @@ export declare const iconMap: {
|
|
|
56
64
|
Brain: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
57
65
|
Calculator: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
58
66
|
Map: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
67
|
+
ShoppingCart: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
68
|
+
Utensils: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
69
|
+
Car: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
70
|
+
Zap: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
71
|
+
Film: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
72
|
+
ShoppingBag: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
73
|
+
Wrench: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
74
|
+
CreditCard: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
75
|
+
Wallet: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
76
|
+
PiggyBank: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
77
|
+
Receipt: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
78
|
+
DollarSign: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
79
|
+
Percent: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
80
|
+
Gift: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
81
|
+
Package: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
82
|
+
Coffee: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
83
|
+
Plane: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
84
|
+
Bus: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
85
|
+
Fuel: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
86
|
+
Sparkles: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
87
|
+
Scissors: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
88
|
+
Dumbbell: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
89
|
+
Pill: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
90
|
+
Stethoscope: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
91
|
+
GraduationCap: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
92
|
+
Book: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
93
|
+
BookOpen: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
94
|
+
Gamepad2: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
95
|
+
Tv: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
96
|
+
Wifi: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
97
|
+
Droplets: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
98
|
+
Flame: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
99
|
+
TreePine: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
100
|
+
Dog: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
101
|
+
Baby: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
102
|
+
Shirt: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
103
|
+
Sofa: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
104
|
+
Hammer: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
105
|
+
Paintbrush: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
106
|
+
Lightbulb: import("react").ForwardRefExoticComponent<Omit<import("lucide-react").LucideProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
59
107
|
};
|
|
60
108
|
/**
|
|
61
109
|
* Get the icon component directly for custom rendering
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-map.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/icon-map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"icon-map.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/icon-map.ts"],"names":[],"mappings":"AA2GA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GnB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,QAAQ,8IAErC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,IAAI,IAAI,QAElD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC"}
|