@valentinkolb/cloud 0.3.1 → 0.5.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 (194) hide show
  1. package/package.json +18 -8
  2. package/scripts/preload.ts +78 -23
  3. package/src/_internal/define-app.ts +119 -47
  4. package/src/_internal/runtime-context.ts +1 -0
  5. package/src/api/accounts-entities.ts +4 -0
  6. package/src/api/admin-core-settings.ts +98 -0
  7. package/src/api/announcements.ts +131 -0
  8. package/src/api/auth/schemas.ts +24 -0
  9. package/src/api/auth.ts +113 -10
  10. package/src/api/index.ts +15 -25
  11. package/src/api/me.ts +203 -14
  12. package/src/api/search/schemas.ts +1 -0
  13. package/src/api/search.ts +62 -8
  14. package/src/config/ssr.ts +2 -9
  15. package/src/contracts/announcements.test.ts +37 -0
  16. package/src/contracts/announcements.ts +121 -0
  17. package/src/contracts/app.ts +4 -0
  18. package/src/contracts/index.ts +3 -2
  19. package/src/contracts/registry.ts +4 -0
  20. package/src/contracts/shared.ts +108 -1
  21. package/src/desktop/index.ts +704 -0
  22. package/src/desktop/solid.tsx +938 -0
  23. package/src/server/api/index.ts +1 -1
  24. package/src/server/api/respond.ts +50 -10
  25. package/src/server/index.ts +44 -38
  26. package/src/server/middleware/auth.ts +98 -9
  27. package/src/server/middleware/index.ts +2 -1
  28. package/src/server/middleware/settings.ts +26 -0
  29. package/src/server/services/access.test.ts +197 -0
  30. package/src/server/services/access.ts +254 -6
  31. package/src/server/services/index.ts +14 -11
  32. package/src/server/services/pagination.ts +22 -0
  33. package/src/server/time.ts +45 -0
  34. package/src/services/account-lifecycle/index.ts +142 -18
  35. package/src/services/accounts/app.ts +658 -170
  36. package/src/services/accounts/authz.test.ts +77 -0
  37. package/src/services/accounts/authz.ts +22 -0
  38. package/src/services/accounts/entities.ts +84 -5
  39. package/src/services/accounts/groups.ts +30 -24
  40. package/src/services/accounts/model.test.ts +30 -0
  41. package/src/services/accounts/switching.test.ts +14 -0
  42. package/src/services/accounts/switching.ts +15 -6
  43. package/src/services/accounts/users.ts +75 -52
  44. package/src/services/announcements/index.test.ts +32 -0
  45. package/src/services/announcements/index.ts +224 -0
  46. package/src/services/audit/index.test.ts +84 -0
  47. package/src/services/audit/index.ts +431 -0
  48. package/src/services/auth-flows/index.ts +9 -2
  49. package/src/services/auth-flows/ipa.ts +0 -2
  50. package/src/services/auth-flows/magic-link.ts +3 -2
  51. package/src/services/auth-flows/password-reset.ts +284 -0
  52. package/src/services/auth-flows/proxy-return.test.ts +24 -0
  53. package/src/services/auth-flows/proxy-return.ts +49 -0
  54. package/src/services/gateway.ts +162 -0
  55. package/src/services/index.ts +44 -2
  56. package/src/services/ipa/effective-groups.test.ts +33 -0
  57. package/src/services/ipa/effective-groups.ts +70 -0
  58. package/src/services/ipa/profile.ts +45 -3
  59. package/src/services/ipa/search.ts +3 -5
  60. package/src/services/ipa/service-account.ts +15 -0
  61. package/src/services/ipa/sync-planning.test.ts +32 -0
  62. package/src/services/ipa/sync-planning.ts +22 -0
  63. package/src/services/ipa/sync.ts +110 -38
  64. package/src/services/oauth-tokens.ts +104 -0
  65. package/src/services/postgres.ts +21 -6
  66. package/src/services/providers/local/auth.test.ts +22 -0
  67. package/src/services/providers/local/auth.ts +46 -3
  68. package/src/services/secrets.ts +10 -0
  69. package/src/services/service-account-credentials.test.ts +210 -0
  70. package/src/services/service-account-credentials.ts +715 -0
  71. package/src/services/service-accounts.ts +188 -0
  72. package/src/services/session/index.ts +7 -8
  73. package/src/services/settings/app.ts +4 -20
  74. package/src/services/settings/defaults.ts +64 -22
  75. package/src/services/settings/store.ts +47 -0
  76. package/src/services/weather/forecast.ts +40 -7
  77. package/src/services/webauthn.test.ts +36 -0
  78. package/src/services/webauthn.ts +384 -0
  79. package/src/shared/icons.ts +391 -100
  80. package/src/shared/index.ts +7 -0
  81. package/src/shared/markdown/extensions/code.ts +38 -1
  82. package/src/shared/markdown/extensions/images.ts +39 -3
  83. package/src/shared/markdown/extensions/info-blocks.ts +5 -5
  84. package/src/shared/markdown/extensions/mark.ts +48 -0
  85. package/src/shared/markdown/extensions/sub-sup.ts +60 -0
  86. package/src/shared/markdown/extensions/tables.ts +79 -58
  87. package/src/shared/markdown/formula.test.ts +1089 -0
  88. package/src/shared/markdown/formula.ts +1187 -0
  89. package/src/shared/markdown/index.ts +76 -2
  90. package/src/shared/mock-cover.ts +130 -0
  91. package/src/shared/redirect.test.ts +49 -0
  92. package/src/shared/redirect.ts +52 -0
  93. package/src/shared/theme.test.ts +24 -0
  94. package/src/shared/theme.ts +68 -0
  95. package/src/shared/time.ts +13 -0
  96. package/src/ssr/AdminLayout.tsx +7 -3
  97. package/src/ssr/AdminSidebar.tsx +115 -49
  98. package/src/ssr/AppLaunchpad.island.tsx +176 -0
  99. package/src/ssr/Footer.island.tsx +3 -8
  100. package/src/ssr/GlobalAnnouncements.island.tsx +141 -0
  101. package/src/ssr/GlobalSearchDialog.tsx +545 -117
  102. package/src/ssr/HotkeysHelpRail.island.tsx +3 -70
  103. package/src/ssr/Layout.tsx +74 -66
  104. package/src/ssr/LayoutBreadcrumbs.island.tsx +44 -0
  105. package/src/ssr/LayoutHelp.tsx +266 -0
  106. package/src/ssr/NavMenu.island.tsx +0 -39
  107. package/src/ssr/ThemeToggleRail.island.tsx +3 -3
  108. package/src/ssr/TimezoneCookie.island.tsx +23 -0
  109. package/src/ssr/islands/index.ts +13 -0
  110. package/src/styles/base-popover.css +5 -2
  111. package/src/styles/effects.css +87 -6
  112. package/src/styles/global.css +146 -9
  113. package/src/styles/input.css +3 -1
  114. package/src/styles/utilities-buttons.css +133 -27
  115. package/src/styles/utilities-code-display.css +67 -0
  116. package/src/styles/utilities-completion.css +223 -0
  117. package/src/styles/utilities-detail.css +73 -0
  118. package/src/styles/utilities-feedback.css +16 -15
  119. package/src/styles/utilities-layout.css +42 -2
  120. package/src/styles/utilities-markdown-editor.css +472 -0
  121. package/src/styles/utilities-navigation.css +63 -8
  122. package/src/styles/utilities-script.css +84 -0
  123. package/src/styles/utilities-table-tile.css +229 -0
  124. package/src/types/ambient.d.ts +9 -0
  125. package/src/ui/completion/behaviors.test.ts +95 -0
  126. package/src/ui/completion/behaviors.ts +205 -0
  127. package/src/ui/completion/engine.ts +368 -0
  128. package/src/ui/completion/index.ts +40 -0
  129. package/src/ui/completion/overlay.ts +92 -0
  130. package/src/ui/dialog-core.ts +173 -45
  131. package/src/ui/filter/FilterChip.tsx +42 -40
  132. package/src/ui/index.ts +11 -12
  133. package/src/ui/input/AutocompleteEditor.tsx +656 -0
  134. package/src/ui/input/CheckboxCard.tsx +91 -0
  135. package/src/ui/input/Combobox.tsx +375 -0
  136. package/src/ui/input/DatePicker.tsx +846 -0
  137. package/src/ui/input/DateTimeInput.tsx +29 -4
  138. package/src/ui/input/FileDropzone.tsx +116 -0
  139. package/src/ui/input/IconInput.tsx +116 -0
  140. package/src/ui/input/ImageInput.tsx +19 -2
  141. package/src/ui/input/MultiSelectInput.tsx +448 -0
  142. package/src/ui/input/NumberInput.tsx +417 -61
  143. package/src/ui/input/SegmentedControl.tsx +2 -2
  144. package/src/ui/input/Select.tsx +172 -10
  145. package/src/ui/input/Slider.tsx +3 -4
  146. package/src/ui/input/Switch.tsx +3 -2
  147. package/src/ui/input/TemplateEditor.tsx +212 -0
  148. package/src/ui/input/TextInput.tsx +144 -13
  149. package/src/ui/input/index.ts +53 -8
  150. package/src/ui/input/markdown/MarkdownEditor.tsx +774 -0
  151. package/src/ui/input/markdown/Toolbar.tsx +90 -0
  152. package/src/ui/input/markdown/actions.ts +233 -0
  153. package/src/ui/input/markdown/active-formats.ts +94 -0
  154. package/src/ui/input/markdown/behaviors.ts +193 -0
  155. package/src/ui/input/markdown/code-zone.ts +23 -0
  156. package/src/ui/input/markdown/highlight.ts +316 -0
  157. package/src/ui/layout.ts +22 -0
  158. package/src/ui/misc/AppOverview.tsx +105 -0
  159. package/src/ui/misc/AppWorkspace.tsx +607 -0
  160. package/src/ui/misc/Calendar.tsx +1291 -0
  161. package/src/ui/misc/Chart.tsx +162 -0
  162. package/src/ui/misc/CodeDisplay.tsx +54 -0
  163. package/src/ui/misc/ContextMenu.tsx +2 -2
  164. package/src/ui/misc/DataTable.tsx +269 -0
  165. package/src/ui/misc/DockWorkspace.tsx +425 -0
  166. package/src/ui/misc/Docs.tsx +153 -0
  167. package/src/ui/misc/Dropdown.tsx +2 -2
  168. package/src/ui/misc/EntitySearch.tsx +260 -129
  169. package/src/ui/misc/LinkCard.tsx +14 -2
  170. package/src/ui/misc/LogEntriesTable.tsx +34 -31
  171. package/src/ui/misc/Pagination.tsx +31 -12
  172. package/src/ui/misc/PanelDialog.tsx +109 -0
  173. package/src/ui/misc/Panes.tsx +873 -0
  174. package/src/ui/misc/PermissionEditor.tsx +358 -262
  175. package/src/ui/misc/Placeholder.tsx +40 -0
  176. package/src/ui/misc/ProgressBar.tsx +1 -1
  177. package/src/ui/misc/ResourceApiKeys.tsx +260 -0
  178. package/src/ui/misc/SettingsModal.tsx +150 -0
  179. package/src/ui/misc/StatCell.tsx +182 -40
  180. package/src/ui/misc/StatGrid.tsx +149 -0
  181. package/src/ui/misc/StructuredDataPreview.tsx +107 -0
  182. package/src/ui/misc/code-highlight.ts +213 -0
  183. package/src/ui/misc/index.ts +93 -12
  184. package/src/ui/prompts.tsx +362 -312
  185. package/src/ui/toast.ts +384 -0
  186. package/src/ui/widgets/Widget.tsx +12 -4
  187. package/src/ssr/MoreAppsDropdown.island.tsx +0 -61
  188. package/src/ui/ipa/GroupView.tsx +0 -36
  189. package/src/ui/ipa/LoginBtn.tsx +0 -16
  190. package/src/ui/ipa/UserView.tsx +0 -58
  191. package/src/ui/ipa/index.ts +0 -4
  192. package/src/ui/navigation.ts +0 -32
  193. package/src/ui/sidebar.tsx +0 -468
  194. /package/src/ui/{ipa → misc}/Avatar.tsx +0 -0
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Small safe highlighters for CodeDisplay.
3
+ *
4
+ * These are display-only highlighters: no AST, no runtime parser, no
5
+ * dependency. Every input character is HTML-escaped before being wrapped
6
+ * in token spans, so the returned strings are safe to inject with
7
+ * `innerHTML`.
8
+ */
9
+
10
+ const KEYWORDS = new Set([
11
+ "const",
12
+ "let",
13
+ "var",
14
+ "function",
15
+ "return",
16
+ "if",
17
+ "else",
18
+ "for",
19
+ "while",
20
+ "import",
21
+ "from",
22
+ "export",
23
+ "default",
24
+ "async",
25
+ "await",
26
+ "new",
27
+ "true",
28
+ "false",
29
+ "null",
30
+ "undefined",
31
+ "as",
32
+ "type",
33
+ "interface",
34
+ "void",
35
+ "this",
36
+ "typeof",
37
+ "in",
38
+ "of",
39
+ ]);
40
+
41
+ export type CodeDisplayLanguage = "ts" | "tsx" | "js" | "jsx" | "script" | "markdown" | "md" | "text";
42
+
43
+ export const escapeCodeHtml = (s: string): string => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
44
+
45
+ const isIdStart = (c: string): boolean => /[A-Za-z_$]/.test(c);
46
+ const isIdCont = (c: string): boolean => /[\w$]/.test(c);
47
+ const isDigit = (c: string): boolean => /[0-9]/.test(c);
48
+ const wrap = (cls: string, raw: string): string => `<span class="${cls}">${escapeCodeHtml(raw)}</span>`;
49
+ const isCodeLanguage = (language: string | undefined): boolean =>
50
+ language === "script" || language === "js" || language === "jsx" || language === "ts" || language === "tsx";
51
+
52
+ export const highlightCode = (code: string): string => {
53
+ let out = "";
54
+ let i = 0;
55
+ const n = code.length;
56
+
57
+ while (i < n) {
58
+ const c = code[i]!;
59
+
60
+ if (c === "/" && code[i + 1] === "/") {
61
+ const nl = code.indexOf("\n", i);
62
+ const end = nl === -1 ? n : nl;
63
+ out += wrap("cd-c", code.slice(i, end));
64
+ i = end;
65
+ continue;
66
+ }
67
+
68
+ if (c === "/" && code[i + 1] === "*") {
69
+ const close = code.indexOf("*/", i + 2);
70
+ const end = close === -1 ? n : close + 2;
71
+ out += wrap("cd-c", code.slice(i, end));
72
+ i = end;
73
+ continue;
74
+ }
75
+
76
+ if (c === '"' || c === "'" || c === "`") {
77
+ const quote = c;
78
+ let j = i + 1;
79
+ while (j < n) {
80
+ if (code[j] === "\\") {
81
+ j += 2;
82
+ continue;
83
+ }
84
+ if (code[j] === quote) {
85
+ j++;
86
+ break;
87
+ }
88
+ j++;
89
+ }
90
+ out += wrap("cd-s", code.slice(i, j));
91
+ i = j;
92
+ continue;
93
+ }
94
+
95
+ if (isDigit(c)) {
96
+ let j = i;
97
+ while (j < n && (isDigit(code[j]!) || code[j] === ".")) j++;
98
+ out += wrap("cd-n", code.slice(i, j));
99
+ i = j;
100
+ continue;
101
+ }
102
+
103
+ if (isIdStart(c)) {
104
+ let j = i;
105
+ while (j < n && isIdCont(code[j]!)) j++;
106
+ const word = code.slice(i, j);
107
+ let cls = "";
108
+ if (KEYWORDS.has(word)) cls = "cd-k";
109
+ else if (/^[A-Z]/.test(word)) cls = "cd-p";
110
+ else {
111
+ let k = j;
112
+ while (k < n && code[k] === " ") k++;
113
+ const next = code[k];
114
+ const prev = i > 0 ? code[i - 1] : "";
115
+ const assignment = next === "=" && code[k + 1] !== "=" && code[k + 1] !== ">";
116
+ const objectKey = next === ":";
117
+ const functionCall = next === "(";
118
+ const property = prev === ".";
119
+ if (assignment || objectKey) cls = "cd-a";
120
+ else if (functionCall || property) cls = "cd-f";
121
+ }
122
+ out += cls ? wrap(cls, word) : escapeCodeHtml(word);
123
+ i = j;
124
+ continue;
125
+ }
126
+
127
+ out += escapeCodeHtml(c);
128
+ i++;
129
+ }
130
+
131
+ return out;
132
+ };
133
+
134
+ const highlightMarkdownLine = (line: string): string => {
135
+ const escaped = escapeCodeHtml(line);
136
+
137
+ const heading = /^(#{1,6})(\s.*)$/.exec(escaped);
138
+ if (heading) return `<span class="cd-md-syntax">${heading[1]}</span>${highlightMarkdownInline(heading[2] ?? "")}`;
139
+
140
+ const ref = /^(@[A-Za-z][\w-]*)$/.exec(escaped);
141
+ if (ref) return `<span class="cd-md-ref">${ref[1]}</span>`;
142
+
143
+ const directive = /^(\s*:::)([A-Za-z][\w-]*)?(.*)$/.exec(escaped);
144
+ if (directive) {
145
+ const name = directive[2] ? `<span class="cd-md-directive">${directive[2]}</span>` : "";
146
+ return `${directive[1] ? `<span class="cd-md-syntax">${directive[1]}</span>` : ""}${name}${highlightMarkdownInline(directive[3] ?? "")}`;
147
+ }
148
+
149
+ const fence = /^(```)(.*)$/.exec(escaped);
150
+ if (fence) {
151
+ const language = fence[2] ? `<span class="cd-md-ref">${fence[2]}</span>` : "";
152
+ return `<span class="cd-md-syntax">${fence[1]}</span>${language}`;
153
+ }
154
+
155
+ const table = /^(\s*\|)(.*)(\|\s*)$/.exec(escaped);
156
+ if (table) return `<span class="cd-md-syntax">${table[1]}</span>${table[2]}<span class="cd-md-syntax">${table[3]}</span>`;
157
+
158
+ const task = /^(\s*(?:[-*+]|\d+\.)\s+)(\[[ xX]\])(\s+.*)$/.exec(escaped);
159
+ if (task) {
160
+ return `<span class="cd-md-syntax">${task[1]}</span><span class="cd-md-checkbox">${task[2]}</span>${highlightMarkdownInline(task[3] ?? "")}`;
161
+ }
162
+
163
+ const list = /^(\s*(?:[-*+]|\d+\.)\s+)(.*)$/.exec(escaped);
164
+ if (list) return `<span class="cd-md-syntax">${list[1]}</span>${highlightMarkdownInline(list[2] ?? "")}`;
165
+
166
+ return highlightMarkdownInline(escaped);
167
+ };
168
+
169
+ const highlightMarkdownInline = (escaped: string): string =>
170
+ escaped
171
+ .replace(/(`)([^`\n]+?)(`)/g, '<span class="cd-md-syntax">$1</span><span class="cd-md-code">$2</span><span class="cd-md-syntax">$3</span>')
172
+ .replace(/(\*\*)([^*\n]+?)(\*\*)/g, '<span class="cd-md-syntax">$1</span>$2<span class="cd-md-syntax">$3</span>')
173
+ .replace(/(\[[^\]\n]+?\])(\([^)]+\))/g, '<span class="cd-md-link">$1</span><span class="cd-md-syntax">$2</span>')
174
+ .replace(/(^|\s)(@[A-Za-z][\w-]*)/g, '$1<span class="cd-md-ref">$2</span>')
175
+ .replace(/(#[A-Za-z][\w/-]*)/g, '<span class="cd-md-tag">$1</span>')
176
+ .replace(/(=[A-Z][A-Z0-9_]*\([^)\n]*\))/g, '<span class="cd-md-formula">$1</span>');
177
+
178
+ export const highlightMarkdownDisplay = (code: string): string => code.split("\n").map(highlightMarkdownLine).join("\n");
179
+
180
+ export const highlightCodeDisplayLines = (code: string, language: CodeDisplayLanguage = "text"): string[] => {
181
+ const lines = code.split("\n");
182
+
183
+ if (language === "text") return lines.map((line) => escapeCodeHtml(line || " "));
184
+
185
+ if (language === "markdown" || language === "md") {
186
+ let fencedLanguage: string | undefined;
187
+ return lines.map((line) => {
188
+ const fence = /^(```)(\w+)?(.*)$/.exec(line);
189
+ if (fence) {
190
+ const highlightedFence = highlightMarkdownLine(line);
191
+ fencedLanguage = fencedLanguage ? undefined : fence[2];
192
+ return highlightedFence;
193
+ }
194
+ return isCodeLanguage(fencedLanguage) ? highlightCode(line || " ") : highlightMarkdownLine(line || " ");
195
+ });
196
+ }
197
+
198
+ if (lines.length >= 2 && /^```\w+/.test(lines[0] ?? "") && /^```\s*$/.test(lines[lines.length - 1] ?? "")) {
199
+ return lines.map((line, index) => {
200
+ if (index === 0 || index === lines.length - 1) return highlightMarkdownLine(line || " ");
201
+ return highlightCode(line || " ");
202
+ });
203
+ }
204
+
205
+ return lines.map((line) => highlightCode(line || " "));
206
+ };
207
+
208
+ export const highlightCodeDisplay = (code: string, language: CodeDisplayLanguage = "text"): string => {
209
+ if (code.includes("\n")) return highlightCodeDisplayLines(code, language).join("\n");
210
+ if (language === "markdown" || language === "md") return highlightMarkdownDisplay(code);
211
+ if (language === "text") return escapeCodeHtml(code);
212
+ return highlightCode(code);
213
+ };
@@ -1,18 +1,99 @@
1
- export { default as Dropdown } from "./Dropdown";
1
+ export type { AppOverviewEmptyStateProps, AppOverviewPanelProps, AppOverviewProps } from "./AppOverview";
2
+ export { default as AppOverview } from "./AppOverview";
3
+ export type {
4
+ AppWorkspaceDetailProps,
5
+ AppWorkspaceDetailWidth,
6
+ AppWorkspaceMainProps,
7
+ AppWorkspaceProps,
8
+ AppWorkspaceSidebarBodyProps,
9
+ AppWorkspaceSidebarHeaderProps,
10
+ AppWorkspaceSidebarItemProps,
11
+ AppWorkspaceSidebarItemTone,
12
+ AppWorkspaceSidebarMobileProps,
13
+ AppWorkspaceSidebarProps,
14
+ AppWorkspaceSidebarSectionProps,
15
+ } from "./AppWorkspace";
16
+ export { default as AppWorkspace } from "./AppWorkspace";
17
+ export { default as Avatar } from "./Avatar";
18
+ export type {
19
+ CalendarAttendee,
20
+ CalendarDayBadge,
21
+ CalendarEvent,
22
+ CalendarEventColor,
23
+ CalendarEventRenderContext,
24
+ CalendarEventTimeChange,
25
+ CalendarLabels,
26
+ CalendarProps,
27
+ CalendarRecurrence,
28
+ CalendarResource,
29
+ CalendarView,
30
+ } from "./Calendar";
31
+ export { default as Calendar } from "./Calendar";
32
+ export type { ChartKind, ChartProps } from "./Chart";
33
+ export { default as Chart } from "./Chart";
34
+ export type { CodeDisplayLanguage, CodeDisplayProps } from "./CodeDisplay";
35
+ export { default as CodeDisplay } from "./CodeDisplay";
36
+ export { default as ContextMenu } from "./ContextMenu";
37
+ export { default as CopyButton } from "./CopyButton";
38
+ export type {
39
+ DataTableColumn,
40
+ DataTableFooter,
41
+ DataTableProps,
42
+ DataTableRenderCell,
43
+ DataTableRenderHeader,
44
+ } from "./DataTable";
45
+ export { default as DataTable } from "./DataTable";
46
+ export type {
47
+ DockWorkspacePaneDescriptor,
48
+ DockWorkspacePaneProps,
49
+ DockWorkspaceProps,
50
+ DockWorkspaceResultProps,
51
+ DockWorkspaceSectionState,
52
+ DockWorkspaceState,
53
+ } from "./DockWorkspace";
54
+ export { default as DockWorkspace, normalizeDockWorkspaceState, readDockWorkspaceStateCookie } from "./DockWorkspace";
55
+ export type { DocCodeHighlighter, DocCodeProps, DocConcept, DocNoteVariant, DocRow } from "./Docs";
56
+ export { DocCode, DocConceptGrid, DocInlineCode, DocLead, DocNote, DocPage, DocRows, DocSection } from "./Docs";
2
57
  export type { DropdownItem } from "./Dropdown";
58
+ export { default as Dropdown } from "./Dropdown";
59
+ export type { EntitySearchPrincipal } from "./EntitySearch";
60
+ export { default as EntitySearch } from "./EntitySearch";
61
+ export type { LightboxImage } from "./Lightbox";
62
+ export { default as Lightbox } from "./Lightbox";
3
63
  export { default as LinkCard } from "./LinkCard";
4
- export { default as ProgressBar } from "./ProgressBar";
5
- export { Pagination } from "./Pagination";
64
+ export type { LogTableEntry } from "./LogEntriesTable";
65
+ export { default as LogEntriesTable } from "./LogEntriesTable";
6
66
  export { default as MarkdownView } from "./MarkdownView";
67
+ export { Pagination } from "./Pagination";
68
+ export type {
69
+ PanelDialogBodyProps,
70
+ PanelDialogFooterProps,
71
+ PanelDialogHeaderProps,
72
+ PanelDialogProps,
73
+ PanelDialogSectionProps,
74
+ } from "./PanelDialog";
75
+ export { confirmDiscardIfDirty, default as PanelDialog, panelDialogOptions, panelDialogPanelClass } from "./PanelDialog";
76
+ export type {
77
+ PanesElementProps,
78
+ PanesLeafNode,
79
+ PanesLeafPresentation,
80
+ PanesNode,
81
+ PanesRootProps,
82
+ PanesSplitNode,
83
+ PanesValue,
84
+ } from "./Panes";
85
+ export { createPanesValue, default as Panes, normalizePanesValue } from "./Panes";
7
86
  export { default as PermissionEditor } from "./PermissionEditor";
8
- export { default as EntitySearch } from "./EntitySearch";
9
- export type { EntitySearchResult } from "./EntitySearch";
10
- export { default as CopyButton } from "./CopyButton";
11
- export { default as Lightbox } from "./Lightbox";
12
- export type { LightboxImage } from "./Lightbox";
87
+ export type { PlaceholderAlign, PlaceholderProps, PlaceholderSurface } from "./Placeholder";
88
+ export { default as Placeholder } from "./Placeholder";
89
+ export { default as ProgressBar } from "./ProgressBar";
13
90
  export { default as RemoveBtn } from "./RemoveBtn";
14
- export { default as LogEntriesTable } from "./LogEntriesTable";
15
- export type { LogTableEntry } from "./LogEntriesTable";
16
- export { default as ContextMenu } from "./ContextMenu";
17
- export { default as StatCell } from "./StatCell";
91
+ export type { ResourceApiKey, ResourceApiKeyPermissionOption, ResourceApiKeysProps } from "./ResourceApiKeys";
92
+ export { default as ResourceApiKeys } from "./ResourceApiKeys";
93
+ export type { SettingsModalProps, SettingsModalTabProps, SettingsModalTabTone } from "./SettingsModal";
94
+ export { default as SettingsModal } from "./SettingsModal";
18
95
  export type { StatCellAccent, StatCellProps } from "./StatCell";
96
+ export { default as StatCell } from "./StatCell";
97
+ export { default as StatGrid } from "./StatGrid";
98
+ export type { StructuredDataPreviewMode, StructuredDataPreviewProps } from "./StructuredDataPreview";
99
+ export { default as StructuredDataPreview } from "./StructuredDataPreview";