@burdenoff/microfe-workspaces 2026.510.50
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/README.md +88 -0
- package/dist/WorkspacesRoot.d.ts +35 -0
- package/dist/WorkspacesRoot.d.ts.map +1 -0
- package/dist/WorkspacesRoot.js +71 -0
- package/dist/WorkspacesRoot.js.map +1 -0
- package/dist/WorkspacesRoutes.d.ts +10 -0
- package/dist/WorkspacesRoutes.d.ts.map +1 -0
- package/dist/WorkspacesRoutes.js +111 -0
- package/dist/WorkspacesRoutes.js.map +1 -0
- package/dist/components/CreateProjectDialog.d.ts +6 -0
- package/dist/components/CreateProjectDialog.d.ts.map +1 -0
- package/dist/components/CreateProjectDialog.js +115 -0
- package/dist/components/CreateProjectDialog.js.map +1 -0
- package/dist/components/CreateWorkspaceDialog.d.ts +2 -0
- package/dist/components/CreateWorkspaceDialog.d.ts.map +1 -0
- package/dist/components/CreateWorkspaceDialog.js +172 -0
- package/dist/components/CreateWorkspaceDialog.js.map +1 -0
- package/dist/components/InviteMemberDialog.d.ts +7 -0
- package/dist/components/InviteMemberDialog.d.ts.map +1 -0
- package/dist/components/InviteMemberDialog.js +148 -0
- package/dist/components/InviteMemberDialog.js.map +1 -0
- package/dist/components/MemberListItem.d.ts +11 -0
- package/dist/components/MemberListItem.d.ts.map +1 -0
- package/dist/components/MemberListItem.js +118 -0
- package/dist/components/MemberListItem.js.map +1 -0
- package/dist/components/ProjectCard.d.ts +13 -0
- package/dist/components/ProjectCard.d.ts.map +1 -0
- package/dist/components/ProjectCard.js +150 -0
- package/dist/components/ProjectCard.js.map +1 -0
- package/dist/components/WorkspaceCard.d.ts +8 -0
- package/dist/components/WorkspaceCard.d.ts.map +1 -0
- package/dist/components/WorkspaceCard.js +79 -0
- package/dist/components/WorkspaceCard.js.map +1 -0
- package/dist/components/WorkspacesErrorBoundary.d.ts +27 -0
- package/dist/components/WorkspacesErrorBoundary.d.ts.map +1 -0
- package/dist/components/WorkspacesErrorBoundary.js +136 -0
- package/dist/components/WorkspacesErrorBoundary.js.map +1 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/constants/permissions.d.ts +33 -0
- package/dist/constants/permissions.d.ts.map +1 -0
- package/dist/constants/permissions.js +31 -0
- package/dist/constants/permissions.js.map +1 -0
- package/dist/generated/global-operations.d.ts +279 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-operations.js +103 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/global-types.d.ts +20714 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2209 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +576 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +54990 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/useMemberMutations.d.ts +61 -0
- package/dist/hooks/useMemberMutations.d.ts.map +1 -0
- package/dist/hooks/useMemberMutations.js +263 -0
- package/dist/hooks/useMemberMutations.js.map +1 -0
- package/dist/hooks/useProjectMutations.d.ts +26 -0
- package/dist/hooks/useProjectMutations.d.ts.map +1 -0
- package/dist/hooks/useProjectMutations.js +127 -0
- package/dist/hooks/useProjectMutations.js.map +1 -0
- package/dist/hooks/useProjects.d.ts +16 -0
- package/dist/hooks/useProjects.d.ts.map +1 -0
- package/dist/hooks/useProjects.js +103 -0
- package/dist/hooks/useProjects.js.map +1 -0
- package/dist/hooks/useScopedNavigation.d.ts +4 -0
- package/dist/hooks/useScopedNavigation.d.ts.map +1 -0
- package/dist/hooks/useScopedNavigation.js +11 -0
- package/dist/hooks/useScopedNavigation.js.map +1 -0
- package/dist/hooks/useTenants.d.ts +13 -0
- package/dist/hooks/useTenants.d.ts.map +1 -0
- package/dist/hooks/useTenants.js +47 -0
- package/dist/hooks/useTenants.js.map +1 -0
- package/dist/hooks/useWorkspaceActivity.d.ts +12 -0
- package/dist/hooks/useWorkspaceActivity.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceActivity.js +31 -0
- package/dist/hooks/useWorkspaceActivity.js.map +1 -0
- package/dist/hooks/useWorkspaceMembers.d.ts +24 -0
- package/dist/hooks/useWorkspaceMembers.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceMembers.js +130 -0
- package/dist/hooks/useWorkspaceMembers.js.map +1 -0
- package/dist/hooks/useWorkspaceMutations.d.ts +36 -0
- package/dist/hooks/useWorkspaceMutations.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceMutations.js +119 -0
- package/dist/hooks/useWorkspaceMutations.js.map +1 -0
- package/dist/hooks/useWorkspacePermissions.d.ts +29 -0
- package/dist/hooks/useWorkspacePermissions.d.ts.map +1 -0
- package/dist/hooks/useWorkspacePermissions.js +33 -0
- package/dist/hooks/useWorkspacePermissions.js.map +1 -0
- package/dist/hooks/useWorkspaceRoles.d.ts +8 -0
- package/dist/hooks/useWorkspaceRoles.d.ts.map +1 -0
- package/dist/hooks/useWorkspaceRoles.js +31 -0
- package/dist/hooks/useWorkspaceRoles.js.map +1 -0
- package/dist/hooks/useWorkspaces.d.ts +21 -0
- package/dist/hooks/useWorkspaces.d.ts.map +1 -0
- package/dist/hooks/useWorkspaces.js +75 -0
- package/dist/hooks/useWorkspaces.js.map +1 -0
- package/dist/hooks/useWorkspacesEventEmitter.d.ts +14 -0
- package/dist/hooks/useWorkspacesEventEmitter.d.ts.map +1 -0
- package/dist/hooks/useWorkspacesEventEmitter.js +14 -0
- package/dist/hooks/useWorkspacesEventEmitter.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/pages/ActivityListPage.d.ts +2 -0
- package/dist/pages/ActivityListPage.d.ts.map +1 -0
- package/dist/pages/ActivityListPage.js +119 -0
- package/dist/pages/ActivityListPage.js.map +1 -0
- package/dist/pages/CreateWorkspacePage.d.ts +2 -0
- package/dist/pages/CreateWorkspacePage.d.ts.map +1 -0
- package/dist/pages/CreateWorkspacePage.js +264 -0
- package/dist/pages/CreateWorkspacePage.js.map +1 -0
- package/dist/pages/InviteAcceptancePage.d.ts +6 -0
- package/dist/pages/InviteAcceptancePage.d.ts.map +1 -0
- package/dist/pages/InviteAcceptancePage.js +495 -0
- package/dist/pages/InviteAcceptancePage.js.map +1 -0
- package/dist/pages/MembersListPage.d.ts +2 -0
- package/dist/pages/MembersListPage.d.ts.map +1 -0
- package/dist/pages/MembersListPage.js +420 -0
- package/dist/pages/MembersListPage.js.map +1 -0
- package/dist/pages/ProjectDetailPage.d.ts +2 -0
- package/dist/pages/ProjectDetailPage.d.ts.map +1 -0
- package/dist/pages/ProjectDetailPage.js +361 -0
- package/dist/pages/ProjectDetailPage.js.map +1 -0
- package/dist/pages/ProjectsListPage.d.ts +2 -0
- package/dist/pages/ProjectsListPage.d.ts.map +1 -0
- package/dist/pages/ProjectsListPage.js +398 -0
- package/dist/pages/ProjectsListPage.js.map +1 -0
- package/dist/pages/WorkspaceDetailPage.d.ts +2 -0
- package/dist/pages/WorkspaceDetailPage.d.ts.map +1 -0
- package/dist/pages/WorkspaceDetailPage.js +230 -0
- package/dist/pages/WorkspaceDetailPage.js.map +1 -0
- package/dist/pages/WorkspaceSettingsPage.d.ts +2 -0
- package/dist/pages/WorkspaceSettingsPage.d.ts.map +1 -0
- package/dist/pages/WorkspaceSettingsPage.js +157 -0
- package/dist/pages/WorkspaceSettingsPage.js.map +1 -0
- package/dist/pages/WorkspacesListPage.d.ts +2 -0
- package/dist/pages/WorkspacesListPage.d.ts.map +1 -0
- package/dist/pages/WorkspacesListPage.js +186 -0
- package/dist/pages/WorkspacesListPage.js.map +1 -0
- package/dist/pages/dashboard/DashboardCustomizer.d.ts +12 -0
- package/dist/pages/dashboard/DashboardCustomizer.d.ts.map +1 -0
- package/dist/pages/dashboard/DashboardCustomizer.js +136 -0
- package/dist/pages/dashboard/DashboardCustomizer.js.map +1 -0
- package/dist/pages/dashboard/DashboardGrid.d.ts +8 -0
- package/dist/pages/dashboard/DashboardGrid.d.ts.map +1 -0
- package/dist/pages/dashboard/DashboardGrid.js +58 -0
- package/dist/pages/dashboard/DashboardGrid.js.map +1 -0
- package/dist/pages/dashboard/DashboardPage.d.ts +14 -0
- package/dist/pages/dashboard/DashboardPage.d.ts.map +1 -0
- package/dist/pages/dashboard/DashboardPage.js +136 -0
- package/dist/pages/dashboard/DashboardPage.js.map +1 -0
- package/dist/pages/dashboard/WidgetWrapper.d.ts +17 -0
- package/dist/pages/dashboard/WidgetWrapper.d.ts.map +1 -0
- package/dist/pages/dashboard/WidgetWrapper.js +72 -0
- package/dist/pages/dashboard/WidgetWrapper.js.map +1 -0
- package/dist/pages/dashboard/config.d.ts +9 -0
- package/dist/pages/dashboard/config.d.ts.map +1 -0
- package/dist/pages/dashboard/config.js +214 -0
- package/dist/pages/dashboard/config.js.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardData.d.ts +9 -0
- package/dist/pages/dashboard/hooks/useDashboardData.d.ts.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardData.js +118 -0
- package/dist/pages/dashboard/hooks/useDashboardData.js.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts +4 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.d.ts.map +1 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.js +32 -0
- package/dist/pages/dashboard/hooks/useDashboardPreferences.js.map +1 -0
- package/dist/pages/dashboard/types.d.ts +145 -0
- package/dist/pages/dashboard/types.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.js +59 -0
- package/dist/pages/dashboard/widgets/GroupsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/MembersWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/MembersWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/MembersWidget.js +65 -0
- package/dist/pages/dashboard/widgets/MembersWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.js +91 -0
- package/dist/pages/dashboard/widgets/ProjectsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.js +80 -0
- package/dist/pages/dashboard/widgets/QuickActionsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js +81 -0
- package/dist/pages/dashboard/widgets/RecentActivityWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/StorageWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/StorageWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/StorageWidget.js +69 -0
- package/dist/pages/dashboard/widgets/StorageWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.js +59 -0
- package/dist/pages/dashboard/widgets/SystemHealthWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.js +61 -0
- package/dist/pages/dashboard/widgets/TagCloudWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/TipsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/TipsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/TipsWidget.js +67 -0
- package/dist/pages/dashboard/widgets/TipsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js +83 -0
- package/dist/pages/dashboard/widgets/UpcomingEventsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.js +71 -0
- package/dist/pages/dashboard/widgets/WelcomeWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js +97 -0
- package/dist/pages/dashboard/widgets/WorkflowStatsWidget.js.map +1 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts +4 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.d.ts.map +1 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js +67 -0
- package/dist/pages/dashboard/widgets/WorkspacesWidget.js.map +1 -0
- package/dist/providers/WorkspacesProvider.d.ts +13 -0
- package/dist/providers/WorkspacesProvider.d.ts.map +1 -0
- package/dist/providers/WorkspacesProvider.js +24 -0
- package/dist/providers/WorkspacesProvider.js.map +1 -0
- package/dist/store/workspacesStore.d.ts +82 -0
- package/dist/store/workspacesStore.d.ts.map +1 -0
- package/dist/store/workspacesStore.js +92 -0
- package/dist/store/workspacesStore.js.map +1 -0
- package/dist/types/index.d.ts +280 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/formatters.d.ts +60 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +61 -0
- package/dist/utils/formatters.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/dist/utils/projectTags.d.ts +6 -0
- package/dist/utils/projectTags.d.ts.map +1 -0
- package/dist/utils/projectTags.js +49 -0
- package/dist/utils/projectTags.js.map +1 -0
- package/dist/utils/slug.d.ts +13 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +8 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils/tokenHelpers.d.ts +114 -0
- package/dist/utils/tokenHelpers.d.ts.map +1 -0
- package/dist/utils/tokenHelpers.js +80 -0
- package/dist/utils/tokenHelpers.js.map +1 -0
- package/package.json +113 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for formatting dates and strings in the workspace module
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Format a date string or Date object to a human-readable format
|
|
6
|
+
* @param date - Date string or Date object
|
|
7
|
+
* @param options - Intl.DateTimeFormatOptions
|
|
8
|
+
* @returns Formatted date string
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatDate(date: string | Date, options?: Intl.DateTimeFormatOptions): string;
|
|
11
|
+
/**
|
|
12
|
+
* Format a date to a relative time string (e.g., "2 days ago")
|
|
13
|
+
* @param date - Date string or Date object
|
|
14
|
+
* @returns Relative time string
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatRelativeTime(date: string | Date): string;
|
|
17
|
+
/**
|
|
18
|
+
* Format a date and time to a readable string
|
|
19
|
+
* @param date - Date string or Date object
|
|
20
|
+
* @returns Formatted date and time string
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatDateTime(date: string | Date): string;
|
|
23
|
+
/**
|
|
24
|
+
* Truncate a string to a maximum length and add ellipsis
|
|
25
|
+
* @param str - String to truncate
|
|
26
|
+
* @param maxLength - Maximum length before truncation
|
|
27
|
+
* @returns Truncated string
|
|
28
|
+
*/
|
|
29
|
+
export declare function truncate(str: string, maxLength: number): string;
|
|
30
|
+
/**
|
|
31
|
+
* Convert a string to title case
|
|
32
|
+
* @param str - String to convert
|
|
33
|
+
* @returns Title cased string
|
|
34
|
+
*/
|
|
35
|
+
export declare function toTitleCase(str: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Format a workspace status to a human-readable string
|
|
38
|
+
* @param status - Workspace status
|
|
39
|
+
* @returns Formatted status string
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatWorkspaceStatus(status: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Format a project status to a human-readable string
|
|
44
|
+
* @param status - Project status
|
|
45
|
+
* @returns Formatted status string
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatProjectStatus(status: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Generate initials from a name
|
|
50
|
+
* @param name - Full name
|
|
51
|
+
* @returns Initials (up to 2 characters)
|
|
52
|
+
*/
|
|
53
|
+
export declare function getInitials(name: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Format a file size in bytes to a human-readable string
|
|
56
|
+
* @param bytes - Size in bytes
|
|
57
|
+
* @returns Formatted size string (e.g., "1.5 MB")
|
|
58
|
+
*/
|
|
59
|
+
export declare function formatFileSize(bytes: number): string;
|
|
60
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,GAAE,IAAI,CAAC,qBAIb,GACA,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CA+B9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQ1D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQpD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region src/utils/formatters.ts
|
|
2
|
+
function e(e, t = {
|
|
3
|
+
year: "numeric",
|
|
4
|
+
month: "short",
|
|
5
|
+
day: "numeric"
|
|
6
|
+
}) {
|
|
7
|
+
try {
|
|
8
|
+
let n = typeof e == "string" ? new Date(e) : e;
|
|
9
|
+
return new Intl.DateTimeFormat("en-US", t).format(n);
|
|
10
|
+
} catch {
|
|
11
|
+
return "Invalid date";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function t(e) {
|
|
15
|
+
try {
|
|
16
|
+
let t = typeof e == "string" ? new Date(e) : e, n = (/* @__PURE__ */ new Date()).getTime() - t.getTime(), r = Math.floor(n / 1e3), i = Math.floor(r / 60), a = Math.floor(i / 60), o = Math.floor(a / 24), s = Math.floor(o / 7), c = Math.floor(o / 30), l = Math.floor(o / 365);
|
|
17
|
+
return r < 60 ? "just now" : i < 60 ? `${i} ${i === 1 ? "minute" : "minutes"} ago` : a < 24 ? `${a} ${a === 1 ? "hour" : "hours"} ago` : o < 7 ? `${o} ${o === 1 ? "day" : "days"} ago` : s < 4 ? `${s} ${s === 1 ? "week" : "weeks"} ago` : c < 12 ? `${c} ${c === 1 ? "month" : "months"} ago` : `${l} ${l === 1 ? "year" : "years"} ago`;
|
|
18
|
+
} catch {
|
|
19
|
+
return "Invalid date";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function n(t) {
|
|
23
|
+
return e(t, {
|
|
24
|
+
year: "numeric",
|
|
25
|
+
month: "short",
|
|
26
|
+
day: "numeric",
|
|
27
|
+
hour: "numeric",
|
|
28
|
+
minute: "2-digit"
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function r(e, t) {
|
|
32
|
+
return e.length <= t ? e : `${e.slice(0, t)}...`;
|
|
33
|
+
}
|
|
34
|
+
function i(e) {
|
|
35
|
+
return e.toLowerCase().split(" ").map((e) => e.charAt(0).toUpperCase() + e.slice(1)).join(" ");
|
|
36
|
+
}
|
|
37
|
+
function a(e) {
|
|
38
|
+
return i(e.replace(/_/g, " "));
|
|
39
|
+
}
|
|
40
|
+
function o(e) {
|
|
41
|
+
return i(e.replace(/_/g, " "));
|
|
42
|
+
}
|
|
43
|
+
function s(e) {
|
|
44
|
+
let t = e.trim().split(/\s+/);
|
|
45
|
+
return t.length === 1 ? t[0].charAt(0).toUpperCase() : (t[0].charAt(0) + t[t.length - 1].charAt(0)).toUpperCase();
|
|
46
|
+
}
|
|
47
|
+
function c(e) {
|
|
48
|
+
if (e === 0) return "0 Bytes";
|
|
49
|
+
let t = 1024, n = [
|
|
50
|
+
"Bytes",
|
|
51
|
+
"KB",
|
|
52
|
+
"MB",
|
|
53
|
+
"GB",
|
|
54
|
+
"TB"
|
|
55
|
+
], r = Math.floor(Math.log(e) / Math.log(t));
|
|
56
|
+
return `${parseFloat((e / t ** +r).toFixed(2))} ${n[r]}`;
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { e as formatDate, n as formatDateTime, c as formatFileSize, o as formatProjectStatus, t as formatRelativeTime, a as formatWorkspaceStatus, s as getInitials, i as toTitleCase, r as truncate };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","names":[],"sources":["../../src/utils/formatters.ts"],"sourcesContent":["/**\n * Utility functions for formatting dates and strings in the workspace module\n */\n\n/**\n * Format a date string or Date object to a human-readable format\n * @param date - Date string or Date object\n * @param options - Intl.DateTimeFormatOptions\n * @returns Formatted date string\n */\nexport function formatDate(\n date: string | Date,\n options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }\n): string {\n try {\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n return new Intl.DateTimeFormat('en-US', options).format(dateObj);\n } catch {\n return 'Invalid date';\n }\n}\n\n/**\n * Format a date to a relative time string (e.g., \"2 days ago\")\n * @param date - Date string or Date object\n * @returns Relative time string\n */\nexport function formatRelativeTime(date: string | Date): string {\n try {\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n const now = new Date();\n const diffMs = now.getTime() - dateObj.getTime();\n const diffSec = Math.floor(diffMs / 1000);\n const diffMin = Math.floor(diffSec / 60);\n const diffHour = Math.floor(diffMin / 60);\n const diffDay = Math.floor(diffHour / 24);\n const diffWeek = Math.floor(diffDay / 7);\n const diffMonth = Math.floor(diffDay / 30);\n const diffYear = Math.floor(diffDay / 365);\n\n if (diffSec < 60) {\n return 'just now';\n } else if (diffMin < 60) {\n return `${diffMin} ${diffMin === 1 ? 'minute' : 'minutes'} ago`;\n } else if (diffHour < 24) {\n return `${diffHour} ${diffHour === 1 ? 'hour' : 'hours'} ago`;\n } else if (diffDay < 7) {\n return `${diffDay} ${diffDay === 1 ? 'day' : 'days'} ago`;\n } else if (diffWeek < 4) {\n return `${diffWeek} ${diffWeek === 1 ? 'week' : 'weeks'} ago`;\n } else if (diffMonth < 12) {\n return `${diffMonth} ${diffMonth === 1 ? 'month' : 'months'} ago`;\n } else {\n return `${diffYear} ${diffYear === 1 ? 'year' : 'years'} ago`;\n }\n } catch {\n return 'Invalid date';\n }\n}\n\n/**\n * Format a date and time to a readable string\n * @param date - Date string or Date object\n * @returns Formatted date and time string\n */\nexport function formatDateTime(date: string | Date): string {\n return formatDate(date, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n });\n}\n\n/**\n * Truncate a string to a maximum length and add ellipsis\n * @param str - String to truncate\n * @param maxLength - Maximum length before truncation\n * @returns Truncated string\n */\nexport function truncate(str: string, maxLength: number): string {\n if (str.length <= maxLength) return str;\n return `${str.slice(0, maxLength)}...`;\n}\n\n/**\n * Convert a string to title case\n * @param str - String to convert\n * @returns Title cased string\n */\nexport function toTitleCase(str: string): string {\n return str\n .toLowerCase()\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\n/**\n * Format a workspace status to a human-readable string\n * @param status - Workspace status\n * @returns Formatted status string\n */\nexport function formatWorkspaceStatus(status: string): string {\n return toTitleCase(status.replace(/_/g, ' '));\n}\n\n/**\n * Format a project status to a human-readable string\n * @param status - Project status\n * @returns Formatted status string\n */\nexport function formatProjectStatus(status: string): string {\n return toTitleCase(status.replace(/_/g, ' '));\n}\n\n/**\n * Generate initials from a name\n * @param name - Full name\n * @returns Initials (up to 2 characters)\n */\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) {\n return parts[0].charAt(0).toUpperCase();\n }\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase();\n}\n\n/**\n * Format a file size in bytes to a human-readable string\n * @param bytes - Size in bytes\n * @returns Formatted size string (e.g., \"1.5 MB\")\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n"],"mappings":";AAUA,SAAgB,EACd,GACA,IAAsC;CACpC,MAAM;CACN,OAAO;CACP,KAAK;CACN,EACO;AACR,KAAI;EACF,IAAM,IAAU,OAAO,KAAS,WAAW,IAAI,KAAK,EAAK,GAAG;AAC5D,SAAO,IAAI,KAAK,eAAe,SAAS,EAAQ,CAAC,OAAO,EAAQ;SAC1D;AACN,SAAO;;;AASX,SAAgB,EAAmB,GAA6B;AAC9D,KAAI;EACF,IAAM,IAAU,OAAO,KAAS,WAAW,IAAI,KAAK,EAAK,GAAG,GAEtD,qBADM,IAAI,MAAM,EACH,SAAS,GAAG,EAAQ,SAAS,EAC1C,IAAU,KAAK,MAAM,IAAS,IAAK,EACnC,IAAU,KAAK,MAAM,IAAU,GAAG,EAClC,IAAW,KAAK,MAAM,IAAU,GAAG,EACnC,IAAU,KAAK,MAAM,IAAW,GAAG,EACnC,IAAW,KAAK,MAAM,IAAU,EAAE,EAClC,IAAY,KAAK,MAAM,IAAU,GAAG,EACpC,IAAW,KAAK,MAAM,IAAU,IAAI;AAexC,SAbE,IAAU,KACL,aACE,IAAU,KACZ,GAAG,EAAQ,GAAG,MAAY,IAAI,WAAW,UAAU,QACjD,IAAW,KACb,GAAG,EAAS,GAAG,MAAa,IAAI,SAAS,QAAQ,QAC/C,IAAU,IACZ,GAAG,EAAQ,GAAG,MAAY,IAAI,QAAQ,OAAO,QAC3C,IAAW,IACb,GAAG,EAAS,GAAG,MAAa,IAAI,SAAS,QAAQ,QAC/C,IAAY,KACd,GAAG,EAAU,GAAG,MAAc,IAAI,UAAU,SAAS,QAErD,GAAG,EAAS,GAAG,MAAa,IAAI,SAAS,QAAQ;SAEpD;AACN,SAAO;;;AASX,SAAgB,EAAe,GAA6B;AAC1D,QAAO,EAAW,GAAM;EACtB,MAAM;EACN,OAAO;EACP,KAAK;EACL,MAAM;EACN,QAAQ;EACT,CAAC;;AASJ,SAAgB,EAAS,GAAa,GAA2B;AAE/D,QADI,EAAI,UAAU,IAAkB,IAC7B,GAAG,EAAI,MAAM,GAAG,EAAU,CAAC;;AAQpC,SAAgB,EAAY,GAAqB;AAC/C,QAAO,EACJ,aAAa,CACb,MAAM,IAAI,CACV,KAAK,MAAS,EAAK,OAAO,EAAE,CAAC,aAAa,GAAG,EAAK,MAAM,EAAE,CAAC,CAC3D,KAAK,IAAI;;AAQd,SAAgB,EAAsB,GAAwB;AAC5D,QAAO,EAAY,EAAO,QAAQ,MAAM,IAAI,CAAC;;AAQ/C,SAAgB,EAAoB,GAAwB;AAC1D,QAAO,EAAY,EAAO,QAAQ,MAAM,IAAI,CAAC;;AAQ/C,SAAgB,EAAY,GAAsB;CAChD,IAAM,IAAQ,EAAK,MAAM,CAAC,MAAM,MAAM;AAItC,QAHI,EAAM,WAAW,IACZ,EAAM,GAAG,OAAO,EAAE,CAAC,aAAa,IAEjC,EAAM,GAAG,OAAO,EAAE,GAAG,EAAM,EAAM,SAAS,GAAG,OAAO,EAAE,EAAE,aAAa;;AAQ/E,SAAgB,EAAe,GAAuB;AACpD,KAAI,MAAU,EAAG,QAAO;CAExB,IAAM,IAAI,MACJ,IAAQ;EAAC;EAAS;EAAM;EAAM;EAAM;EAAK,EACzC,IAAI,KAAK,MAAM,KAAK,IAAI,EAAM,GAAG,KAAK,IAAI,EAAE,CAAC;AAEnD,QAAO,GAAG,YAAY,IAAiB,MAAG,GAAI,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { getPlatform, isNative, isIOS, isAndroid, isWeb, nativeImpact, nativeNotify, nativeToast, nativeConfirm, nativeCopyText, nativeShare, nativeOpenUrl, useNativePlatform, useSafeArea, useNativeKeyboard, useAppState, useDeviceInfo, useHaptics, useStatusBar, } from '@burdenoff/fe-libs/shared/native';
|
|
2
|
+
export type { BurdenoffNativePlatform, BurdenoffNativeBridge, SafeAreaInsets, DeviceInfo, HapticImpactStyle, HapticNotificationType, ToastDuration, ConfirmOptions, ShareOptions, AppState, StatusBarTheme, } from '@burdenoff/fe-libs/shared/native';
|
|
3
|
+
//# sourceMappingURL=nativeBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeBridge.d.ts","sourceRoot":"","sources":["../../src/utils/nativeBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,cAAc,GACf,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TagItem } from '../../../../fe-libs/src/tag/index.ts';
|
|
2
|
+
import { ProjectTag } from '../types';
|
|
3
|
+
|
|
4
|
+
export declare function normalizeProjectTags(value: unknown): ProjectTag[];
|
|
5
|
+
export declare function toProjectTag(tag: TagItem): ProjectTag;
|
|
6
|
+
//# sourceMappingURL=projectTags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectTags.d.ts","sourceRoot":"","sources":["../../src/utils/projectTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAU3C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,EAAE,CAoCjE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAgBrD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/utils/projectTags.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
4
|
+
}
|
|
5
|
+
function t(e) {
|
|
6
|
+
return typeof e == "string" && e.trim().length > 0 ? e.trim() : void 0;
|
|
7
|
+
}
|
|
8
|
+
function n(n) {
|
|
9
|
+
return Array.isArray(n) ? n.flatMap((n) => {
|
|
10
|
+
if (!e(n)) return [];
|
|
11
|
+
let r = t(n.tagId) ?? t(n.id), i = t(n.key), a = t(n.label) ?? t(n.name);
|
|
12
|
+
return !r || !i || !a ? [] : [{
|
|
13
|
+
id: r,
|
|
14
|
+
tagId: r,
|
|
15
|
+
key: i,
|
|
16
|
+
label: a,
|
|
17
|
+
value: t(n.value) ?? null,
|
|
18
|
+
vocabularyId: t(n.vocabularyId) ?? null,
|
|
19
|
+
vocabularyKey: t(n.vocabularyKey) ?? null,
|
|
20
|
+
parentTagId: t(n.parentTagId) ?? null,
|
|
21
|
+
hierarchyPath: t(n.hierarchyPath) ?? null,
|
|
22
|
+
color: t(n.color) ?? null,
|
|
23
|
+
icon: t(n.icon) ?? null,
|
|
24
|
+
description: t(n.description) ?? null,
|
|
25
|
+
metadata: e(n.metadata) ? n.metadata : null
|
|
26
|
+
}];
|
|
27
|
+
}) : [];
|
|
28
|
+
}
|
|
29
|
+
function r(e) {
|
|
30
|
+
return {
|
|
31
|
+
id: e.id,
|
|
32
|
+
tagId: e.id,
|
|
33
|
+
key: e.key,
|
|
34
|
+
label: e.label,
|
|
35
|
+
value: e.value ?? null,
|
|
36
|
+
vocabularyId: e.vocabularyId ?? null,
|
|
37
|
+
vocabularyKey: e.vocabularyKey ?? e.vocabulary?.key ?? null,
|
|
38
|
+
parentTagId: e.parentId ?? null,
|
|
39
|
+
hierarchyPath: e.hierarchyPath ?? null,
|
|
40
|
+
color: e.color ?? null,
|
|
41
|
+
icon: e.icon ?? null,
|
|
42
|
+
description: e.description ?? null,
|
|
43
|
+
metadata: null
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { n as normalizeProjectTags, r as toProjectTag };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=projectTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectTags.js","names":[],"sources":["../../src/utils/projectTags.ts"],"sourcesContent":["import type { TagItem } from '@burdenoff/fe-libs/tag';\n\nimport type { ProjectTag } from '../types';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction asOptionalString(value: unknown): string | null | undefined {\n return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nexport function normalizeProjectTags(value: unknown): ProjectTag[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.flatMap((entry) => {\n if (!isRecord(entry)) {\n return [];\n }\n\n const id = asOptionalString(entry['tagId']) ?? asOptionalString(entry['id']);\n const key = asOptionalString(entry['key']);\n const label = asOptionalString(entry['label']) ?? asOptionalString(entry['name']);\n\n if (!id || !key || !label) {\n return [];\n }\n\n return [\n {\n id,\n tagId: id,\n key,\n label,\n value: asOptionalString(entry['value']) ?? null,\n vocabularyId: asOptionalString(entry['vocabularyId']) ?? null,\n vocabularyKey: asOptionalString(entry['vocabularyKey']) ?? null,\n parentTagId: asOptionalString(entry['parentTagId']) ?? null,\n hierarchyPath: asOptionalString(entry['hierarchyPath']) ?? null,\n color: asOptionalString(entry['color']) ?? null,\n icon: asOptionalString(entry['icon']) ?? null,\n description: asOptionalString(entry['description']) ?? null,\n metadata: isRecord(entry['metadata']) ? entry['metadata'] : null,\n } satisfies ProjectTag,\n ];\n });\n}\n\nexport function toProjectTag(tag: TagItem): ProjectTag {\n return {\n id: tag.id,\n tagId: tag.id,\n key: tag.key,\n label: tag.label,\n value: tag.value ?? null,\n vocabularyId: tag.vocabularyId ?? null,\n vocabularyKey: tag.vocabularyKey ?? tag.vocabulary?.key ?? null,\n parentTagId: tag.parentId ?? null,\n hierarchyPath: tag.hierarchyPath ?? null,\n color: tag.color ?? null,\n icon: tag.icon ?? null,\n description: tag.description ?? null,\n metadata: null,\n };\n}\n"],"mappings":";AAIA,SAAS,EAAS,GAAkD;AAClE,QAAO,OAAO,KAAU,cAAY,KAAkB,CAAC,MAAM,QAAQ,EAAM;;AAG7E,SAAS,EAAiB,GAA2C;AACnE,QAAO,OAAO,KAAU,YAAY,EAAM,MAAM,CAAC,SAAS,IAAI,EAAM,MAAM,GAAG,KAAA;;AAG/E,SAAgB,EAAqB,GAA8B;AAKjE,QAJK,MAAM,QAAQ,EAAM,GAIlB,EAAM,SAAS,MAAU;AAC9B,MAAI,CAAC,EAAS,EAAM,CAClB,QAAO,EAAE;EAGX,IAAM,IAAK,EAAiB,EAAM,MAAS,IAAI,EAAiB,EAAM,GAAM,EACtE,IAAM,EAAiB,EAAM,IAAO,EACpC,IAAQ,EAAiB,EAAM,MAAS,IAAI,EAAiB,EAAM,KAAQ;AAMjF,SAJI,CAAC,KAAM,CAAC,KAAO,CAAC,IACX,EAAE,GAGJ,CACL;GACE;GACA,OAAO;GACP;GACA;GACA,OAAO,EAAiB,EAAM,MAAS,IAAI;GAC3C,cAAc,EAAiB,EAAM,aAAgB,IAAI;GACzD,eAAe,EAAiB,EAAM,cAAiB,IAAI;GAC3D,aAAa,EAAiB,EAAM,YAAe,IAAI;GACvD,eAAe,EAAiB,EAAM,cAAiB,IAAI;GAC3D,OAAO,EAAiB,EAAM,MAAS,IAAI;GAC3C,MAAM,EAAiB,EAAM,KAAQ,IAAI;GACzC,aAAa,EAAiB,EAAM,YAAe,IAAI;GACvD,UAAU,EAAS,EAAM,SAAY,GAAG,EAAM,WAAc;GAC7D,CACF;GACD,GAjCO,EAAE;;AAoCb,SAAgB,EAAa,GAA0B;AACrD,QAAO;EACL,IAAI,EAAI;EACR,OAAO,EAAI;EACX,KAAK,EAAI;EACT,OAAO,EAAI;EACX,OAAO,EAAI,SAAS;EACpB,cAAc,EAAI,gBAAgB;EAClC,eAAe,EAAI,iBAAiB,EAAI,YAAY,OAAO;EAC3D,aAAa,EAAI,YAAY;EAC7B,eAAe,EAAI,iBAAiB;EACpC,OAAO,EAAI,SAAS;EACpB,MAAM,EAAI,QAAQ;EAClB,aAAa,EAAI,eAAe;EAChC,UAAU;EACX"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slug utility functions
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for generating URL-friendly slugs
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate a URL-friendly slug from a name
|
|
8
|
+
*
|
|
9
|
+
* @param name - The name to convert to a slug
|
|
10
|
+
* @returns A lowercase, hyphenated string suitable for URLs
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateSlug(name: string): string;
|
|
13
|
+
//# sourceMappingURL=slug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/utils/slug.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.js","names":[],"sources":["../../src/utils/slug.ts"],"sourcesContent":["/**\n * Slug utility functions\n *\n * Shared utilities for generating URL-friendly slugs\n */\n\n/**\n * Generate a URL-friendly slug from a name\n *\n * @param name - The name to convert to a slug\n * @returns A lowercase, hyphenated string suitable for URLs\n */\nexport function generateSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .substring(0, 50);\n}\n"],"mappings":";AAYA,SAAgB,EAAa,GAAsB;AACjD,QAAO,EACJ,aAAa,CACb,QAAQ,eAAe,IAAI,CAC3B,QAAQ,YAAY,GAAG,CACvB,UAAU,GAAG,GAAG"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { WorkspaceStatus, ProjectStatus, WorkspaceRole } from '../types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get semantic token classes for workspace status badges
|
|
5
|
+
*
|
|
6
|
+
* Uses semantic tokens that automatically adapt to theme (light/dark)
|
|
7
|
+
* and brand (workspaces, fluidgrids, etc.)
|
|
8
|
+
*
|
|
9
|
+
* @param status - The workspace status
|
|
10
|
+
* @returns Tailwind class string with semantic token classes
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <Badge className={getWorkspaceStatusClasses('ACTIVE')}>
|
|
15
|
+
* ACTIVE
|
|
16
|
+
* </Badge>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function getWorkspaceStatusClasses(status: WorkspaceStatus): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get semantic token classes for project status badges
|
|
22
|
+
*
|
|
23
|
+
* @param status - The project status
|
|
24
|
+
* @returns Tailwind class string with semantic token classes
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <Badge className={getProjectStatusClasses('ACTIVE')}>
|
|
29
|
+
* ACTIVE
|
|
30
|
+
* </Badge>
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function getProjectStatusClasses(status: ProjectStatus): string;
|
|
34
|
+
/**
|
|
35
|
+
* Get semantic token classes for member role badges
|
|
36
|
+
*
|
|
37
|
+
* @param role - The workspace member role
|
|
38
|
+
* @returns Tailwind class string with semantic token classes
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* <Badge className={getMemberRoleClasses('owner')}>
|
|
43
|
+
* Owner
|
|
44
|
+
* </Badge>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function getMemberRoleClasses(role: WorkspaceRole): string;
|
|
48
|
+
/**
|
|
49
|
+
* Get semantic icon color class for workspace status
|
|
50
|
+
*
|
|
51
|
+
* Used for status indicator icons that need to match the status color
|
|
52
|
+
*
|
|
53
|
+
* @param status - The workspace status
|
|
54
|
+
* @returns Tailwind class string for text color
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```tsx
|
|
58
|
+
* <CheckCircle className={getWorkspaceStatusIconClass('ACTIVE')} size={16} />
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function getWorkspaceStatusIconClass(status: WorkspaceStatus): string;
|
|
62
|
+
/**
|
|
63
|
+
* Get semantic icon color class for project status
|
|
64
|
+
*
|
|
65
|
+
* @param status - The project status
|
|
66
|
+
* @returns Tailwind class string for text color
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <Circle className={getProjectStatusIconClass(project.status)} size={12} />
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function getProjectStatusIconClass(status: ProjectStatus): string;
|
|
74
|
+
/**
|
|
75
|
+
* Get semantic background class for workspace status (for larger areas)
|
|
76
|
+
*
|
|
77
|
+
* @param status - The workspace status
|
|
78
|
+
* @returns Tailwind class string for background color
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```tsx
|
|
82
|
+
* <div className={getWorkspaceStatusBgClass('SUSPENDED')}>
|
|
83
|
+
* Workspace is suspended
|
|
84
|
+
* </div>
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function getWorkspaceStatusBgClass(status: WorkspaceStatus): string;
|
|
88
|
+
/**
|
|
89
|
+
* Get human-readable label for workspace status
|
|
90
|
+
*
|
|
91
|
+
* @param status - The workspace status
|
|
92
|
+
* @returns Formatted status label
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```tsx
|
|
96
|
+
* getWorkspaceStatusLabel('ACTIVE') // "Active"
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function getWorkspaceStatusLabel(status: WorkspaceStatus): string;
|
|
100
|
+
/**
|
|
101
|
+
* Get human-readable label for project status
|
|
102
|
+
*
|
|
103
|
+
* @param status - The project status
|
|
104
|
+
* @returns Formatted status label
|
|
105
|
+
*/
|
|
106
|
+
export declare function getProjectStatusLabel(status: ProjectStatus): string;
|
|
107
|
+
/**
|
|
108
|
+
* Get human-readable label for member role
|
|
109
|
+
*
|
|
110
|
+
* @param role - The workspace member role
|
|
111
|
+
* @returns Formatted role label
|
|
112
|
+
*/
|
|
113
|
+
export declare function getMemberRoleLabel(role: WorkspaceRole): string;
|
|
114
|
+
//# sourceMappingURL=tokenHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/tokenHelpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAazE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAUrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAShE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAS3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CASzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CASvE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAQnE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAS9D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
//#region src/utils/tokenHelpers.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let t = {
|
|
4
|
+
ACTIVE: "bg-workspace-active-bgSubtle text-workspace-active-text border-workspace-active-border",
|
|
5
|
+
SUSPENDED: "bg-workspace-suspended-bgSubtle text-workspace-suspended-text border-workspace-suspended-border",
|
|
6
|
+
ARCHIVED: "bg-workspace-archived-bgSubtle text-workspace-archived-text border-workspace-archived-border",
|
|
7
|
+
DELETED: "bg-workspace-deleted-bgSubtle text-workspace-deleted-text border-workspace-deleted-border"
|
|
8
|
+
};
|
|
9
|
+
return t[e] || t.ARCHIVED;
|
|
10
|
+
}
|
|
11
|
+
function t(e) {
|
|
12
|
+
let t = {
|
|
13
|
+
ACTIVE: "bg-project-active-bgSubtle text-project-active-text border-project-active-border",
|
|
14
|
+
INACTIVE: "bg-project-inactive-bgSubtle text-project-inactive-text border-project-inactive-border",
|
|
15
|
+
ARCHIVED: "bg-workspace-archived-bgSubtle text-workspace-archived-text border-workspace-archived-border"
|
|
16
|
+
};
|
|
17
|
+
return t[e] || t.INACTIVE;
|
|
18
|
+
}
|
|
19
|
+
function n(e) {
|
|
20
|
+
let t = {
|
|
21
|
+
owner: "bg-role-owner-bgSubtle text-role-owner-text border-role-owner-border",
|
|
22
|
+
admin: "bg-role-admin-bgSubtle text-role-admin-text border-role-admin-border",
|
|
23
|
+
member: "bg-role-member-bgSubtle text-role-member-text border-role-member-border",
|
|
24
|
+
guest: "bg-role-member-bgSubtle text-role-member-text border-role-member-border"
|
|
25
|
+
};
|
|
26
|
+
return t[e] || t.member;
|
|
27
|
+
}
|
|
28
|
+
function r(e) {
|
|
29
|
+
let t = {
|
|
30
|
+
ACTIVE: "text-workspace-active-text",
|
|
31
|
+
SUSPENDED: "text-workspace-suspended-text",
|
|
32
|
+
ARCHIVED: "text-workspace-archived-text",
|
|
33
|
+
DELETED: "text-workspace-deleted-text"
|
|
34
|
+
};
|
|
35
|
+
return t[e] || t.ARCHIVED;
|
|
36
|
+
}
|
|
37
|
+
function i(e) {
|
|
38
|
+
let t = {
|
|
39
|
+
ACTIVE: "text-project-active-text",
|
|
40
|
+
INACTIVE: "text-project-inactive-text",
|
|
41
|
+
ARCHIVED: "text-workspace-archived-text"
|
|
42
|
+
};
|
|
43
|
+
return t[e] || t.INACTIVE;
|
|
44
|
+
}
|
|
45
|
+
function a(e) {
|
|
46
|
+
let t = {
|
|
47
|
+
ACTIVE: "bg-workspace-active-bg",
|
|
48
|
+
SUSPENDED: "bg-workspace-suspended-bg",
|
|
49
|
+
ARCHIVED: "bg-workspace-archived-bg",
|
|
50
|
+
DELETED: "bg-workspace-deleted-bg"
|
|
51
|
+
};
|
|
52
|
+
return t[e] || t.ARCHIVED;
|
|
53
|
+
}
|
|
54
|
+
function o(e) {
|
|
55
|
+
return {
|
|
56
|
+
ACTIVE: "Active",
|
|
57
|
+
SUSPENDED: "Suspended",
|
|
58
|
+
ARCHIVED: "Archived",
|
|
59
|
+
DELETED: "Deleted"
|
|
60
|
+
}[e] || e;
|
|
61
|
+
}
|
|
62
|
+
function s(e) {
|
|
63
|
+
return {
|
|
64
|
+
ACTIVE: "Active",
|
|
65
|
+
INACTIVE: "Inactive",
|
|
66
|
+
ARCHIVED: "Archived"
|
|
67
|
+
}[e] || e;
|
|
68
|
+
}
|
|
69
|
+
function c(e) {
|
|
70
|
+
return {
|
|
71
|
+
owner: "Owner",
|
|
72
|
+
admin: "Admin",
|
|
73
|
+
member: "Member",
|
|
74
|
+
guest: "Guest"
|
|
75
|
+
}[e] || e;
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { n as getMemberRoleClasses, c as getMemberRoleLabel, t as getProjectStatusClasses, i as getProjectStatusIconClass, s as getProjectStatusLabel, a as getWorkspaceStatusBgClass, e as getWorkspaceStatusClasses, r as getWorkspaceStatusIconClass, o as getWorkspaceStatusLabel };
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=tokenHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenHelpers.js","names":[],"sources":["../../src/utils/tokenHelpers.ts"],"sourcesContent":["/**\n * Token-based style helpers for Workspaces module\n *\n * These helpers map domain concepts (workspace status, project status, member roles)\n * to semantic tokens, ensuring consistent, theme-aware styling across components.\n *\n * @module workspaces/utils/tokenHelpers\n */\n\nimport type { WorkspaceStatus, ProjectStatus, WorkspaceRole } from '../types';\n\n/**\n * Get semantic token classes for workspace status badges\n *\n * Uses semantic tokens that automatically adapt to theme (light/dark)\n * and brand (workspaces, fluidgrids, etc.)\n *\n * @param status - The workspace status\n * @returns Tailwind class string with semantic token classes\n *\n * @example\n * ```tsx\n * <Badge className={getWorkspaceStatusClasses('ACTIVE')}>\n * ACTIVE\n * </Badge>\n * ```\n */\nexport function getWorkspaceStatusClasses(status: WorkspaceStatus): string {\n const statusClasses: Record<WorkspaceStatus, string> = {\n ACTIVE:\n 'bg-workspace-active-bgSubtle text-workspace-active-text border-workspace-active-border',\n SUSPENDED:\n 'bg-workspace-suspended-bgSubtle text-workspace-suspended-text border-workspace-suspended-border',\n ARCHIVED:\n 'bg-workspace-archived-bgSubtle text-workspace-archived-text border-workspace-archived-border',\n DELETED:\n 'bg-workspace-deleted-bgSubtle text-workspace-deleted-text border-workspace-deleted-border',\n };\n\n return statusClasses[status] || statusClasses.ARCHIVED;\n}\n\n/**\n * Get semantic token classes for project status badges\n *\n * @param status - The project status\n * @returns Tailwind class string with semantic token classes\n *\n * @example\n * ```tsx\n * <Badge className={getProjectStatusClasses('ACTIVE')}>\n * ACTIVE\n * </Badge>\n * ```\n */\nexport function getProjectStatusClasses(status: ProjectStatus): string {\n const statusClasses: Record<ProjectStatus, string> = {\n ACTIVE: 'bg-project-active-bgSubtle text-project-active-text border-project-active-border',\n INACTIVE:\n 'bg-project-inactive-bgSubtle text-project-inactive-text border-project-inactive-border',\n ARCHIVED:\n 'bg-workspace-archived-bgSubtle text-workspace-archived-text border-workspace-archived-border',\n };\n\n return statusClasses[status] || statusClasses.INACTIVE;\n}\n\n/**\n * Get semantic token classes for member role badges\n *\n * @param role - The workspace member role\n * @returns Tailwind class string with semantic token classes\n *\n * @example\n * ```tsx\n * <Badge className={getMemberRoleClasses('owner')}>\n * Owner\n * </Badge>\n * ```\n */\nexport function getMemberRoleClasses(role: WorkspaceRole): string {\n const roleClasses: Record<WorkspaceRole, string> = {\n owner: 'bg-role-owner-bgSubtle text-role-owner-text border-role-owner-border',\n admin: 'bg-role-admin-bgSubtle text-role-admin-text border-role-admin-border',\n member: 'bg-role-member-bgSubtle text-role-member-text border-role-member-border',\n guest: 'bg-role-member-bgSubtle text-role-member-text border-role-member-border', // Guest uses member styling\n };\n\n return roleClasses[role] || roleClasses.member;\n}\n\n/**\n * Get semantic icon color class for workspace status\n *\n * Used for status indicator icons that need to match the status color\n *\n * @param status - The workspace status\n * @returns Tailwind class string for text color\n *\n * @example\n * ```tsx\n * <CheckCircle className={getWorkspaceStatusIconClass('ACTIVE')} size={16} />\n * ```\n */\nexport function getWorkspaceStatusIconClass(status: WorkspaceStatus): string {\n const iconClasses: Record<WorkspaceStatus, string> = {\n ACTIVE: 'text-workspace-active-text',\n SUSPENDED: 'text-workspace-suspended-text',\n ARCHIVED: 'text-workspace-archived-text',\n DELETED: 'text-workspace-deleted-text',\n };\n\n return iconClasses[status] || iconClasses.ARCHIVED;\n}\n\n/**\n * Get semantic icon color class for project status\n *\n * @param status - The project status\n * @returns Tailwind class string for text color\n *\n * @example\n * ```tsx\n * <Circle className={getProjectStatusIconClass(project.status)} size={12} />\n * ```\n */\nexport function getProjectStatusIconClass(status: ProjectStatus): string {\n const iconClasses: Record<ProjectStatus, string> = {\n ACTIVE: 'text-project-active-text',\n INACTIVE: 'text-project-inactive-text',\n ARCHIVED: 'text-workspace-archived-text',\n };\n\n return iconClasses[status] || iconClasses.INACTIVE;\n}\n\n/**\n * Get semantic background class for workspace status (for larger areas)\n *\n * @param status - The workspace status\n * @returns Tailwind class string for background color\n *\n * @example\n * ```tsx\n * <div className={getWorkspaceStatusBgClass('SUSPENDED')}>\n * Workspace is suspended\n * </div>\n * ```\n */\nexport function getWorkspaceStatusBgClass(status: WorkspaceStatus): string {\n const bgClasses: Record<WorkspaceStatus, string> = {\n ACTIVE: 'bg-workspace-active-bg',\n SUSPENDED: 'bg-workspace-suspended-bg',\n ARCHIVED: 'bg-workspace-archived-bg',\n DELETED: 'bg-workspace-deleted-bg',\n };\n\n return bgClasses[status] || bgClasses.ARCHIVED;\n}\n\n/**\n * Get human-readable label for workspace status\n *\n * @param status - The workspace status\n * @returns Formatted status label\n *\n * @example\n * ```tsx\n * getWorkspaceStatusLabel('ACTIVE') // \"Active\"\n * ```\n */\nexport function getWorkspaceStatusLabel(status: WorkspaceStatus): string {\n const labels: Record<WorkspaceStatus, string> = {\n ACTIVE: 'Active',\n SUSPENDED: 'Suspended',\n ARCHIVED: 'Archived',\n DELETED: 'Deleted',\n };\n\n return labels[status] || status;\n}\n\n/**\n * Get human-readable label for project status\n *\n * @param status - The project status\n * @returns Formatted status label\n */\nexport function getProjectStatusLabel(status: ProjectStatus): string {\n const labels: Record<ProjectStatus, string> = {\n ACTIVE: 'Active',\n INACTIVE: 'Inactive',\n ARCHIVED: 'Archived',\n };\n\n return labels[status] || status;\n}\n\n/**\n * Get human-readable label for member role\n *\n * @param role - The workspace member role\n * @returns Formatted role label\n */\nexport function getMemberRoleLabel(role: WorkspaceRole): string {\n const labels: Record<WorkspaceRole, string> = {\n owner: 'Owner',\n admin: 'Admin',\n member: 'Member',\n guest: 'Guest',\n };\n\n return labels[role] || role;\n}\n"],"mappings":";AA2BA,SAAgB,EAA0B,GAAiC;CACzE,IAAM,IAAiD;EACrD,QACE;EACF,WACE;EACF,UACE;EACF,SACE;EACH;AAED,QAAO,EAAc,MAAW,EAAc;;AAgBhD,SAAgB,EAAwB,GAA+B;CACrE,IAAM,IAA+C;EACnD,QAAQ;EACR,UACE;EACF,UACE;EACH;AAED,QAAO,EAAc,MAAW,EAAc;;AAgBhD,SAAgB,EAAqB,GAA6B;CAChE,IAAM,IAA6C;EACjD,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACR;AAED,QAAO,EAAY,MAAS,EAAY;;AAgB1C,SAAgB,EAA4B,GAAiC;CAC3E,IAAM,IAA+C;EACnD,QAAQ;EACR,WAAW;EACX,UAAU;EACV,SAAS;EACV;AAED,QAAO,EAAY,MAAW,EAAY;;AAc5C,SAAgB,EAA0B,GAA+B;CACvE,IAAM,IAA6C;EACjD,QAAQ;EACR,UAAU;EACV,UAAU;EACX;AAED,QAAO,EAAY,MAAW,EAAY;;AAgB5C,SAAgB,EAA0B,GAAiC;CACzE,IAAM,IAA6C;EACjD,QAAQ;EACR,WAAW;EACX,UAAU;EACV,SAAS;EACV;AAED,QAAO,EAAU,MAAW,EAAU;;AAcxC,SAAgB,EAAwB,GAAiC;AAQvE,QAPgD;EAC9C,QAAQ;EACR,WAAW;EACX,UAAU;EACV,SAAS;EACV,CAEa,MAAW;;AAS3B,SAAgB,EAAsB,GAA+B;AAOnE,QAN8C;EAC5C,QAAQ;EACR,UAAU;EACV,UAAU;EACX,CAEa,MAAW;;AAS3B,SAAgB,EAAmB,GAA6B;AAQ9D,QAP8C;EAC5C,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAO;EACR,CAEa,MAAS"}
|
package/package.json
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@burdenoff/microfe-workspaces",
|
|
3
|
+
"version": "2026.510.50",
|
|
4
|
+
"description": "Workspaces microfrontend for Burdenoff products",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist",
|
|
8
|
+
"package.json",
|
|
9
|
+
"README.md"
|
|
10
|
+
],
|
|
11
|
+
"imports": {
|
|
12
|
+
"#generated/*": "./src/generated/*",
|
|
13
|
+
"#src/*": "./src/*",
|
|
14
|
+
"#workspaces/*": "./src/workspaces/*"
|
|
15
|
+
},
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"scripts": {
|
|
25
|
+
"dev": "vite",
|
|
26
|
+
"build": "tsc && vite build",
|
|
27
|
+
"lint": "eslint .",
|
|
28
|
+
"lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
|
|
29
|
+
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
|
30
|
+
"format:check": "prettier --check \"src/**/*.{ts,tsx}\"",
|
|
31
|
+
"type:check": "tsc --noEmit",
|
|
32
|
+
"sanity": "bun run codegen && bun run lint:sanity && bun run format && bun run type:check && bun run build",
|
|
33
|
+
"schema:pull": "graphql-codegen --project schema-wspace && graphql-codegen --project schema-global",
|
|
34
|
+
"codegen": "graphql-codegen --project wspace && graphql-codegen --project global",
|
|
35
|
+
"codegen:all": "bun run schema:pull && bun run codegen",
|
|
36
|
+
"switch:status": "bun scripts/deps-mode.ts status",
|
|
37
|
+
"switch:remote": "bun scripts/deps-mode.ts remote",
|
|
38
|
+
"switch:local": "bun scripts/deps-mode.ts local",
|
|
39
|
+
"switch:check": "bun scripts/deps-mode.ts check",
|
|
40
|
+
"prepare": "lefthook install || true"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@apollo/client": "^4.0.11",
|
|
44
|
+
"@burdenoff/fe-libs": "2026.507.125",
|
|
45
|
+
"@iconify/react": "^6.0.2",
|
|
46
|
+
"@radix-ui/react-icons": "^1.3.2",
|
|
47
|
+
"@tanstack/react-query": "^5.62.13",
|
|
48
|
+
"axios": ">=1.15.0",
|
|
49
|
+
"graphql": "^16.10.0",
|
|
50
|
+
"graphql-ws": "^5.16.0",
|
|
51
|
+
"immer": "^11.1.0",
|
|
52
|
+
"lucide-react": "^0.468.0",
|
|
53
|
+
"nanoid": "^5.1.6",
|
|
54
|
+
"react": "^19.0.0",
|
|
55
|
+
"react-dom": "^19.0.0",
|
|
56
|
+
"react-hook-form": "^7.56.4",
|
|
57
|
+
"react-router-dom": "^7.1.3",
|
|
58
|
+
"sonner": "^2.0.7",
|
|
59
|
+
"zustand": "^5.0.3"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@eslint/js": "^9.39.1",
|
|
63
|
+
"@graphql-codegen/add": "^5.0.0",
|
|
64
|
+
"@graphql-codegen/cli": "^5.0.0",
|
|
65
|
+
"@graphql-codegen/import-types-preset": "^3.0.0",
|
|
66
|
+
"@graphql-codegen/schema-ast": "^4.0.0",
|
|
67
|
+
"@graphql-codegen/typescript": "^4.0.0",
|
|
68
|
+
"@graphql-codegen/typescript-operations": "^4.0.0",
|
|
69
|
+
"@graphql-codegen/typescript-react-apollo": "^4.0.0",
|
|
70
|
+
"@types/node": "^24.5.2",
|
|
71
|
+
"@types/react": "^19.0.2",
|
|
72
|
+
"@types/react-dom": "^19.0.2",
|
|
73
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
74
|
+
"autoprefixer": "^10.4.20",
|
|
75
|
+
"eslint": "^9.18.0",
|
|
76
|
+
"eslint-plugin-react": "^7.37.5",
|
|
77
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
78
|
+
"lefthook": "^2.1.1",
|
|
79
|
+
"postcss": "^8.4.49",
|
|
80
|
+
"prettier": "^3.4.2",
|
|
81
|
+
"tailwindcss": "^4.0.0",
|
|
82
|
+
"typescript": "^5.9.0",
|
|
83
|
+
"typescript-eslint": "^8.46.0",
|
|
84
|
+
"vite": "8.0.8",
|
|
85
|
+
"vite-plugin-dts": "3.9.1"
|
|
86
|
+
},
|
|
87
|
+
"peerDependencies": {
|
|
88
|
+
"@apollo/client": "^4.0.11",
|
|
89
|
+
"react": "^19.0.0",
|
|
90
|
+
"react-dom": "^19.0.0",
|
|
91
|
+
"zustand": "^5.0.0"
|
|
92
|
+
},
|
|
93
|
+
"publishConfig": {
|
|
94
|
+
"access": "restricted"
|
|
95
|
+
},
|
|
96
|
+
"overrides": {
|
|
97
|
+
"lodash": ">=4.17.21",
|
|
98
|
+
"lodash-es": ">=4.17.21",
|
|
99
|
+
"dompurify": ">=3.3.4",
|
|
100
|
+
"fast-xml-parser": ">=4.5.5",
|
|
101
|
+
"@xmldom/xmldom": ">=0.8.12",
|
|
102
|
+
"swiper": ">=12.1.2",
|
|
103
|
+
"brace-expansion": ">=1.1.13",
|
|
104
|
+
"follow-redirects": ">=1.15.12",
|
|
105
|
+
"smol-toml": ">=1.6.1",
|
|
106
|
+
"axios": ">=1.15.0",
|
|
107
|
+
"flatted": ">=3.4.1",
|
|
108
|
+
"yaml": ">=2.8.3",
|
|
109
|
+
"picomatch": ">=2.3.2",
|
|
110
|
+
"immutable": ">=3.8.3",
|
|
111
|
+
"minimatch": ">=3.1.3"
|
|
112
|
+
}
|
|
113
|
+
}
|