alinea 2.0.0-preview.13 → 2.0.0-preview.14

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 (323) hide show
  1. package/dist/.init/content/pages/welcome.json +1 -1
  2. package/dist/.mcp/later/dev.json +1 -1
  3. package/dist/.mcp/online/dev.json +1 -1
  4. package/dist/adapter/next/cms.js +6 -2
  5. package/dist/adapter/next/context.js +1 -4
  6. package/dist/adapter/next/handler.js +12 -1
  7. package/dist/backend/CommitEntries.d.ts +17 -0
  8. package/dist/backend/CommitEntries.js +39 -0
  9. package/dist/backend/Handler.d.ts +9 -0
  10. package/dist/backend/Handler.js +80 -20
  11. package/dist/backend/api/BasicAuth.js +5 -1
  12. package/dist/backend/api/CreateBackend.js +2 -2
  13. package/dist/backend/api/DatabaseApi.js +18 -5
  14. package/dist/backend/api/GithubApi.d.ts +13 -0
  15. package/dist/backend/api/GithubApi.js +170 -30
  16. package/dist/backend/api/database.js +2 -2
  17. package/dist/backend/util/Syncable.d.ts +6 -0
  18. package/dist/backend/util/Syncable.js +3 -1
  19. package/dist/bundled.d.ts +911 -151
  20. package/dist/chunks/{chunk-5H4D5JQL.js → chunk-2PP7WJUJ.js} +1 -11
  21. package/dist/chunks/{chunk-QHHMKJUO.js → chunk-7DDPSWRY.js} +465 -2
  22. package/dist/chunks/{chunk-HOETF6HN.js → chunk-PMGIIYDD.js} +1 -0
  23. package/dist/chunks/{chunk-3QFSGTGF.js → chunk-SCV3TEXM.js} +1 -1
  24. package/dist/chunks/{chunk-UPY2RUZF.js → chunk-TWBREZWC.js} +30 -0
  25. package/dist/cli/Generate.js +20 -7
  26. package/dist/cli/Mcp.js +1 -1
  27. package/dist/cli/Serve.js +1 -1
  28. package/dist/cli/bin.js +1 -1
  29. package/dist/cli/build/BuildEmitter.d.ts +5 -1
  30. package/dist/cli/build/BuildEmitter.js +8 -3
  31. package/dist/cli/generate/CompileConfig.js +10 -6
  32. package/dist/cli/generate/DevDB.d.ts +4 -1
  33. package/dist/cli/generate/DevDB.js +15 -7
  34. package/dist/cli/generate/GenerateDashboard.js +1 -0
  35. package/dist/cli/generate/MediaLocations.d.ts +18 -0
  36. package/dist/cli/generate/MediaLocations.js +69 -0
  37. package/dist/cli/serve/CreateLocalServer.js +1 -0
  38. package/dist/cli/serve/mcp/DevMcp.js +1 -1
  39. package/dist/cloud/CloudRemote.js +21 -7
  40. package/dist/cms.d.ts +4 -2
  41. package/dist/components/Alert.js +2 -2
  42. package/dist/components/AppShell.js +2 -2
  43. package/dist/components/AsyncList.d.ts +52 -0
  44. package/dist/components/AsyncList.js +69 -0
  45. package/dist/components/Breadcrumbs.js +6 -6
  46. package/dist/components/Button.js +4 -4
  47. package/dist/components/Calendar.js +18 -18
  48. package/dist/components/Checkbox.js +10 -10
  49. package/dist/components/CheckboxGroup.js +2 -2
  50. package/dist/components/Collapsible.js +5 -5
  51. package/dist/components/ColorSwatch.js +2 -2
  52. package/dist/components/ColorSwatchPicker.js +4 -4
  53. package/dist/components/ComboBox.d.ts +27 -9
  54. package/dist/components/ComboBox.js +40 -9
  55. package/dist/components/Command.js +13 -13
  56. package/dist/components/ContentCard.js +28 -28
  57. package/dist/components/ContentGrid.js +11 -11
  58. package/dist/components/DataList.js +1 -1
  59. package/dist/components/DateField.d.ts +4 -0
  60. package/dist/components/DateField.js +2 -2
  61. package/dist/components/DatePicker.js +2 -2
  62. package/dist/components/DateRangePicker.js +2 -2
  63. package/dist/components/Dialog.d.ts +14 -3
  64. package/dist/components/Dialog.js +38 -11
  65. package/dist/components/DropZone.js +6 -6
  66. package/dist/components/DropdownMenu.js +8 -8
  67. package/dist/components/Empty.js +4 -4
  68. package/dist/components/Field.d.ts +1 -1
  69. package/dist/components/Field.js +18 -12
  70. package/dist/components/Form.d.ts +23 -0
  71. package/dist/components/Form.js +64 -0
  72. package/dist/components/Link.d.ts +8 -1
  73. package/dist/components/List.js +27 -27
  74. package/dist/components/MediaPreview.js +5 -5
  75. package/dist/components/MultipleSelect.d.ts +13 -8
  76. package/dist/components/MultipleSelect.js +25 -25
  77. package/dist/components/NavRail.js +7 -7
  78. package/dist/components/NumberField.d.ts +5 -1
  79. package/dist/components/NumberField.js +6 -4
  80. package/dist/components/Page.js +6 -6
  81. package/dist/components/Popover.js +2 -2
  82. package/dist/components/PreviewFrame.js +8 -8
  83. package/dist/components/RadioGroup.js +10 -10
  84. package/dist/components/Resizable.js +1 -1
  85. package/dist/components/SearchField.js +8 -8
  86. package/dist/components/Select.d.ts +13 -10
  87. package/dist/components/Select.js +18 -32
  88. package/dist/components/Sheet.js +6 -6
  89. package/dist/components/Sidebar.js +5 -5
  90. package/dist/components/SortableList.js +12 -12
  91. package/dist/components/Spinner.js +4 -4
  92. package/dist/components/Stack.d.ts +20 -0
  93. package/dist/components/Stack.js +45 -0
  94. package/dist/components/Surface.js +1 -1
  95. package/dist/components/Switch.js +5 -5
  96. package/dist/components/Table.d.ts +11 -1
  97. package/dist/components/Table.js +81 -53
  98. package/dist/components/Tabs.js +6 -6
  99. package/dist/components/TagGroup.js +10 -10
  100. package/dist/components/TextField.d.ts +7 -1
  101. package/dist/components/TextField.js +20 -11
  102. package/dist/components/TimeField.d.ts +6 -1
  103. package/dist/components/TimeField.js +51 -26
  104. package/dist/components/Timestamp.js +1 -1
  105. package/dist/components/ToggleGroup.js +2 -2
  106. package/dist/components/Toolbar.js +3 -3
  107. package/dist/components/Tooltip.js +5 -4
  108. package/dist/components/Tree.js +27 -27
  109. package/dist/components/internal/DateControl.js +11 -11
  110. package/dist/components/internal/FormScope.d.ts +2 -0
  111. package/dist/components/internal/FormScope.js +8 -0
  112. package/dist/components/internal/ListBoxGroup.d.ts +12 -0
  113. package/dist/components/internal/ListBoxGroup.js +46 -0
  114. package/dist/components/internal/ListBoxOption.d.ts +2 -2
  115. package/dist/components/internal/ListBoxOption.js +5 -5
  116. package/dist/components/internal/Locale.js +2 -2
  117. package/dist/components/internal/PopoverSurface.js +5 -4
  118. package/dist/components/internal/SelectionCheckbox.js +5 -5
  119. package/dist/components/internal/Slot.js +1 -1
  120. package/dist/components/internal/ToggleButton.js +4 -4
  121. package/dist/components/internal/Trigger.js +2 -2
  122. package/dist/components/internal/useDragDrop.js +2 -2
  123. package/dist/components/types.d.ts +4 -0
  124. package/dist/components.d.ts +3 -0
  125. package/dist/components.js +3 -0
  126. package/dist/core/Client.js +12 -1
  127. package/dist/core/Config.d.ts +6 -0
  128. package/dist/core/Config.js +12 -0
  129. package/dist/core/DashboardEntry.d.ts +19 -0
  130. package/dist/core/DashboardEntry.js +0 -0
  131. package/dist/core/Document.d.ts +2 -2
  132. package/dist/core/Document.js +10 -3
  133. package/dist/core/EntryFields.d.ts +8 -2
  134. package/dist/core/Field.d.ts +5 -0
  135. package/dist/core/Filter.d.ts +19 -2
  136. package/dist/core/Filter.js +5 -0
  137. package/dist/core/Graph.d.ts +10 -2
  138. package/dist/core/Overview.d.ts +74 -5
  139. package/dist/core/Overview.js +1 -0
  140. package/dist/core/Root.js +1 -1
  141. package/dist/core/Scope.d.ts +5 -0
  142. package/dist/core/Scope.js +22 -5
  143. package/dist/core/Type.d.ts +25 -6
  144. package/dist/core/Type.js +25 -7
  145. package/dist/core/db/LocalStore.d.ts +7 -0
  146. package/dist/core/field/CreateField.d.ts +1 -2
  147. package/dist/core/source/Source.d.ts +2 -0
  148. package/dist/core/source/Source.js +11 -0
  149. package/dist/core/util/Async.d.ts +2 -0
  150. package/dist/core/util/Async.js +12 -1
  151. package/dist/core/util/Checks.js +1 -1
  152. package/dist/core/util/Slugs.js +4 -3
  153. package/dist/dashboard/App.css +13 -11
  154. package/dist/dashboard/App.d.ts +1 -0
  155. package/dist/dashboard/App.js +22 -6
  156. package/dist/dashboard/Href.d.ts +37 -0
  157. package/dist/dashboard/Href.js +46 -0
  158. package/dist/dashboard/app/ActivityStatus.js +34 -12
  159. package/dist/dashboard/app/AuthView.js +2 -2
  160. package/dist/dashboard/app/BlockSettings.d.ts +9 -0
  161. package/dist/dashboard/app/BlockSettings.js +16 -0
  162. package/dist/dashboard/app/BlockSheet.js +3 -3
  163. package/dist/dashboard/app/BlockSheetStoryFrame.js +2 -2
  164. package/dist/dashboard/app/CompactField.js +15 -15
  165. package/dist/dashboard/app/CroppedImage.js +2 -2
  166. package/dist/dashboard/app/DashboardLayout.d.ts +1 -1
  167. package/dist/dashboard/app/DashboardLayout.js +12 -0
  168. package/dist/dashboard/app/EntryActions.d.ts +11 -0
  169. package/dist/dashboard/app/EntryActions.js +30 -0
  170. package/dist/dashboard/app/EntryFields.d.ts +15 -2
  171. package/dist/dashboard/app/EntryFields.js +26 -5
  172. package/dist/dashboard/app/EntryHeader.js +17 -7
  173. package/dist/dashboard/app/EntryReferences.js +2 -2
  174. package/dist/dashboard/app/EntrySidebar.js +25 -23
  175. package/dist/dashboard/app/EntrySidebarPreview.js +2 -2
  176. package/dist/dashboard/app/EntryValidationModal.js +3 -3
  177. package/dist/dashboard/app/Explorer.js +84 -45
  178. package/dist/dashboard/app/ExplorerBatchActions.js +4 -4
  179. package/dist/dashboard/app/ExplorerControls.js +5 -5
  180. package/dist/dashboard/app/ExplorerList.js +2 -2
  181. package/dist/dashboard/app/ExplorerModal.js +3 -3
  182. package/dist/dashboard/app/ExplorerOverviewHeader.d.ts +6 -0
  183. package/dist/dashboard/app/ExplorerOverviewHeader.js +28 -0
  184. package/dist/dashboard/app/ExplorerTable.js +7 -7
  185. package/dist/dashboard/app/ExplorerTabs.d.ts +12 -0
  186. package/dist/dashboard/app/ExplorerTabs.js +42 -0
  187. package/dist/dashboard/app/ImageEditor.js +31 -31
  188. package/dist/dashboard/app/LinkPicker.js +3 -3
  189. package/dist/dashboard/app/LocaleMenu.js +9 -9
  190. package/dist/dashboard/app/MediaPreviewCell.js +5 -5
  191. package/dist/dashboard/app/OverviewCell.js +12 -10
  192. package/dist/dashboard/app/RemoveDialog.js +5 -0
  193. package/dist/dashboard/app/SearchBar.js +4 -4
  194. package/dist/dashboard/app/SettingsTab.d.ts +6 -0
  195. package/dist/dashboard/app/SettingsTab.js +27 -0
  196. package/dist/dashboard/app/SidebarTree.js +19 -19
  197. package/dist/dashboard/app/WorkspaceMenu.js +6 -6
  198. package/dist/dashboard/app/WorkspaceRoots.js +102 -98
  199. package/dist/dashboard/app/editor/FileEditor.js +18 -18
  200. package/dist/dashboard/app/pages/EntryPage.js +42 -39
  201. package/dist/dashboard/app/pages/RootPage.js +3 -3
  202. package/dist/dashboard/app/pages/SplashPage.js +94 -79
  203. package/dist/dashboard/app/pages/UsersPage.js +9 -9
  204. package/dist/dashboard/app/ui/DashboardModal.js +14 -14
  205. package/dist/dashboard/atoms/activity.d.ts +1 -0
  206. package/dist/dashboard/atoms/activity.js +8 -5
  207. package/dist/dashboard/atoms/config.d.ts +2 -0
  208. package/dist/dashboard/atoms/dashboard.d.ts +11 -0
  209. package/dist/dashboard/atoms/dashboard.js +8 -0
  210. package/dist/dashboard/atoms/editor.d.ts +7 -1
  211. package/dist/dashboard/atoms/editor.js +14 -2
  212. package/dist/dashboard/atoms/explorer.d.ts +15 -0
  213. package/dist/dashboard/atoms/explorer.js +43 -14
  214. package/dist/dashboard/atoms/graph.d.ts +5 -0
  215. package/dist/dashboard/atoms/graph.js +26 -1
  216. package/dist/dashboard/atoms/nav.d.ts +16 -10
  217. package/dist/dashboard/atoms/nav.js +96 -36
  218. package/dist/dashboard/atoms/overview.d.ts +26 -4
  219. package/dist/dashboard/atoms/overview.js +41 -12
  220. package/dist/dashboard/atoms/root.js +7 -1
  221. package/dist/dashboard/boot/ActivityEvent.d.ts +1 -1
  222. package/dist/dashboard/boot/Boot.js +6 -0
  223. package/dist/dashboard/boot/DashboardWorker.d.ts +6 -0
  224. package/dist/dashboard/boot/DashboardWorker.js +89 -8
  225. package/dist/dashboard/boot/LoadWorker.js +3 -0
  226. package/dist/dashboard/boot/SyncEvent.d.ts +7 -0
  227. package/dist/dashboard/boot/SyncEvent.js +14 -0
  228. package/dist/dashboard/boot/WorkerDB.d.ts +1 -0
  229. package/dist/dashboard/boot/WorkerDB.js +3 -0
  230. package/dist/dashboard/cms/EntryTable.d.ts +4 -3
  231. package/dist/dashboard/cms/EntryTable.js +2 -2
  232. package/dist/dashboard/cms/ViewProps.d.ts +3 -2
  233. package/dist/dashboard/cms/hooks.d.ts +34 -18
  234. package/dist/dashboard/cms/hooks.js +43 -18
  235. package/dist/dashboard/contexts.d.ts +3 -2
  236. package/dist/dashboard/contexts.js +3 -2
  237. package/dist/dashboard/hook/UseEntryEditor.d.ts +1 -1
  238. package/dist/dashboard/hook/UseEntryEditor.js +7 -3
  239. package/dist/dashboard/icons.d.ts +1 -0
  240. package/dist/dashboard/icons.js +15 -0
  241. package/dist/database/BrowserEntryStore.js +35 -13
  242. package/dist/database/DatabaseTables.js +1 -1
  243. package/dist/database/EntryDatabase.d.ts +10 -1
  244. package/dist/database/EntryDatabase.js +31 -10
  245. package/dist/database/EntryStore.js +1 -11
  246. package/dist/database/entry/EntryTable.d.ts +5 -3
  247. package/dist/database/entry/EntryTable.js +25 -8
  248. package/dist/database/query/Condition.d.ts +4 -1
  249. package/dist/database/query/Condition.js +16 -5
  250. package/dist/database/query/EntryQuery.js +59 -7
  251. package/dist/database/query/Relation.d.ts +13 -1
  252. package/dist/database/query/Relation.js +19 -1
  253. package/dist/database/query/Search.d.ts +7 -1
  254. package/dist/database/query/Search.js +54 -9
  255. package/dist/database/sync/EntrySyncer.d.ts +2 -0
  256. package/dist/database/sync/EntrySyncer.js +4 -2
  257. package/dist/database/sync/Ingest.d.ts +2 -1
  258. package/dist/database/sync/Ingest.js +20 -6
  259. package/dist/field/code/CodeField.view.js +12 -12
  260. package/dist/field/link/EntryLink.d.ts +4 -5
  261. package/dist/field/link/FileLink.d.ts +2 -2
  262. package/dist/field/link/ImageLink.d.ts +2 -5
  263. package/dist/field/link/ImageLink.js +0 -1
  264. package/dist/field/link/LinkField.view.js +18 -15
  265. package/dist/field/list/ListField.view.js +50 -35
  266. package/dist/field/metadata/MetadataField.view.js +14 -14
  267. package/dist/field/richtext/RichTextBlock.js +39 -35
  268. package/dist/field/richtext/RichTextExtensions.js +23 -23
  269. package/dist/field/richtext/RichTextField.view.js +6 -6
  270. package/dist/field/richtext/RichTextInsertMenu.js +5 -5
  271. package/dist/field/richtext/RichTextToolbar.js +26 -1
  272. package/dist/field/richtext/Toolbar.d.ts +9 -1
  273. package/dist/field/richtext/Toolbar.js +12 -2
  274. package/dist/field/select/SelectField.view.js +1 -0
  275. package/dist/index.css +174 -23
  276. package/dist/index.d.ts +1 -0
  277. package/dist/index.js +3 -1
  278. package/dist/next.d.ts +2 -0
  279. package/dist/next.edge.d.ts +2 -0
  280. package/dist/picker/entry/EntryPicker.d.ts +3 -1
  281. package/dist/picker/entry/EntryPicker.js +15 -1
  282. package/dist/preview/react.js +3 -0
  283. package/dist/query.d.ts +26 -14
  284. package/dist/query.js +4 -0
  285. package/dist/types.d.ts +8 -5
  286. package/dist/ui/Stack.d.ts +4 -2
  287. package/docs/ai-setup.md +3 -3
  288. package/docs/cli.md +4 -2
  289. package/docs/components/combo-box.md +105 -16
  290. package/docs/components/date-field.md +1 -1
  291. package/docs/components/dialog.md +51 -0
  292. package/docs/components/form.md +67 -0
  293. package/docs/components/link.md +10 -0
  294. package/docs/components/multiple-select.md +9 -17
  295. package/docs/components/number-field.md +5 -1
  296. package/docs/components/select.md +9 -20
  297. package/docs/components/stack.md +42 -0
  298. package/docs/components/table.md +83 -0
  299. package/docs/components/text-field.md +9 -1
  300. package/docs/components/time-field.md +5 -1
  301. package/docs/components.md +39 -1
  302. package/docs/configuration.md +3 -1
  303. package/docs/custom-fields.md +135 -7
  304. package/docs/deploy/self-host.md +2 -0
  305. package/docs/deploy.md +7 -4
  306. package/docs/fields/image.md +0 -1
  307. package/docs/fields/list.md +19 -0
  308. package/docs/fields/object.md +5 -3
  309. package/docs/fields/rich-text.md +31 -0
  310. package/docs/index.md +8 -6
  311. package/docs/instant-publishing.md +23 -2
  312. package/docs/overviews.md +128 -4
  313. package/docs/query/filtering.md +2 -0
  314. package/docs/query/related.md +58 -9
  315. package/docs/query.md +52 -1
  316. package/docs/quickstart.md +5 -5
  317. package/docs/schema/document.md +2 -0
  318. package/docs/schema/type.md +3 -1
  319. package/docs/upgrading.md +100 -19
  320. package/llms-full.txt +1022 -125
  321. package/package.json +1 -1
  322. package/readme.md +2 -2
  323. package/dist/chunks/{chunk-4ZA6KZHS.js → chunk-6FQ5IMNA.js} +3 -3
package/dist/cli/bin.js CHANGED
@@ -220,7 +220,7 @@ var lib_default2 = (e, t2) => new o(e, t2);
220
220
  // package.json
221
221
  var package_default = {
222
222
  name: "alinea",
223
- version: "2.0.0-preview.13",
223
+ version: "2.0.0-preview.14",
224
224
  description: "Open source, Git-based headless CMS for Next.js",
225
225
  keywords: [
226
226
  "cms",
@@ -7,4 +7,8 @@ export type BuildInfo = {
7
7
  type: 'done';
8
8
  result: BuildResult;
9
9
  };
10
- export declare function buildEmitter(config: BuildOptions): Emitter<BuildInfo>;
10
+ export interface BuildEmitterOptions {
11
+ /** Rebuild on changes, otherwise build once and stop esbuild */
12
+ watch?: boolean;
13
+ }
14
+ export declare function buildEmitter(config: BuildOptions, { watch }?: BuildEmitterOptions): Emitter<BuildInfo>;
@@ -3,7 +3,7 @@ import "../../chunks/chunk-CQ52GEHY.js";
3
3
  // src/cli/build/BuildEmitter.ts
4
4
  import esbuild from "esbuild";
5
5
  import { createEmitter } from "../util/Emitter.js";
6
- function buildEmitter(config) {
6
+ function buildEmitter(config, { watch = true } = {}) {
7
7
  let context;
8
8
  let canceled = false;
9
9
  const results = createEmitter({
@@ -26,9 +26,14 @@ function buildEmitter(config) {
26
26
  }
27
27
  }
28
28
  ]
29
- }).then((ctx) => {
29
+ }).then(async (ctx) => {
30
30
  context = ctx;
31
- if (!canceled) ctx.watch();
31
+ if (canceled) return ctx.dispose();
32
+ if (watch) return ctx.watch();
33
+ await ctx.rebuild().catch(() => {
34
+ });
35
+ context = void 0;
36
+ await ctx.dispose();
32
37
  }, results.throw);
33
38
  return results;
34
39
  }
@@ -36,12 +36,15 @@ async function* compileConfig(ctx) {
36
36
  const { outDir, configLocation, cmd } = ctx;
37
37
  const config = buildConfig(ctx);
38
38
  const location = path.relative(process.cwd(), configLocation).replace(/\\/g, "/");
39
- const builds = buildEmitter({
40
- ...config,
41
- outdir: outDir,
42
- entryPoints: { config: configLocation },
43
- sourcemap: true
44
- });
39
+ const builds = buildEmitter(
40
+ {
41
+ ...config,
42
+ outdir: outDir,
43
+ entryPoints: { config: configLocation },
44
+ sourcemap: true
45
+ },
46
+ { watch: cmd === "dev" }
47
+ );
45
48
  const halt = (error) => {
46
49
  reportError(error);
47
50
  if (cmd === "dev") return;
@@ -51,6 +54,7 @@ async function* compileConfig(ctx) {
51
54
  if (type !== "done") continue;
52
55
  if (result.errors.length) {
53
56
  reportFatal(`Could not compile Alinea config file @ ${location}`);
57
+ if (cmd === "build") process.exit(1);
54
58
  continue;
55
59
  }
56
60
  try {
@@ -33,7 +33,10 @@ export declare class DevDB extends EntryStore {
33
33
  */
34
34
  reconfigure(options: Pick<DevDBOptions, 'config' | 'configFingerprint' | 'dashboardUrl'>): Promise<void>;
35
35
  sync(): Promise<string>;
36
- finalize(): Promise<number>;
36
+ /** Compact the database, rewriting it in full for a build. */
37
+ finalize(options?: {
38
+ rewrite?: boolean;
39
+ }): Promise<number>;
37
40
  fix(): Promise<void>;
38
41
  watchFiles(): Promise<WatchFiles>;
39
42
  isInMediaLocation(file: string): boolean;
@@ -18,6 +18,7 @@ import { slugify } from "alinea/core/util/Slugs";
18
18
  import { EntryDatabase } from "alinea/database/EntryDatabase";
19
19
  import { EntryStore } from "alinea/database/EntryStore";
20
20
  import { runtimeDatabase } from "alinea/database/driver/RuntimeDatabase";
21
+ import { remoteLocations } from "./MediaLocations.js";
21
22
  var DevDB = class _DevDB extends EntryStore {
22
23
  #options;
23
24
  /** The revision the persisted source file stats were recorded for. */
@@ -99,8 +100,9 @@ var DevDB = class _DevDB extends EntryStore {
99
100
  }
100
101
  return revision;
101
102
  }
102
- async finalize() {
103
- await this.database.compact();
103
+ /** Compact the database, rewriting it in full for a build. */
104
+ async finalize(options = {}) {
105
+ await this.database.compact(options);
104
106
  return (await fsp.stat(this.#options.databasePath)).size;
105
107
  }
106
108
  async fix() {
@@ -115,15 +117,21 @@ var DevDB = class _DevDB extends EntryStore {
115
117
  seeded: Entry.seeded
116
118
  }
117
119
  });
118
- const mutations = entries.filter((entry) => !entry.seeded).map(
119
- (entry) => ({
120
+ const local = new Map(
121
+ (await remoteLocations(this.#options.rootDir, this)).filter((file) => file.local !== void 0).map((file) => [`${file.id}:${file.locale}:${file.status}`, file.local])
122
+ );
123
+ const mutations = entries.filter((entry) => !entry.seeded).map((entry) => {
124
+ const location = local.get(
125
+ `${entry.id}:${entry.locale}:${entry.status}`
126
+ );
127
+ return {
120
128
  op: "update",
121
129
  id: entry.id,
122
130
  locale: entry.locale,
123
131
  status: entry.status,
124
- set: entry.data
125
- })
126
- );
132
+ set: location ? { ...entry.data, location } : entry.data
133
+ };
134
+ });
127
135
  if (!mutations.length) return;
128
136
  const planned = await this.request(mutations);
129
137
  const batch = sourceChanges(planned);
@@ -112,6 +112,7 @@ async function generateDashboard({ configLocation, rootDir, configDir }, cms, ha
112
112
  path.join(rootDir, staticFile),
113
113
  code`
114
114
  <!DOCTYPE html>
115
+ <html data-alinea-theme>
115
116
  <meta charset="utf-8" />
116
117
  <link rel="icon" href="data:," />
117
118
  <link href="${baseUrl}/entry.css?${buildId}" rel="stylesheet" />
@@ -0,0 +1,18 @@
1
+ import { type EntryStatus } from 'alinea/core/Entry';
2
+ import type { EntryStore } from 'alinea/database/EntryStore';
3
+ export interface RemoteLocation {
4
+ id: string;
5
+ locale: string | null;
6
+ status: EntryStatus;
7
+ workspace: string;
8
+ /** The content file of the media entry */
9
+ file: string;
10
+ location: string;
11
+ /** The location of the one file with the same name in the mediaDir */
12
+ local?: string;
13
+ }
14
+ /**
15
+ * Media entries whose location is a url. Only the 1.x dashboard wrote those
16
+ * (upload urls belong in previewUrl), they can't be served from the site.
17
+ */
18
+ export declare function remoteLocations(rootDir: string, db: EntryStore): Promise<Array<RemoteLocation>>;
@@ -0,0 +1,69 @@
1
+ import "../../chunks/chunk-CQ52GEHY.js";
2
+
3
+ // src/cli/generate/MediaLocations.ts
4
+ import * as fsp from "node:fs/promises";
5
+ import path from "node:path";
6
+ import { Config } from "alinea/core/Config";
7
+ import { Entry } from "alinea/core/Entry";
8
+ import { MediaLocation } from "alinea/core/media/MediaLocation";
9
+ import { MediaFile } from "alinea/core/media/MediaTypes";
10
+ import { basename, join } from "alinea/core/util/Paths";
11
+ async function remoteLocations(rootDir, db) {
12
+ const { config } = db;
13
+ const files = await db.find({
14
+ type: MediaFile,
15
+ status: "all",
16
+ select: {
17
+ id: Entry.id,
18
+ locale: Entry.locale,
19
+ status: Entry.versionStatus,
20
+ workspace: Entry.workspace,
21
+ filePath: Entry.filePath,
22
+ location: MediaFile.location
23
+ }
24
+ });
25
+ const remote = files.filter(
26
+ (file) => typeof file.location === "string" && /^https?:\/\//i.test(file.location)
27
+ );
28
+ const listings = /* @__PURE__ */ new Map();
29
+ const result = Array();
30
+ for (const file of remote) {
31
+ const mediaDir = MediaLocation.directory(config, file.workspace);
32
+ let listing = listings.get(mediaDir);
33
+ if (!listing)
34
+ listings.set(mediaDir, listing = listFiles(join(rootDir, mediaDir)));
35
+ const name = fileName(file.location);
36
+ const matches = (await listing).filter((path2) => basename(path2) === name);
37
+ result.push({
38
+ id: file.id,
39
+ locale: file.locale,
40
+ status: file.status,
41
+ workspace: file.workspace,
42
+ file: join(Config.contentDir(config), file.filePath),
43
+ location: file.location,
44
+ local: matches.length === 1 ? MediaLocation.entryLocation(
45
+ config,
46
+ file.workspace,
47
+ join(mediaDir, matches[0])
48
+ ) : void 0
49
+ });
50
+ }
51
+ return result;
52
+ }
53
+ function fileName(url) {
54
+ const { pathname } = new URL(url);
55
+ try {
56
+ return decodeURIComponent(basename(pathname));
57
+ } catch {
58
+ return basename(pathname);
59
+ }
60
+ }
61
+ async function listFiles(dir) {
62
+ const entries = await fsp.readdir(dir, { recursive: true, withFileTypes: true }).catch(() => []);
63
+ return entries.filter((entry) => entry.isFile()).map(
64
+ (entry) => path.relative(dir, path.join(entry.parentPath, entry.name)).split(path.sep).join("/")
65
+ );
66
+ }
67
+ export {
68
+ remoteLocations
69
+ };
@@ -285,6 +285,7 @@ function createLocalServer({
285
285
  const path2 = url.pathname.endsWith("/") ? url.pathname : `${url.pathname}/`;
286
286
  return new Response(
287
287
  `<!DOCTYPE html>
288
+ <html data-alinea-theme>
288
289
  <meta charset="utf-8" />
289
290
  <base href="${path2}" />
290
291
  <link rel="icon" href="data:," />
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "../../../chunks/chunk-3QFSGTGF.js";
3
+ } from "../../../chunks/chunk-SCV3TEXM.js";
4
4
  import "../../../chunks/chunk-CQ52GEHY.js";
5
5
 
6
6
  // src/cli/serve/mcp/DevMcp.ts
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "../chunks/chunk-3QFSGTGF.js";
3
+ } from "../chunks/chunk-SCV3TEXM.js";
4
4
  import "../chunks/chunk-CQ52GEHY.js";
5
5
 
6
6
  // src/cloud/CloudRemote.ts
@@ -55,7 +55,7 @@ var CloudRemote = class extends OAuth2 {
55
55
  const ctx = this.#context;
56
56
  if (!validApiKey(ctx.apiKey)) return;
57
57
  return parseOutcome(
58
- fetch(
58
+ read(
59
59
  cloudConfig.tree,
60
60
  json({
61
61
  method: "POST",
@@ -72,7 +72,7 @@ var CloudRemote = class extends OAuth2 {
72
72
  }
73
73
  async *getBlobs(shas, options = {}) {
74
74
  const ctx = this.#context;
75
- const response = await fetch(cloudConfig.blobs, {
75
+ const response = await read(cloudConfig.blobs, {
76
76
  method: "POST",
77
77
  body: JSON.stringify({ shas }),
78
78
  signal: options.signal,
@@ -223,7 +223,7 @@ var CloudRemote = class extends OAuth2 {
223
223
  if (!validApiKey(ctx.apiKey)) return;
224
224
  const { entryId, locale } = parseDraftKey(draftKey);
225
225
  const data = await parseOutcome(
226
- fetch(`${cloudConfig.drafts}/${draftKey}`, json({ headers: bearer(ctx) }))
226
+ read(`${cloudConfig.drafts}/${draftKey}`, json({ headers: bearer(ctx) }))
227
227
  );
228
228
  return data?.update ? {
229
229
  entryId,
@@ -252,7 +252,7 @@ var CloudRemote = class extends OAuth2 {
252
252
  revisions(file) {
253
253
  const ctx = this.#context;
254
254
  return parseOutcome(
255
- fetch(
255
+ read(
256
256
  `${cloudConfig.history}?${new URLSearchParams({ file })}`,
257
257
  json({ headers: bearer(ctx) })
258
258
  )
@@ -261,7 +261,7 @@ var CloudRemote = class extends OAuth2 {
261
261
  revisionData(file, revisionId) {
262
262
  const ctx = this.#context;
263
263
  return parseOutcome(
264
- fetch(
264
+ read(
265
265
  `${cloudConfig.history}?${new URLSearchParams({ file, ref: revisionId })}`,
266
266
  json({ headers: bearer(ctx) })
267
267
  )
@@ -273,7 +273,7 @@ var CloudRemote = class extends OAuth2 {
273
273
  listUsers() {
274
274
  const ctx = this.#context;
275
275
  return parseOutcome(
276
- fetch(cloudConfig.users, json({ headers: bearer(ctx) }))
276
+ read(cloudConfig.users, json({ headers: bearer(ctx) }))
277
277
  );
278
278
  }
279
279
  createUser(user) {
@@ -315,6 +315,20 @@ var CloudRemote = class extends OAuth2 {
315
315
  );
316
316
  }
317
317
  };
318
+ var readTimeout = 3e4;
319
+ async function read(url, init) {
320
+ const controller = new AbortController();
321
+ const timer = setTimeout(() => {
322
+ const message = `No response from ${url} within ${readTimeout / 1e3}s`;
323
+ controller.abort(new HttpError(504, message));
324
+ }, readTimeout);
325
+ const signal = init.signal ? AbortSignal.any([init.signal, controller.signal]) : controller.signal;
326
+ try {
327
+ return await fetch(url, { ...init, signal });
328
+ } finally {
329
+ clearTimeout(timer);
330
+ }
331
+ }
318
332
  function validApiKey(apiKey) {
319
333
  return Boolean(apiKey?.startsWith("alineapk"));
320
334
  }
package/dist/cms.d.ts CHANGED
@@ -8,12 +8,14 @@
8
8
  * @module
9
9
  */
10
10
  export { useField, useFieldError, useFieldKey, useFieldOptions, useFieldSetter, useFieldValue, useSiblingFieldValue } from './dashboard/cms/hooks.js';
11
- export { type DashboardLocation, useEntry, useGraph, useLocale, useNavigate, usePolicy, usePreviewMetadata, useUser } from './dashboard/cms/hooks.js';
11
+ export { useEntry, useGraph, useLocale, useNavigate, usePolicy, usePreviewMetadata, useUser } from './dashboard/cms/hooks.js';
12
+ export type { DashboardEntry, EntryActionProps } from './core/DashboardEntry.js';
13
+ export type { DashboardLocation } from './dashboard/Href.js';
12
14
  export type { Policy } from './core/Role.js';
13
15
  export type { PreviewMetadata } from './core/Preview.js';
14
16
  export type { User } from './core/User.js';
15
17
  export { EditField, type EditFieldProps, EditFields, type EditFieldsProps } from './dashboard/app/EntryFields.js';
16
18
  export { FieldChrome, type FieldChromeProps } from './dashboard/cms/FieldChrome.js';
17
19
  export { EntryTable, type EntryTableProps } from './dashboard/cms/EntryTable.js';
18
- export type { OverviewActionProps, OverviewCellProps, OverviewEntry } from './core/Overview.js';
20
+ export type { OverviewActionProps, OverviewCellProps, OverviewEntry, OverviewHeaderProps } from './core/Overview.js';
19
21
  export type { FieldViewProps, RootViewProps, SectionViewProps, TypeViewProps } from './dashboard/cms/ViewProps.js';
@@ -5,12 +5,12 @@ import "../chunks/chunk-CQ52GEHY.js";
5
5
 
6
6
  // src/components/Alert.module.css
7
7
  var Alert_default = {
8
+ "AlertActions": "alinea-AlertActions",
8
9
  "Alert": "alinea-Alert",
9
10
  "AlertTitle": "alinea-AlertTitle",
10
- "AlertDescription": "alinea-AlertDescription",
11
11
  "Alert-icon": "alinea-Alert-icon",
12
12
  "AlertIcon": "alinea-Alert-icon",
13
- "AlertActions": "alinea-AlertActions"
13
+ "AlertDescription": "alinea-AlertDescription"
14
14
  };
15
15
 
16
16
  // src/components/Alert.tsx
@@ -5,8 +5,8 @@ import "../chunks/chunk-CQ52GEHY.js";
5
5
 
6
6
  // src/components/AppShell.module.css
7
7
  var AppShell_default = {
8
- "AppShellContent": "alinea-AppShellContent",
9
- "AppShell": "alinea-AppShell"
8
+ "AppShell": "alinea-AppShell",
9
+ "AppShellContent": "alinea-AppShellContent"
10
10
  };
11
11
 
12
12
  // src/components/AppShell.tsx
@@ -0,0 +1,52 @@
1
+ import type { Key, Selection, SortDescriptor } from './types.js';
2
+ export interface AsyncListLoadOptions<C> {
3
+ /** Aborted when a newer load replaces this one */
4
+ signal: AbortSignal;
5
+ /** The cursor returned by the previous page, set when loading more */
6
+ cursor?: C;
7
+ filterText: string;
8
+ sort?: SortDescriptor;
9
+ }
10
+ export interface AsyncListPage<T, C> {
11
+ items: Iterable<T>;
12
+ /** Where the next page starts, leave out when there are no more items */
13
+ cursor?: C | null;
14
+ }
15
+ export interface AsyncListOptions<T, C> {
16
+ load(options: AsyncListLoadOptions<C>): Promise<AsyncListPage<T, C>>;
17
+ initialSort?: SortDescriptor;
18
+ initialFilterText?: string;
19
+ initialSelectedKeys?: Iterable<Key>;
20
+ /** The key of an item, defaults to its `id` or `key` property */
21
+ getKey?: (item: T) => Key;
22
+ }
23
+ /**
24
+ * Items loaded page by page. Its fields plug into Table (`items`,
25
+ * `sortDescriptor`/`onSortChange`, `loading`, `onLoadMore`, `selectedKeys`/
26
+ * `onSelectionChange`) and ComboBox (`inputValue`/`onInputValueChange`,
27
+ * `loading`).
28
+ */
29
+ export interface AsyncList<T> {
30
+ items: Array<T>;
31
+ /** True while loading the first page, the next page, sorting or filtering */
32
+ loading: boolean;
33
+ /** The error the last load failed with */
34
+ error?: Error;
35
+ /** Whether the last page returned a cursor */
36
+ hasMore: boolean;
37
+ loadMore(): void;
38
+ reload(): void;
39
+ /** Replaces an item, eg. after saving it, without loading the list again */
40
+ update(key: Key, item: T | ((previous: T) => T)): void;
41
+ remove(...keys: Array<Key>): void;
42
+ prepend(...items: Array<T>): void;
43
+ append(...items: Array<T>): void;
44
+ sortDescriptor?: SortDescriptor;
45
+ sort(descriptor: SortDescriptor): void;
46
+ filterText: string;
47
+ setFilterText(text: string): void;
48
+ selectedKeys: Selection;
49
+ setSelectedKeys(keys: Selection): void;
50
+ }
51
+ /** Loads a list of items, with sorting, filtering and paging */
52
+ export declare function useAsyncList<T, C = string>({ load, initialSort, initialFilterText, initialSelectedKeys, getKey }: AsyncListOptions<T, C>): AsyncList<T>;
@@ -0,0 +1,69 @@
1
+ import {
2
+ $c73d3f3d5ec90946$export$bc3384a35de93d66
3
+ } from "../chunks/chunk-7DDPSWRY.js";
4
+ import "../chunks/chunk-NUFRM6SI.js";
5
+ import "../chunks/chunk-PMGIIYDD.js";
6
+ import "../chunks/chunk-RKDPDEF7.js";
7
+ import "../chunks/chunk-PSSMQKAH.js";
8
+ import "../chunks/chunk-CQ52GEHY.js";
9
+
10
+ // src/components/AsyncList.ts
11
+ import { useState } from "react";
12
+ function toAria(sort) {
13
+ if (!sort) return void 0;
14
+ const direction = sort.direction === "asc" ? "ascending" : "descending";
15
+ return { column: sort.column, direction };
16
+ }
17
+ function fromAria(sort) {
18
+ if (!sort) return void 0;
19
+ return {
20
+ column: sort.column,
21
+ direction: sort.direction === "ascending" ? "asc" : "desc"
22
+ };
23
+ }
24
+ function useAsyncList({
25
+ load,
26
+ initialSort,
27
+ initialFilterText,
28
+ initialSelectedKeys,
29
+ getKey
30
+ }) {
31
+ const [hasMore, setHasMore] = useState(false);
32
+ const list = $c73d3f3d5ec90946$export$bc3384a35de93d66({
33
+ initialSortDescriptor: toAria(initialSort),
34
+ initialFilterText,
35
+ initialSelectedKeys,
36
+ getKey,
37
+ async load({ signal, cursor, filterText = "", sortDescriptor }) {
38
+ const page = await load({
39
+ signal,
40
+ cursor,
41
+ filterText,
42
+ sort: fromAria(sortDescriptor)
43
+ });
44
+ if (!signal.aborted) setHasMore(page.cursor != null);
45
+ return { items: page.items, cursor: page.cursor ?? void 0 };
46
+ }
47
+ });
48
+ return {
49
+ items: list.items,
50
+ loading: list.isLoading,
51
+ error: list.error,
52
+ hasMore,
53
+ loadMore: list.loadMore,
54
+ reload: list.reload,
55
+ update: list.update,
56
+ remove: list.remove,
57
+ prepend: list.prepend,
58
+ append: list.append,
59
+ sortDescriptor: fromAria(list.sortDescriptor),
60
+ sort: (descriptor) => list.sort(toAria(descriptor)),
61
+ filterText: list.filterText,
62
+ setFilterText: list.setFilterText,
63
+ selectedKeys: list.selectedKeys,
64
+ setSelectedKeys: (keys) => list.setSelectedKeys(keys === "all" ? keys : new Set(keys))
65
+ };
66
+ }
67
+ export {
68
+ useAsyncList
69
+ };
@@ -9,15 +9,15 @@ import { IcRoundChevronRight, IcRoundMoreHoriz } from "alinea/dashboard/icons";
9
9
  // src/components/Breadcrumbs.module.css
10
10
  var Breadcrumbs_default = {
11
11
  "BreadcrumbLink": "alinea-BreadcrumbLink",
12
- "BreadcrumbPage": "alinea-BreadcrumbPage",
13
- "BreadcrumbSeparator-icon": "alinea-BreadcrumbSeparator-icon",
14
- "BreadcrumbSeparatorIcon": "alinea-BreadcrumbSeparator-icon",
12
+ "BreadcrumbEllipsis-icon": "alinea-BreadcrumbEllipsis-icon",
13
+ "BreadcrumbEllipsisIcon": "alinea-BreadcrumbEllipsis-icon",
15
14
  "BreadcrumbList": "alinea-BreadcrumbList",
15
+ "BreadcrumbItem": "alinea-BreadcrumbItem",
16
16
  "BreadcrumbEllipsis": "alinea-BreadcrumbEllipsis",
17
17
  "BreadcrumbSeparator": "alinea-BreadcrumbSeparator",
18
- "BreadcrumbItem": "alinea-BreadcrumbItem",
19
- "BreadcrumbEllipsis-icon": "alinea-BreadcrumbEllipsis-icon",
20
- "BreadcrumbEllipsisIcon": "alinea-BreadcrumbEllipsis-icon"
18
+ "BreadcrumbPage": "alinea-BreadcrumbPage",
19
+ "BreadcrumbSeparator-icon": "alinea-BreadcrumbSeparator-icon",
20
+ "BreadcrumbSeparatorIcon": "alinea-BreadcrumbSeparator-icon"
21
21
  };
22
22
 
23
23
  // src/components/Breadcrumbs.tsx
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  $7705c033048f6da7$export$353f5b6fc5456de1
3
- } from "../chunks/chunk-QHHMKJUO.js";
3
+ } from "../chunks/chunk-7DDPSWRY.js";
4
4
  import "../chunks/chunk-NUFRM6SI.js";
5
- import "../chunks/chunk-HOETF6HN.js";
5
+ import "../chunks/chunk-PMGIIYDD.js";
6
6
  import "../chunks/chunk-RKDPDEF7.js";
7
7
  import "../chunks/chunk-PSSMQKAH.js";
8
8
  import {
@@ -18,9 +18,9 @@ import {
18
18
 
19
19
  // src/components/Button.module.css
20
20
  var Button_default = {
21
+ "Button": "alinea-Button",
21
22
  "Button-icon": "alinea-Button-icon",
22
- "ButtonIcon": "alinea-Button-icon",
23
- "Button": "alinea-Button"
23
+ "ButtonIcon": "alinea-Button-icon"
24
24
  };
25
25
 
26
26
  // src/components/Button.tsx
@@ -9,11 +9,11 @@ import {
9
9
  $6f9a1820b787aac7$export$e11f8ba65d857bff,
10
10
  $6f9a1820b787aac7$export$e1aef45b828286de,
11
11
  $7705c033048f6da7$export$353f5b6fc5456de1
12
- } from "../chunks/chunk-QHHMKJUO.js";
12
+ } from "../chunks/chunk-7DDPSWRY.js";
13
13
  import "../chunks/chunk-NUFRM6SI.js";
14
14
  import {
15
15
  $2eb8e6d23f3d0cb0$export$43bb16f9c6d9e3f7
16
- } from "../chunks/chunk-HOETF6HN.js";
16
+ } from "../chunks/chunk-PMGIIYDD.js";
17
17
  import "../chunks/chunk-RKDPDEF7.js";
18
18
  import {
19
19
  $ad063034c8620db8$export$2061056d06d7cdf7
@@ -32,33 +32,33 @@ import { Locale } from "./internal/Locale.js";
32
32
 
33
33
  // src/components/Calendar.module.css
34
34
  var Calendar_default = {
35
+ "is-weekStart": "alinea-is-weekStart",
36
+ "isWeekStart": "alinea-is-weekStart",
37
+ "is-weekEnd": "alinea-is-weekEnd",
38
+ "isWeekEnd": "alinea-is-weekEnd",
39
+ "Calendar-nav": "alinea-Calendar-nav",
40
+ "CalendarNav": "alinea-Calendar-nav",
35
41
  "Calendar-day": "alinea-Calendar-day",
36
42
  "CalendarDay": "alinea-Calendar-day",
37
- "Calendar-header": "alinea-Calendar-header",
38
- "CalendarHeader": "alinea-Calendar-header",
39
- "Calendar-heading": "alinea-Calendar-heading",
40
- "CalendarHeading": "alinea-Calendar-heading",
43
+ "is-rangeEnd": "alinea-is-rangeEnd",
44
+ "isRangeEnd": "alinea-is-rangeEnd",
41
45
  "is-today": "alinea-is-today",
42
46
  "isToday": "alinea-is-today",
43
- "is-weekStart": "alinea-is-weekStart",
44
- "isWeekStart": "alinea-is-weekStart",
45
47
  "Calendar": "alinea-Calendar",
46
- "is-weekEnd": "alinea-is-weekEnd",
47
- "isWeekEnd": "alinea-is-weekEnd",
48
+ "Calendar-heading": "alinea-Calendar-heading",
49
+ "CalendarHeading": "alinea-Calendar-heading",
48
50
  "is-selected": "alinea-is-selected",
49
51
  "isSelected": "alinea-is-selected",
50
- "is-rangeEnd": "alinea-is-rangeEnd",
51
- "isRangeEnd": "alinea-is-rangeEnd",
52
52
  "Calendar-grid": "alinea-Calendar-grid",
53
53
  "CalendarGrid": "alinea-Calendar-grid",
54
- "is-unavailable": "alinea-is-unavailable",
55
- "isUnavailable": "alinea-is-unavailable",
56
- "Calendar-weekday": "alinea-Calendar-weekday",
57
- "CalendarWeekday": "alinea-Calendar-weekday",
58
54
  "is-rangeStart": "alinea-is-rangeStart",
59
55
  "isRangeStart": "alinea-is-rangeStart",
60
- "Calendar-nav": "alinea-Calendar-nav",
61
- "CalendarNav": "alinea-Calendar-nav"
56
+ "Calendar-header": "alinea-Calendar-header",
57
+ "CalendarHeader": "alinea-Calendar-header",
58
+ "Calendar-weekday": "alinea-Calendar-weekday",
59
+ "CalendarWeekday": "alinea-Calendar-weekday",
60
+ "is-unavailable": "alinea-is-unavailable",
61
+ "isUnavailable": "alinea-is-unavailable"
62
62
  };
63
63
 
64
64
  // src/components/Calendar.tsx
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  $ed8ccb2e23e76301$export$48513f6b9f8ce62d,
3
3
  $efe09c6d1c304b50$export$9afb8bc826b033ea
4
- } from "../chunks/chunk-QHHMKJUO.js";
4
+ } from "../chunks/chunk-7DDPSWRY.js";
5
5
  import "../chunks/chunk-NUFRM6SI.js";
6
- import "../chunks/chunk-HOETF6HN.js";
6
+ import "../chunks/chunk-PMGIIYDD.js";
7
7
  import "../chunks/chunk-RKDPDEF7.js";
8
8
  import "../chunks/chunk-PSSMQKAH.js";
9
9
  import {
@@ -16,17 +16,17 @@ import { useId } from "react";
16
16
 
17
17
  // src/components/Checkbox.module.css
18
18
  var Checkbox_default = {
19
- "Checkbox-content": "alinea-Checkbox-content",
20
- "CheckboxContent": "alinea-Checkbox-content",
21
- "Checkbox-label": "alinea-Checkbox-label",
22
- "CheckboxLabel": "alinea-Checkbox-label",
23
- "Checkbox-mark": "alinea-Checkbox-mark",
24
- "CheckboxMark": "alinea-Checkbox-mark",
19
+ "is-focusVisible": "alinea-is-focusVisible",
20
+ "isFocusVisible": "alinea-is-focusVisible",
25
21
  "Checkbox": "alinea-Checkbox",
26
22
  "Checkbox-box": "alinea-Checkbox-box",
27
23
  "CheckboxBox": "alinea-Checkbox-box",
28
- "is-focusVisible": "alinea-is-focusVisible",
29
- "isFocusVisible": "alinea-is-focusVisible"
24
+ "Checkbox-mark": "alinea-Checkbox-mark",
25
+ "CheckboxMark": "alinea-Checkbox-mark",
26
+ "Checkbox-content": "alinea-Checkbox-content",
27
+ "CheckboxContent": "alinea-Checkbox-content",
28
+ "Checkbox-label": "alinea-Checkbox-label",
29
+ "CheckboxLabel": "alinea-Checkbox-label"
30
30
  };
31
31
 
32
32
  // src/components/Checkbox.tsx