@ankhorage/studio 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +1 -0
  2. package/dist/app/CreateCategoriesScreen.d.ts +3 -0
  3. package/dist/app/CreateCategoriesScreen.d.ts.map +1 -0
  4. package/dist/app/CreateCategoriesScreen.js +14 -0
  5. package/dist/app/CreateCategoriesScreen.js.map +1 -0
  6. package/dist/app/CreateCategoryTemplatesScreen.d.ts +3 -0
  7. package/dist/app/CreateCategoryTemplatesScreen.d.ts.map +1 -0
  8. package/dist/app/CreateCategoryTemplatesScreen.js +21 -0
  9. package/dist/app/CreateCategoryTemplatesScreen.js.map +1 -0
  10. package/dist/app/CreateProjectFromTemplateScreen.d.ts +3 -0
  11. package/dist/app/CreateProjectFromTemplateScreen.d.ts.map +1 -0
  12. package/dist/app/CreateProjectFromTemplateScreen.js +64 -0
  13. package/dist/app/CreateProjectFromTemplateScreen.js.map +1 -0
  14. package/dist/app/ProjectDetailScreen.d.ts +3 -0
  15. package/dist/app/ProjectDetailScreen.d.ts.map +1 -0
  16. package/dist/app/ProjectDetailScreen.js +83 -0
  17. package/dist/app/ProjectDetailScreen.js.map +1 -0
  18. package/dist/app/ProjectsOverviewScreen.d.ts +3 -0
  19. package/dist/app/ProjectsOverviewScreen.d.ts.map +1 -0
  20. package/dist/app/ProjectsOverviewScreen.js +27 -0
  21. package/dist/app/ProjectsOverviewScreen.js.map +1 -0
  22. package/dist/app/StudioApp.d.ts.map +1 -1
  23. package/dist/app/StudioApp.js +116 -6
  24. package/dist/app/StudioApp.js.map +1 -1
  25. package/dist/app/index.d.ts +5 -1
  26. package/dist/app/index.d.ts.map +1 -1
  27. package/dist/app/index.js +5 -1
  28. package/dist/app/index.js.map +1 -1
  29. package/dist/app/workspace/WorkspacePrimitives.d.ts +263 -0
  30. package/dist/app/workspace/WorkspacePrimitives.d.ts.map +1 -0
  31. package/dist/app/workspace/WorkspacePrimitives.js +340 -0
  32. package/dist/app/workspace/WorkspacePrimitives.js.map +1 -0
  33. package/dist/app/workspace/createProjectFormState.d.ts +16 -0
  34. package/dist/app/workspace/createProjectFormState.d.ts.map +1 -0
  35. package/dist/app/workspace/createProjectFormState.js +22 -0
  36. package/dist/app/workspace/createProjectFormState.js.map +1 -0
  37. package/dist/app/workspace/navigation.d.ts +2 -0
  38. package/dist/app/workspace/navigation.d.ts.map +1 -0
  39. package/dist/app/workspace/navigation.js +23 -0
  40. package/dist/app/workspace/navigation.js.map +1 -0
  41. package/dist/app/workspace/routeParams.d.ts +7 -0
  42. package/dist/app/workspace/routeParams.d.ts.map +1 -0
  43. package/dist/app/workspace/routeParams.js +8 -0
  44. package/dist/app/workspace/routeParams.js.map +1 -0
  45. package/dist/contractGuards.d.ts +6 -0
  46. package/dist/contractGuards.d.ts.map +1 -0
  47. package/dist/contractGuards.js +579 -0
  48. package/dist/contractGuards.js.map +1 -0
  49. package/dist/hooks/useProjects.d.ts +8 -16
  50. package/dist/hooks/useProjects.d.ts.map +1 -1
  51. package/dist/hooks/useProjects.js +65 -28
  52. package/dist/hooks/useProjects.js.map +1 -1
  53. package/dist/hooks/useTemplateCatalog.d.ts +8 -0
  54. package/dist/hooks/useTemplateCatalog.d.ts.map +1 -0
  55. package/dist/hooks/useTemplateCatalog.js +64 -0
  56. package/dist/hooks/useTemplateCatalog.js.map +1 -0
  57. package/dist/hooks/useWorkspaceActions.d.ts +8 -0
  58. package/dist/hooks/useWorkspaceActions.d.ts.map +1 -0
  59. package/dist/hooks/useWorkspaceActions.js +28 -0
  60. package/dist/hooks/useWorkspaceActions.js.map +1 -0
  61. package/dist/host/http/server.d.ts.map +1 -1
  62. package/dist/host/http/server.js +20 -12
  63. package/dist/host/http/server.js.map +1 -1
  64. package/dist/host/index.d.ts +1 -1
  65. package/dist/host/index.d.ts.map +1 -1
  66. package/dist/host/index.js +1 -1
  67. package/dist/host/index.js.map +1 -1
  68. package/dist/host/orchestrator/projectManager.d.ts.map +1 -1
  69. package/dist/host/orchestrator/projectManager.js +12 -11
  70. package/dist/host/orchestrator/projectManager.js.map +1 -1
  71. package/dist/host/orchestrator/projectStore.d.ts +4 -6
  72. package/dist/host/orchestrator/projectStore.d.ts.map +1 -1
  73. package/dist/host/orchestrator/projectStore.js +50 -22
  74. package/dist/host/orchestrator/projectStore.js.map +1 -1
  75. package/dist/host/orchestrator/scaffolder.d.ts +2 -2
  76. package/dist/host/orchestrator/scaffolder.d.ts.map +1 -1
  77. package/dist/host/orchestrator/scaffolder.js +8 -5
  78. package/dist/host/orchestrator/scaffolder.js.map +1 -1
  79. package/dist/host/orchestrator/templates.js +1 -1
  80. package/dist/host/templateRegistry/index.d.ts +2 -9
  81. package/dist/host/templateRegistry/index.d.ts.map +1 -1
  82. package/dist/host/templateRegistry/index.js +29 -15
  83. package/dist/host/templateRegistry/index.js.map +1 -1
  84. package/dist/index.d.ts +3 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +1 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/projectIdentity.d.ts +11 -0
  89. package/dist/projectIdentity.d.ts.map +1 -0
  90. package/dist/projectIdentity.js +74 -0
  91. package/dist/projectIdentity.js.map +1 -0
  92. package/dist/projectWorkspaceContracts.d.ts +28 -0
  93. package/dist/projectWorkspaceContracts.d.ts.map +1 -0
  94. package/dist/projectWorkspaceContracts.js +2 -0
  95. package/dist/projectWorkspaceContracts.js.map +1 -0
  96. package/dist/root.d.ts +1 -1
  97. package/dist/root.d.ts.map +1 -1
  98. package/dist/root.js +1 -1
  99. package/dist/root.js.map +1 -1
  100. package/dist/templateCatalogContracts.d.ts +25 -0
  101. package/dist/templateCatalogContracts.d.ts.map +1 -0
  102. package/dist/templateCatalogContracts.js +2 -0
  103. package/dist/templateCatalogContracts.js.map +1 -0
  104. package/dist/ui/admin/pages/AuthAdminPage.js +7 -1
  105. package/dist/ui/admin/pages/AuthAdminPage.js.map +1 -1
  106. package/dist/workspacePlatform.d.ts +15 -0
  107. package/dist/workspacePlatform.d.ts.map +1 -0
  108. package/dist/workspacePlatform.js +43 -0
  109. package/dist/workspacePlatform.js.map +1 -0
  110. package/dist/workspaceSearch.d.ts +5 -0
  111. package/dist/workspaceSearch.d.ts.map +1 -0
  112. package/dist/workspaceSearch.js +60 -0
  113. package/dist/workspaceSearch.js.map +1 -0
  114. package/package.json +5 -3
  115. package/dist/app/StudioDashboard.d.ts +0 -3
  116. package/dist/app/StudioDashboard.d.ts.map +0 -1
  117. package/dist/app/StudioDashboard.js +0 -192
  118. package/dist/app/StudioDashboard.js.map +0 -1
  119. package/dist/hooks/useTemplateSummaries.d.ts +0 -8
  120. package/dist/hooks/useTemplateSummaries.d.ts.map +0 -1
  121. package/dist/hooks/useTemplateSummaries.js +0 -54
  122. package/dist/hooks/useTemplateSummaries.js.map +0 -1
  123. package/dist/modules/dashboard/platform.d.ts +0 -4
  124. package/dist/modules/dashboard/platform.d.ts.map +0 -1
  125. package/dist/modules/dashboard/platform.js +0 -24
  126. package/dist/modules/dashboard/platform.js.map +0 -1
  127. package/dist/modules/dashboard/search.d.ts +0 -4
  128. package/dist/modules/dashboard/search.d.ts.map +0 -1
  129. package/dist/modules/dashboard/search.js +0 -49
  130. package/dist/modules/dashboard/search.js.map +0 -1
  131. package/dist/modules/dashboard/templates.d.ts +0 -3
  132. package/dist/modules/dashboard/templates.d.ts.map +0 -1
  133. package/dist/modules/dashboard/templates.js +0 -4
  134. package/dist/modules/dashboard/templates.js.map +0 -1
  135. package/dist/modules/dashboard/types.d.ts +0 -15
  136. package/dist/modules/dashboard/types.d.ts.map +0 -1
  137. package/dist/modules/dashboard/types.js +0 -2
  138. package/dist/modules/dashboard/types.js.map +0 -1
  139. package/dist/modules/dashboard/ui/DashboardSectionHeader.d.ts +0 -6
  140. package/dist/modules/dashboard/ui/DashboardSectionHeader.d.ts.map +0 -1
  141. package/dist/modules/dashboard/ui/DashboardSectionHeader.js +0 -17
  142. package/dist/modules/dashboard/ui/DashboardSectionHeader.js.map +0 -1
  143. package/dist/modules/dashboard/ui/ProjectCard.d.ts +0 -16
  144. package/dist/modules/dashboard/ui/ProjectCard.d.ts.map +0 -1
  145. package/dist/modules/dashboard/ui/ProjectCard.js +0 -76
  146. package/dist/modules/dashboard/ui/ProjectCard.js.map +0 -1
  147. package/dist/modules/dashboard/ui/TemplateCard.d.ts +0 -10
  148. package/dist/modules/dashboard/ui/TemplateCard.d.ts.map +0 -1
  149. package/dist/modules/dashboard/ui/TemplateCard.js +0 -32
  150. package/dist/modules/dashboard/ui/TemplateCard.js.map +0 -1
package/README.md CHANGED
@@ -38,3 +38,4 @@ Manage Studio development and projects through the Ankh CLI.
38
38
  - [updateNodeInTree sequence](././paradox/diagrams/sequences/update-node-in-tree.mmd)
39
39
  - [validateInsertRecipe sequence](././paradox/diagrams/sequences/validate-insert-recipe.mmd)
40
40
  - [validateNodePlacement sequence](././paradox/diagrams/sequences/validate-node-placement.mmd)
41
+ - [validateProjectCreationInput sequence](././paradox/diagrams/sequences/validate-project-creation-input.mmd)
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function CreateCategoriesScreen(): React.JSX.Element;
3
+ //# sourceMappingURL=CreateCategoriesScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCategoriesScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateCategoriesScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAejD,wBAAgB,sBAAsB,sBAgDrC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { router } from 'expo-router';
3
+ import React, { useMemo, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { useTemplateCatalog } from '../hooks/useTemplateCatalog';
6
+ import { filterAndSortTemplates } from '../workspaceSearch';
7
+ import { CategoryCard, EmptyState, LoadingState, SearchResults, styles, ThemedWorkspaceTextInput, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
8
+ export function CreateCategoriesScreen() {
9
+ const { catalog, isLoading, error, refresh } = useTemplateCatalog();
10
+ const [searchQuery, setSearchQuery] = useState('');
11
+ const results = useMemo(() => (searchQuery.trim() ? filterAndSortTemplates(catalog, searchQuery) : []), [catalog, searchQuery]);
12
+ return (_jsxs(WorkspaceScreen, { title: "New Project", subtitle: "Choose a category first.", children: [_jsx(View, { style: styles.toolbar, children: _jsx(ThemedWorkspaceTextInput, { value: searchQuery, onChangeText: setSearchQuery, placeholder: "Search templates globally", accessibilityLabel: "Search templates globally" }) }), isLoading ? (_jsx(LoadingState, { label: "Loading template catalog" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : searchQuery.trim() ? (_jsx(SearchResults, { query: searchQuery, results: results, onClear: () => setSearchQuery(''), onPress: (template) => router.push(`/create/${template.category}/${template.templateId}`) })) : (_jsx(View, { style: styles.categoryGrid, children: catalog.categories.map((category) => (_jsx(CategoryCard, { category: category, onPress: () => router.push(`/create/${category.id}`) }, category.id))) }))] }));
13
+ }
14
+ //# sourceMappingURL=CreateCategoriesScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCategoriesScreen.js","sourceRoot":"","sources":["../../src/app/CreateCategoriesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,wBAAwB,EACxB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC9E,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;IAEF,OAAO,CACL,MAAC,eAAe,IAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,EAAC,0BAA0B,aACtE,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,YACzB,KAAC,wBAAwB,IACvB,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,cAAc,EAC5B,WAAW,EAAC,2BAA2B,EACvC,kBAAkB,EAAC,2BAA2B,GAC9C,GACG,EAEN,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,KAAK,EAAC,0BAA0B,GAAG,CAClD,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IACT,KAAK,EAAC,qBAAqB,EAC3B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACvB,KAAC,aAAa,IACZ,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EACjC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,GACzF,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAC7B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACpC,KAAC,YAAY,IAEX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,EAAE,EAAE,CAAC,IAF/C,QAAQ,CAAC,EAAE,CAGhB,CACH,CAAC,GACG,CACR,IACe,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function CreateCategoryTemplatesScreen(): React.JSX.Element;
3
+ //# sourceMappingURL=CreateCategoryTemplatesScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCategoryTemplatesScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateCategoryTemplatesScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,wBAAgB,6BAA6B,sBA2C5C"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { router, useLocalSearchParams } from 'expo-router';
3
+ import React from 'react';
4
+ import { View } from 'react-native';
5
+ import { useTemplateCatalog } from '../hooks/useTemplateCatalog';
6
+ import { EmptyState, LoadingState, styles, TemplateCard, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
7
+ import { resolveWorkspaceCategoryParam } from './workspace/routeParams';
8
+ export function CreateCategoryTemplatesScreen() {
9
+ const { category, categoryParam } = useCategoryRouteParams();
10
+ const { catalog, isLoading, error, refresh } = useTemplateCatalog();
11
+ const selected = category ? catalog.categories.find((entry) => entry.id === category) : undefined;
12
+ return (_jsx(WorkspaceScreen, { title: selected?.label ?? 'Templates', subtitle: categoryParam, children: isLoading ? (_jsx(LoadingState, { label: "Loading templates" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !selected ? (_jsx(EmptyState, { title: "Category not found", detail: `The requested template category "${categoryParam}" is not available.`, actionLabel: "Back to categories", onAction: () => router.replace('/create') })) : selected.templates.length === 0 ? (_jsx(EmptyState, { title: "No templates in this category", detail: "Choose a different category.", actionLabel: "Back to categories", onAction: () => router.push('/create') })) : (_jsx(View, { style: styles.templateGrid, children: selected.templates.map((template) => (_jsx(TemplateCard, { template: template, onPress: () => router.push(`/create/${category}/${template.templateId}`) }, template.id))) })) }));
13
+ }
14
+ function useCategoryRouteParams() {
15
+ const params = useLocalSearchParams();
16
+ return resolveWorkspaceCategoryParam(firstParam(params.category));
17
+ }
18
+ function firstParam(value) {
19
+ return Array.isArray(value) ? (value[0] ?? '') : (value ?? '');
20
+ }
21
+ //# sourceMappingURL=CreateCategoryTemplatesScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateCategoryTemplatesScreen.js","sourceRoot":"","sources":["../../src/app/CreateCategoryTemplatesScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,UAAU,EACV,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,UAAU,6BAA6B;IAC3C,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC7D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElG,OAAO,CACL,KAAC,eAAe,IAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,WAAW,EAAE,QAAQ,EAAE,aAAa,YAC5E,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,KAAK,EAAC,mBAAmB,GAAG,CAC3C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IACT,KAAK,EAAC,qBAAqB,EAC3B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACd,KAAC,UAAU,IACT,KAAK,EAAC,oBAAoB,EAC1B,MAAM,EAAE,oCAAoC,aAAa,qBAAqB,EAC9E,WAAW,EAAC,oBAAoB,EAChC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GACzC,CACH,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpC,KAAC,UAAU,IACT,KAAK,EAAC,+BAA+B,EACrC,MAAM,EAAC,8BAA8B,EACrC,WAAW,EAAC,oBAAoB,EAChC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GACtC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAC7B,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACpC,KAAC,YAAY,IAEX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,IAFnE,QAAQ,CAAC,EAAE,CAGhB,CACH,CAAC,GACG,CACR,GACe,CACnB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB;IAC7B,MAAM,MAAM,GAAG,oBAAoB,EAAyB,CAAC;IAC7D,OAAO,6BAA6B,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,UAAU,CAAC,KAAoC;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function CreateProjectFromTemplateScreen(): React.JSX.Element;
3
+ //# sourceMappingURL=CreateProjectFromTemplateScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateProjectFromTemplateScreen.d.ts","sourceRoot":"","sources":["../../src/app/CreateProjectFromTemplateScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAmBjD,wBAAgB,+BAA+B,sBA6H9C"}
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Heading, Text } from '@ankhorage/zora';
3
+ import { router, useLocalSearchParams } from 'expo-router';
4
+ import React, { useMemo, useState } from 'react';
5
+ import { View } from 'react-native';
6
+ import { ProjectCreationError, useProjects } from '../hooks/useProjects';
7
+ import { useTemplateCatalog } from '../hooks/useTemplateCatalog';
8
+ import { EmptyState, InlineMessage, LoadingState, MetadataRows, PrimaryAction, SecondaryAction, styles, ThemedWorkspaceTextInput, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
9
+ import { resolveCreateProjectFormState } from './workspace/createProjectFormState';
10
+ import { resolveWorkspaceCategoryParam } from './workspace/routeParams';
11
+ export function CreateProjectFromTemplateScreen() {
12
+ const { category, categoryParam, templateId } = useTemplateRouteParams();
13
+ const { catalog, isLoading, error, refresh } = useTemplateCatalog();
14
+ const { projects, isLoading: projectsLoading, error: projectsError, refresh: refreshProjects, createProject, } = useProjects();
15
+ const selectedCategory = category
16
+ ? catalog.categories.find((entry) => entry.id === category)
17
+ : undefined;
18
+ const template = selectedCategory?.templates.find((entry) => entry.templateId === templateId);
19
+ const [projectName, setProjectName] = useState('');
20
+ const [isCreating, setIsCreating] = useState(false);
21
+ const [submitError, setSubmitError] = useState(null);
22
+ const formState = useMemo(() => resolveCreateProjectFormState({
23
+ projectName,
24
+ existingProjects: projects,
25
+ projectsLoading,
26
+ projectsError,
27
+ templateAvailable: template !== undefined,
28
+ isCreating,
29
+ }), [projectName, projects, projectsLoading, projectsError, template, isCreating]);
30
+ async function handleCreate() {
31
+ if (!category || !template || formState.validation?.ok !== true)
32
+ return;
33
+ setIsCreating(true);
34
+ setSubmitError(null);
35
+ try {
36
+ const result = await createProject({
37
+ category,
38
+ templateId: template.templateId,
39
+ name: projectName,
40
+ });
41
+ router.replace(`/projects/${result.id}`);
42
+ }
43
+ catch (caught) {
44
+ console.error(caught);
45
+ setSubmitError(caught instanceof ProjectCreationError ? caught.reason.message : 'Project creation failed.');
46
+ }
47
+ finally {
48
+ setIsCreating(false);
49
+ }
50
+ }
51
+ return (_jsx(WorkspaceScreen, { title: "Create Project", subtitle: selectedCategory?.label ?? categoryParam, children: isLoading ? (_jsx(LoadingState, { label: "Loading template" })) : error ? (_jsx(EmptyState, { title: "Catalog load failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !selectedCategory ? (_jsx(EmptyState, { title: "Category not found", detail: `The requested template category "${categoryParam}" is not available.`, actionLabel: "Back to categories", onAction: () => router.replace('/create') })) : !template ? (_jsx(EmptyState, { title: "Template not found", detail: "The selected template is not available.", actionLabel: "Back to templates", onAction: () => router.replace(`/create/${selectedCategory.id}`) })) : (_jsxs(View, { style: styles.createLayout, children: [_jsxs(View, { style: styles.detailPanel, children: [_jsx(Text, { color: "neutral", emphasis: "muted", variant: "caption", children: "Template" }), _jsx(Heading, { level: 2, text: template.name }), _jsx(Text, { color: "neutral", emphasis: "muted", children: template.description })] }), _jsxs(View, { style: styles.lifecyclePanel, children: [_jsx(Heading, { level: 3, text: "Project" }), _jsxs(View, { style: styles.fieldGroup, children: [_jsx(Text, { weight: "semiBold", children: "Project name" }), _jsx(ThemedWorkspaceTextInput, { value: projectName, onChangeText: setProjectName, placeholder: "Release Monitor", accessibilityLabel: "Project name" })] }), _jsx(MetadataRows, { rows: [['Project ID', formState.derivedProjectId || 'Derived from project name']] }), projectsLoading ? (_jsx(InlineMessage, { tone: "info", text: "Loading existing projects." })) : null, projectsError ? (_jsxs(View, { style: styles.actionStack, children: [_jsx(InlineMessage, { tone: "error", text: projectsError }), _jsx(SecondaryAction, { label: "Retry projects", onPress: refreshProjects })] })) : null, formState.validation?.ok === false && projectName.trim() ? (_jsx(InlineMessage, { tone: "error", text: formState.validation.reason.message })) : null, submitError ? _jsx(InlineMessage, { tone: "error", text: submitError }) : null, _jsx(PrimaryAction, { iconName: "checkmark-outline", label: isCreating ? 'Creating' : 'Create project', disabled: !formState.canCreate, onPress: () => void handleCreate() })] })] })) }));
52
+ }
53
+ function useTemplateRouteParams() {
54
+ const params = useLocalSearchParams();
55
+ const category = resolveWorkspaceCategoryParam(firstParam(params.category));
56
+ return {
57
+ ...category,
58
+ templateId: firstParam(params.templateId),
59
+ };
60
+ }
61
+ function firstParam(value) {
62
+ return Array.isArray(value) ? (value[0] ?? '') : (value ?? '');
63
+ }
64
+ //# sourceMappingURL=CreateProjectFromTemplateScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateProjectFromTemplateScreen.js","sourceRoot":"","sources":["../../src/app/CreateProjectFromTemplateScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function ProjectDetailScreen(): React.JSX.Element;
3
+ //# sourceMappingURL=ProjectDetailScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectDetailScreen.d.ts","sourceRoot":"","sources":["../../src/app/ProjectDetailScreen.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiBxC,wBAAgB,mBAAmB,sBA+JlC"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Heading } from '@ankhorage/zora';
3
+ import { router, useLocalSearchParams } from 'expo-router';
4
+ import React, { useState } from 'react';
5
+ import { Alert, Linking, View } from 'react-native';
6
+ import { useProjects } from '../hooks/useProjects';
7
+ import { confirmDelete, openProjectUrl } from '../workspacePlatform';
8
+ import { EmptyState, formatCategory, formatDate, InlineMessage, LifecycleAction, LoadingState, MetadataRows, styles, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
9
+ export function ProjectDetailScreen() {
10
+ const { projectId } = useProjectRouteParams();
11
+ const { projects, isLoading, error, refresh, deleteProject, syncProject, upProjectInfrastructure, launchProject, } = useProjects();
12
+ const project = projects.find((candidate) => candidate.id === projectId);
13
+ const [activeAction, setActiveAction] = useState(null);
14
+ const [message, setMessage] = useState(null);
15
+ async function runAction(label, action) {
16
+ setActiveAction(label);
17
+ setMessage(null);
18
+ try {
19
+ const text = await action();
20
+ setMessage({ tone: 'success', text });
21
+ await refresh();
22
+ }
23
+ catch (caught) {
24
+ console.error(caught);
25
+ setMessage({
26
+ tone: 'error',
27
+ text: caught instanceof Error ? caught.message : `${label} failed.`,
28
+ });
29
+ }
30
+ finally {
31
+ setActiveAction(null);
32
+ }
33
+ }
34
+ const handleOpenRunningApp = () => runAction('Open running app', async () => {
35
+ const response = await launchProject(projectId);
36
+ const url = response.url ?? '';
37
+ if (!url) {
38
+ throw new Error('The host did not return a running app URL.');
39
+ }
40
+ if (!openProjectUrl(url)) {
41
+ await Linking.openURL(url);
42
+ }
43
+ return response.started === false
44
+ ? `Running app already available at ${url}.`
45
+ : `Running app opened at ${url}.`;
46
+ });
47
+ const handleDelete = () => {
48
+ if (!project)
49
+ return;
50
+ confirmDelete(project.name, () => {
51
+ void runAction('Delete project', async () => {
52
+ await deleteProject(project.id);
53
+ router.replace('/');
54
+ return `Deleted ${project.name}.`;
55
+ });
56
+ }, Alert.alert);
57
+ };
58
+ return (_jsx(WorkspaceScreen, { title: "Project Detail", subtitle: projectId, children: isLoading ? (_jsx(LoadingState, { label: "Loading project" })) : error ? (_jsx(EmptyState, { title: "Host connection failed", detail: error, actionLabel: "Retry", onAction: refresh })) : !project ? (_jsx(EmptyState, { title: "Project not found", detail: "The requested project is not available in this workspace.", actionLabel: "Back to projects", onAction: () => router.replace('/') })) : (_jsxs(View, { style: styles.detailLayout, children: [_jsxs(View, { style: styles.detailPanel, children: [_jsx(View, { style: [
59
+ styles.themeStripe,
60
+ { backgroundColor: project.activeTheme.light.primaryColor },
61
+ ] }), _jsx(Heading, { level: 2, text: project.name }), _jsx(MetadataRows, { rows: [
62
+ ['Project ID', project.id],
63
+ ['Version', project.version],
64
+ ['Category', formatCategory(project.category)],
65
+ ['Path', project.path],
66
+ ['Created', formatDate(project.created)],
67
+ ['Updated', formatDate(project.updated)],
68
+ ] })] }), _jsxs(View, { style: styles.lifecyclePanel, children: [_jsx(Heading, { level: 3, text: "Lifecycle" }), message ? _jsx(InlineMessage, { tone: message.tone, text: message.text }) : null, _jsxs(View, { style: styles.actionStack, children: [_jsx(LifecycleAction, { iconName: "refresh-outline", label: "Sync", detail: "Synchronize the current Studio manifest and generated files.", loading: activeAction === 'Sync', disabled: activeAction !== null, onPress: () => void runAction('Sync', async () => {
69
+ await syncProject(project.id);
70
+ return 'Project synchronized.';
71
+ }) }), _jsx(LifecycleAction, { iconName: "cloud-upload-outline", label: "Infrastructure Up", detail: "Regenerate artifacts and start the generated infrastructure lifecycle.", loading: activeAction === 'Infrastructure Up', disabled: activeAction !== null, onPress: () => void runAction('Infrastructure Up', async () => {
72
+ await upProjectInfrastructure(project.id);
73
+ return 'Infrastructure up lifecycle completed.';
74
+ }) }), _jsx(LifecycleAction, { iconName: "open-outline", label: "Open running app", detail: "Open the infrastructure-hosted app through the active port-forward.", loading: activeAction === 'Open running app', disabled: activeAction !== null, onPress: handleOpenRunningApp }), _jsx(LifecycleAction, { iconName: "trash-outline", label: "Delete project", detail: "Delete generated project files after confirmation.", loading: activeAction === 'Delete project', disabled: activeAction !== null, destructive: true, onPress: handleDelete })] })] })] })) }));
75
+ }
76
+ function useProjectRouteParams() {
77
+ const params = useLocalSearchParams();
78
+ return { projectId: firstParam(params.projectId) };
79
+ }
80
+ function firstParam(value) {
81
+ return Array.isArray(value) ? (value[0] ?? '') : (value ?? '');
82
+ }
83
+ //# sourceMappingURL=ProjectDetailScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectDetailScreen.js","sourceRoot":"","sources":["../../src/app/ProjectDetailScreen.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare function ProjectsOverviewScreen(): React.JSX.Element;
3
+ //# sourceMappingURL=ProjectsOverviewScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectsOverviewScreen.d.ts","sourceRoot":"","sources":["../../src/app/ProjectsOverviewScreen.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAiBjD,wBAAgB,sBAAsB,sBAyErC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { router } from 'expo-router';
3
+ import React, { useMemo, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { useProjects } from '../hooks/useProjects';
6
+ import { filterAndSortProjects } from '../workspaceSearch';
7
+ import { EmptyState, LoadingState, PrimaryAction, ProjectOverviewCard, SegmentedControl, styles, ThemedWorkspaceTextInput, WorkspaceScreen, } from './workspace/WorkspacePrimitives';
8
+ export function ProjectsOverviewScreen() {
9
+ const { projects, isLoading, error, refresh } = useProjects();
10
+ const [searchQuery, setSearchQuery] = useState('');
11
+ const [sort, setSort] = useState('updated-desc');
12
+ const filteredProjects = useMemo(() => filterAndSortProjects(projects, searchQuery, sort), [projects, searchQuery, sort]);
13
+ return (_jsxs(WorkspaceScreen, { title: "Projects", subtitle: "Choose a workspace project.", children: [_jsxs(View, { style: styles.toolbar, children: [_jsx(ThemedWorkspaceTextInput, { value: searchQuery, onChangeText: setSearchQuery, placeholder: "Search projects", accessibilityLabel: "Search projects" }), _jsx(SegmentedControl, { value: sort, options: [
14
+ { label: 'Updated', value: 'updated-desc' },
15
+ { label: 'Name', value: 'name-asc' },
16
+ ], onChange: (value) => setSort(value) }), _jsx(PrimaryAction, { iconName: "add-outline", label: "New project", onPress: () => router.push('/create') })] }), isLoading ? (_jsx(LoadingState, { label: "Loading projects" })) : error ? (_jsx(EmptyState, { title: "Host connection failed", detail: error, actionLabel: "Retry", onAction: refresh })) : filteredProjects.length === 0 ? (_jsx(EmptyState, { title: searchQuery.trim() ? 'No matching projects' : 'No projects yet', detail: searchQuery.trim()
17
+ ? 'Clear search or choose a different project query.'
18
+ : 'Create the first generated app for this workspace.', actionLabel: searchQuery.trim() ? 'Clear search' : 'New project', onAction: () => {
19
+ if (searchQuery.trim()) {
20
+ setSearchQuery('');
21
+ }
22
+ else {
23
+ router.push('/create');
24
+ }
25
+ } })) : (_jsx(View, { style: styles.projectGrid, children: filteredProjects.map((project) => (_jsx(ProjectOverviewCard, { project: project, onPress: () => router.push(`/projects/${project.id}`) }, project.id))) }))] }));
26
+ }
27
+ //# sourceMappingURL=ProjectsOverviewScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectsOverviewScreen.js","sourceRoot":"","sources":["../../src/app/ProjectsOverviewScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,MAAM,EACN,wBAAwB,EACxB,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC9D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiB,cAAc,CAAC,CAAC;IAEjE,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,EACxD,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAC9B,CAAC;IAEF,OAAO,CACL,MAAC,eAAe,IAAC,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAC,6BAA6B,aACtE,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,aACzB,KAAC,wBAAwB,IACvB,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,cAAc,EAC5B,WAAW,EAAC,iBAAiB,EAC7B,kBAAkB,EAAC,iBAAiB,GACpC,EACF,KAAC,gBAAgB,IACf,KAAK,EAAE,IAAI,EACX,OAAO,EAAE;4BACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;4BAC3C,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;yBACrC,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GACnC,EACF,KAAC,aAAa,IACZ,QAAQ,EAAC,aAAa,EACtB,KAAK,EAAC,aAAa,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GACrC,IACG,EAEN,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,KAAK,EAAC,kBAAkB,GAAG,CAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,UAAU,IACT,KAAK,EAAC,wBAAwB,EAC9B,MAAM,EAAE,KAAK,EACb,WAAW,EAAC,OAAO,EACnB,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAClC,KAAC,UAAU,IACT,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,EACtE,MAAM,EACJ,WAAW,CAAC,IAAI,EAAE;oBAChB,CAAC,CAAC,mDAAmD;oBACrD,CAAC,CAAC,oDAAoD,EAE1D,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,EAChE,QAAQ,EAAE,GAAG,EAAE;oBACb,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;wBACvB,cAAc,CAAC,EAAE,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,YAC5B,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACjC,KAAC,mBAAmB,IAElB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,EAAE,EAAE,CAAC,IAFhD,OAAO,CAAC,EAAE,CAGf,CACH,CAAC,GACG,CACR,IACe,CACnB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StudioApp.d.ts","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,wBAAgB,SAAS,sBAoBxB"}
1
+ {"version":3,"file":"StudioApp.d.ts","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAOxC,wBAAgB,SAAS,sBAoBxB"}
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useZoraTheme, ZoraProvider } from '@ankhorage/zora';
2
+ import { Icon, Text, useZoraTheme, ZoraProvider } from '@ankhorage/zora';
3
3
  import { Ionicons } from '@expo/vector-icons';
4
4
  import { useFonts } from 'expo-font';
5
- import { Slot } from 'expo-router';
5
+ import { Stack, router, usePathname } from 'expo-router';
6
6
  import { StatusBar } from 'expo-status-bar';
7
- import React from 'react';
8
- import { ActivityIndicator, StyleSheet, View } from 'react-native';
9
- import { SafeAreaProvider } from 'react-native-safe-area-context';
7
+ import React, { useState } from 'react';
8
+ import { ActivityIndicator, Pressable, StyleSheet, View } from 'react-native';
9
+ import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
10
+ import { useWorkspaceActions } from '../hooks/useWorkspaceActions';
11
+ import { resolveWorkspaceParentPath } from './workspace/navigation';
10
12
  export function StudioApp() {
11
13
  const [fontsLoaded] = useFonts({
12
14
  ...Ionicons.font,
@@ -17,8 +19,64 @@ export function StudioApp() {
17
19
  return (_jsx(SafeAreaProvider, { children: _jsx(ZoraProvider, { initialMode: "dark", children: _jsx(StudioAppRootContent, {}) }) }));
18
20
  }
19
21
  function StudioAppRootContent() {
22
+ const { theme, mode, setMode } = useZoraTheme();
23
+ const { installWorkspacePackages } = useWorkspaceActions();
24
+ const pathname = usePathname();
25
+ const parentPath = resolveWorkspaceParentPath(pathname);
26
+ const [menuOpen, setMenuOpen] = useState(false);
27
+ const [installState, setInstallState] = useState('idle');
28
+ async function handleInstallWorkspacePackages() {
29
+ setInstallState('running');
30
+ setMenuOpen(false);
31
+ try {
32
+ await installWorkspacePackages();
33
+ setInstallState('success');
34
+ }
35
+ catch (caught) {
36
+ console.error(caught);
37
+ setInstallState('error');
38
+ }
39
+ }
40
+ function handleBack() {
41
+ if (!parentPath)
42
+ return;
43
+ if (router.canGoBack()) {
44
+ router.back();
45
+ return;
46
+ }
47
+ router.replace(parentPath);
48
+ }
49
+ return (_jsxs(View, { style: [styles.root, { backgroundColor: theme.colors.background }], children: [_jsxs(SafeAreaView, { edges: ['top', 'left', 'right'], style: [
50
+ styles.appBar,
51
+ { backgroundColor: theme.colors.surface, borderBottomColor: theme.colors.border },
52
+ ], children: [parentPath ? (_jsx(IconButton, { label: "Back", iconName: "chevron-back", onPress: handleBack })) : null, _jsx(AppBarBrand, {}), _jsxs(View, { style: styles.appBarActions, children: [installState === 'running' ? (_jsx(ActivityIndicator, { color: theme.colors.primary })) : installState === 'success' ? (_jsx(Text, { color: "primary", variant: "caption", children: "Packages installed" })) : installState === 'error' ? (_jsx(Text, { color: "danger", variant: "caption", children: "Install failed" })) : null, _jsx(IconButton, { label: mode === 'dark' ? 'Use light mode' : 'Use dark mode', iconName: mode === 'dark' ? 'sunny-outline' : 'moon-outline', onPress: () => setMode(mode === 'dark' ? 'light' : 'dark') }), _jsxs(View, { children: [_jsx(IconButton, { label: "Workspace menu", iconName: "ellipsis-horizontal", onPress: () => setMenuOpen((open) => !open) }), menuOpen ? (_jsx(View, { style: [
53
+ styles.workspaceMenu,
54
+ { backgroundColor: theme.colors.surface, borderColor: theme.colors.border },
55
+ ], children: _jsx(WorkspaceMenuItem, { onPress: () => void handleInstallWorkspacePackages(), disabled: installState === 'running' }) })) : null] })] })] }), _jsx(Stack, { screenOptions: { headerShown: false } }), _jsx(StatusBar, { style: mode === 'dark' ? 'light' : 'dark' })] }));
56
+ }
57
+ function AppBarBrand() {
58
+ const { theme } = useZoraTheme();
59
+ const [focused, setFocused] = useState(false);
60
+ return (_jsxs(Pressable, { onPress: () => router.replace('/'), onFocus: () => setFocused(true), onBlur: () => setFocused(false), accessibilityRole: "button", accessibilityLabel: "Go to projects", style: [styles.brand, { borderColor: focused ? theme.colors.primary : 'transparent' }], children: [_jsx(Icon, { name: "cube-outline", provider: "Ionicons", size: 22, color: "primary" }), _jsx(Text, { weight: "semiBold", children: "Ankh Studio" })] }));
61
+ }
62
+ function IconButton(props) {
20
63
  const { theme } = useZoraTheme();
21
- return (_jsxs(View, { style: [styles.root, { backgroundColor: theme.colors.background }], children: [_jsx(Slot, {}), _jsx(StatusBar, { style: "light" })] }));
64
+ const [focused, setFocused] = useState(false);
65
+ return (_jsx(Pressable, { onPress: props.onPress, onFocus: () => setFocused(true), onBlur: () => setFocused(false), accessibilityRole: "button", accessibilityLabel: props.label, style: ({ pressed }) => [
66
+ styles.iconButton,
67
+ {
68
+ borderColor: focused ? theme.colors.primary : theme.colors.border,
69
+ opacity: pressed ? 0.82 : 1,
70
+ },
71
+ ], children: _jsx(Icon, { name: props.iconName, provider: "Ionicons", size: 18, color: "text" }) }));
72
+ }
73
+ function WorkspaceMenuItem(props) {
74
+ const { theme } = useZoraTheme();
75
+ const [focused, setFocused] = useState(false);
76
+ return (_jsxs(Pressable, { onPress: props.onPress, onFocus: () => setFocused(true), onBlur: () => setFocused(false), disabled: props.disabled, accessibilityRole: "button", accessibilityLabel: "Install workspace packages", style: [
77
+ styles.workspaceMenuItem,
78
+ { borderColor: focused ? theme.colors.primary : 'transparent' },
79
+ ], children: [_jsx(Icon, { name: "download-outline", provider: "Ionicons", size: 16, color: "primary" }), _jsx(Text, { variant: "bodySmall", weight: "semiBold", children: "Install workspace packages" })] }));
22
80
  }
23
81
  const styles = StyleSheet.create({
24
82
  loadingContainer: {
@@ -32,5 +90,57 @@ const styles = StyleSheet.create({
32
90
  flex: 1,
33
91
  elevation: 0,
34
92
  },
93
+ appBar: {
94
+ minHeight: 56,
95
+ borderBottomWidth: 1,
96
+ paddingHorizontal: 16,
97
+ flexDirection: 'row',
98
+ alignItems: 'center',
99
+ justifyContent: 'space-between',
100
+ gap: 12,
101
+ zIndex: 2,
102
+ },
103
+ brand: {
104
+ borderWidth: 1,
105
+ borderRadius: 8,
106
+ flexDirection: 'row',
107
+ alignItems: 'center',
108
+ gap: 8,
109
+ minHeight: 42,
110
+ paddingHorizontal: 8,
111
+ flexShrink: 1,
112
+ },
113
+ appBarActions: {
114
+ flexDirection: 'row',
115
+ alignItems: 'center',
116
+ gap: 10,
117
+ },
118
+ iconButton: {
119
+ width: 38,
120
+ height: 38,
121
+ borderRadius: 8,
122
+ borderWidth: 1,
123
+ alignItems: 'center',
124
+ justifyContent: 'center',
125
+ },
126
+ workspaceMenu: {
127
+ position: 'absolute',
128
+ right: 0,
129
+ top: 44,
130
+ minWidth: 230,
131
+ borderWidth: 1,
132
+ borderRadius: 8,
133
+ padding: 6,
134
+ zIndex: 3,
135
+ },
136
+ workspaceMenuItem: {
137
+ minHeight: 38,
138
+ borderWidth: 1,
139
+ borderRadius: 6,
140
+ flexDirection: 'row',
141
+ alignItems: 'center',
142
+ gap: 8,
143
+ paddingHorizontal: 10,
144
+ },
35
145
  });
36
146
  //# sourceMappingURL=StudioApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StudioApp.js","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,UAAU,SAAS;IACvB,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;QAC7B,GAAG,QAAQ,CAAC,IAAI;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,YAClC,KAAC,iBAAiB,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG,GAC7C,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,gBAAgB,cACf,KAAC,YAAY,IAAC,WAAW,EAAC,MAAM,YAC9B,KAAC,oBAAoB,KAAG,GACX,GACE,CACpB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IAEjC,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,aACtE,KAAC,IAAI,KAAG,EACR,KAAC,SAAS,IAAC,KAAK,EAAC,OAAO,GAAG,IACtB,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,SAAS;QAC1B,SAAS,EAAE,CAAC;KACb;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,CAAC;KACb;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"StudioApp.js","sourceRoot":"","sources":["../../src/app/StudioApp.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ export { CreateCategoriesScreen } from './CreateCategoriesScreen';
2
+ export { CreateCategoryTemplatesScreen } from './CreateCategoryTemplatesScreen';
3
+ export { CreateProjectFromTemplateScreen } from './CreateProjectFromTemplateScreen';
4
+ export { ProjectDetailScreen } from './ProjectDetailScreen';
5
+ export { ProjectsOverviewScreen } from './ProjectsOverviewScreen';
1
6
  export { StudioApp } from './StudioApp';
2
- export { StudioDashboard } from './StudioDashboard';
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
package/dist/app/index.js CHANGED
@@ -1,3 +1,7 @@
1
+ export { CreateCategoriesScreen } from './CreateCategoriesScreen';
2
+ export { CreateCategoryTemplatesScreen } from './CreateCategoryTemplatesScreen';
3
+ export { CreateProjectFromTemplateScreen } from './CreateProjectFromTemplateScreen';
4
+ export { ProjectDetailScreen } from './ProjectDetailScreen';
5
+ export { ProjectsOverviewScreen } from './ProjectsOverviewScreen';
1
6
  export { StudioApp } from './StudioApp';
2
- export { StudioDashboard } from './StudioDashboard';
3
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}