rimecms 1.0.0 → 1.1.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 (174) hide show
  1. package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +9 -9
  2. package/dist/adapter-sqlite/generate-schema/templates.server.js +9 -9
  3. package/dist/adapter-sqlite/paths.server.js +24 -15
  4. package/dist/adapter-sqlite/rows.server.d.ts +1 -1
  5. package/dist/core/adapter.d.ts +8 -4
  6. package/dist/core/boot.server.d.ts +2 -2
  7. package/dist/core/config/context.server.d.ts +2 -2
  8. package/dist/core/dev/codegen/routes/common.server.d.ts +2 -0
  9. package/dist/core/dev/codegen/routes/common.server.js +7 -3
  10. package/dist/core/dev/codegen/routes/util.server.d.ts +2 -1
  11. package/dist/core/dev/codegen/routes/util.server.js +4 -1
  12. package/dist/core/dev/config-memo.server.js +4 -0
  13. package/dist/core/i18n/en/fields.d.ts +1 -1
  14. package/dist/core/i18n/en/fields.js +1 -1
  15. package/dist/core/i18n/fr/fields.d.ts +1 -1
  16. package/dist/core/i18n/fr/fields.js +1 -1
  17. package/dist/core/prototype/collection/operations/duplicate.js +1 -1
  18. package/dist/core/prototype/collection/thumbnail/hooks/set-document-thumbnail.server.js +1 -1
  19. package/dist/core/prototype/shared/title/hooks/set-document-title.server.js +1 -1
  20. package/dist/core/prototype/shared/url/addresses.server.d.ts +10 -0
  21. package/dist/core/prototype/shared/url/addresses.server.js +17 -17
  22. package/dist/core/prototype/shared/url/hooks/detach-paths.server.d.ts +3 -2
  23. package/dist/core/prototype/shared/url/hooks/detach-paths.server.js +9 -8
  24. package/dist/core/prototype/shared/url/hooks/sync-paths.server.d.ts +3 -2
  25. package/dist/core/prototype/shared/url/hooks/sync-paths.server.js +5 -4
  26. package/dist/fields/blocks/component/AddBlockButton.svelte +1 -1
  27. package/dist/fields/blocks/component/Block.svelte +4 -5
  28. package/dist/fields/blocks/component/Blocks.svelte +17 -13
  29. package/dist/fields/blocks/component/focus/BlocksFocus.svelte +53 -65
  30. package/dist/fields/blocks/component/focus/DefaultRender.svelte +108 -0
  31. package/dist/fields/blocks/component/focus/{RenderPlaceholder.svelte.d.ts → DefaultRender.svelte.d.ts} +3 -3
  32. package/dist/fields/blocks/component/focus/Inspector.svelte +160 -0
  33. package/dist/fields/blocks/component/focus/Inspector.svelte.d.ts +7 -0
  34. package/dist/fields/blocks/component/focus/Layers.svelte +16 -3
  35. package/dist/fields/blocks/component/focus/LayersList.svelte +28 -11
  36. package/dist/fields/blocks/component/focus/LayersList.svelte.d.ts +2 -0
  37. package/dist/fields/blocks/component/focus/Palette.svelte +3 -3
  38. package/dist/fields/blocks/component/focus/Renders.svelte +66 -15
  39. package/dist/fields/blocks/component/focus/Renders.svelte.d.ts +5 -1
  40. package/dist/fields/blocks/component/focus/StagePlaceholder.svelte +1 -4
  41. package/dist/fields/blocks/component/focus/focus.svelte.d.ts +26 -12
  42. package/dist/fields/blocks/component/focus/focus.svelte.js +114 -57
  43. package/dist/fields/blocks/component/picker/BlockTile.svelte +3 -5
  44. package/dist/fields/combobox/component/ComboBox.svelte +1 -1
  45. package/dist/fields/combobox/component/combobox.css +1 -1
  46. package/dist/fields/date/component/Date.svelte +1 -1
  47. package/dist/fields/group/component/Group.svelte +4 -4
  48. package/dist/fields/link/component/Link.svelte +1 -1
  49. package/dist/fields/link/component/RessourceInput.svelte +2 -2
  50. package/dist/fields/link/index.d.ts +1 -1
  51. package/dist/fields/number/component/Number.svelte +1 -1
  52. package/dist/fields/relation/component/Cell.svelte +3 -1
  53. package/dist/fields/relation/component/RelationInline.svelte +51 -20
  54. package/dist/fields/relation/component/default/Default.svelte +3 -3
  55. package/dist/fields/relation/component/upload/Browse.svelte +2 -2
  56. package/dist/fields/relation/component/upload/Upload.svelte +2 -2
  57. package/dist/fields/relation/index.d.ts +1 -41
  58. package/dist/fields/relation/index.js +0 -67
  59. package/dist/fields/relation/util.d.ts +69 -0
  60. package/dist/fields/relation/util.js +103 -0
  61. package/dist/fields/rich-text/client.d.ts +2 -5
  62. package/dist/fields/rich-text/client.js +1 -3
  63. package/dist/fields/rich-text/component/Cell.svelte +1 -1
  64. package/dist/fields/rich-text/component/bubble-menu/bubble-menu.css +1 -1
  65. package/dist/fields/rich-text/component/bubble-menu/node-selector/node-selector.css +1 -1
  66. package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +2 -2
  67. package/dist/fields/rich-text/core/features/resource/resource-extension.js +3 -3
  68. package/dist/fields/rich-text/core/features/resource/resource.svelte +2 -2
  69. package/dist/fields/rich-text/core/features/upload/upload-extension.js +3 -4
  70. package/dist/fields/rich-text/core/features/upload/upload.svelte +2 -2
  71. package/dist/fields/rich-text/index.d.ts +0 -17
  72. package/dist/fields/rich-text/index.js +0 -44
  73. package/dist/fields/rich-text/json.d.ts +18 -0
  74. package/dist/fields/rich-text/json.js +44 -0
  75. package/dist/fields/select/component/Select.svelte +2 -2
  76. package/dist/fields/text/component/TextInline.svelte +113 -0
  77. package/dist/fields/text/component/TextInline.svelte.d.ts +14 -0
  78. package/dist/fields/textarea/component/TextArea.svelte +1 -1
  79. package/dist/fields/tree/component/TreeBlock.svelte +4 -4
  80. package/dist/index.d.ts +2 -9
  81. package/dist/index.js +3 -8
  82. package/dist/{panel/components/sections/live → live}/Consumer.svelte +2 -2
  83. package/dist/{panel/components/sections/live → live}/Consumer.svelte.d.ts +1 -1
  84. package/dist/{panel/components/sections/live → live}/LiveEdit.svelte +2 -2
  85. package/dist/{panel/components/sections/live → live}/Provider.svelte +1 -1
  86. package/dist/{panel/context/live.svelte.d.ts → live/context.svelte.d.ts} +1 -1
  87. package/dist/{panel/context/live.svelte.js → live/context.svelte.js} +3 -3
  88. package/dist/panel/components/fields/Error.svelte +1 -1
  89. package/dist/panel/components/fields/FieldsPreview.svelte +1 -1
  90. package/dist/panel/components/fields/FieldsPreviewTrigger.svelte +1 -1
  91. package/dist/panel/components/fields/Hint.svelte +1 -1
  92. package/dist/panel/components/fields/setting.css +6 -6
  93. package/dist/panel/components/sections/auth/AuthForm.svelte +2 -2
  94. package/dist/panel/components/sections/collection/Avatar.svelte +1 -1
  95. package/dist/panel/components/sections/collection/bulk-upload/FileDrop.svelte +1 -1
  96. package/dist/panel/components/sections/collection/bulk-upload/PageDrop.svelte +3 -3
  97. package/dist/panel/components/sections/collection/bulk-upload/UploadProgress.svelte +1 -1
  98. package/dist/panel/components/sections/collection/folder/Folder.svelte +1 -1
  99. package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +2 -2
  100. package/dist/panel/components/sections/collection/grid/grid-item/GridItem.svelte +1 -1
  101. package/dist/panel/components/sections/collection/header/DisplayMode.svelte +1 -2
  102. package/dist/panel/components/sections/collection/list/CollectionList.svelte +2 -2
  103. package/dist/panel/components/sections/collection/list/header/Header.svelte +1 -1
  104. package/dist/panel/components/sections/collection/list/row/Row.svelte +1 -1
  105. package/dist/panel/components/sections/collection/tree/CollectionTree.svelte +1 -1
  106. package/dist/panel/components/sections/collection/tree/CollectionTreeNode.svelte +1 -1
  107. package/dist/panel/components/sections/collection/upload-thumb-cell/UploadThumbCell.svelte +1 -1
  108. package/dist/panel/components/sections/commands/CommandButton.svelte +1 -1
  109. package/dist/panel/components/sections/document/AuthAPIKeyDialog.svelte +1 -1
  110. package/dist/panel/components/sections/document/AuthFooter.svelte +2 -2
  111. package/dist/panel/components/sections/document/AutoSaveBanner.svelte +2 -2
  112. package/dist/panel/components/sections/document/ButtonStatus.svelte +1 -1
  113. package/dist/panel/components/sections/document/ChangeSlugDialog.svelte +1 -1
  114. package/dist/panel/components/sections/document/DocumentChildren.svelte +2 -2
  115. package/dist/panel/components/sections/document/upload-header/UploadHeader.svelte +2 -2
  116. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte +1 -1
  117. package/dist/panel/components/sections/document/upload-header/drop-zone/DropZone.svelte.d.ts +1 -1
  118. package/dist/panel/components/sections/live/LiveFloatingUI.svelte +2 -2
  119. package/dist/panel/components/ui/breadcrumb/BreadCrumb.svelte +1 -1
  120. package/dist/panel/components/ui/button/button.svelte +3 -4
  121. package/dist/panel/components/ui/calendar/calendar.svelte.d.ts +1 -1
  122. package/dist/panel/components/ui/card/card.svelte +2 -2
  123. package/dist/panel/components/ui/card-document/card-document.svelte +2 -2
  124. package/dist/panel/components/ui/card-resource/card-resource.svelte +2 -2
  125. package/dist/panel/components/ui/checkbox/checkbox.svelte.d.ts +1 -1
  126. package/dist/panel/components/ui/command/command-input.svelte +1 -1
  127. package/dist/panel/components/ui/context-menu/context-menu.css +1 -1
  128. package/dist/panel/components/ui/dialog/dialog-content.css +1 -1
  129. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +1 -1
  130. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +1 -1
  131. package/dist/panel/components/ui/dropdown-menu/dropdown-menu-content.css +1 -1
  132. package/dist/panel/components/ui/input/input.svelte +1 -1
  133. package/dist/panel/components/ui/nav/Nav.svelte +2 -3
  134. package/dist/panel/components/ui/nav/NavGroup.svelte +1 -1
  135. package/dist/panel/components/ui/nav/NavItemButton.svelte +1 -1
  136. package/dist/panel/components/ui/nav/UserButton.svelte +1 -1
  137. package/dist/panel/components/ui/page-header/PageHeader.svelte +1 -1
  138. package/dist/panel/components/ui/popover/popover-content.css +1 -1
  139. package/dist/panel/components/ui/radio-row-group/radio-row-group.css +0 -1
  140. package/dist/panel/components/ui/sheet/sheet.css +1 -1
  141. package/dist/panel/components/ui/sonner/sonner.css +1 -1
  142. package/dist/panel/components/ui/switch/switch.css +0 -2
  143. package/dist/panel/components/ui/switch/switch.svelte.d.ts +1 -1
  144. package/dist/panel/components/ui/tabs/tabs.css +2 -1
  145. package/dist/panel/components/ui/tag/tag.svelte +1 -1
  146. package/dist/panel/components/ui/tree/tree-rows.css +3 -3
  147. package/dist/panel/context/collection.svelte.d.ts +2 -2
  148. package/dist/panel/context/config.svelte.d.ts +2 -2
  149. package/dist/panel/context/documentForm.svelte.js +1 -1
  150. package/dist/panel/index.d.ts +3 -5
  151. package/dist/panel/index.js +4 -6
  152. package/dist/panel/pages/auth/forgot-password/ForgotPassword.svelte +1 -1
  153. package/dist/panel/pages/dashboard/Dashboard.svelte +1 -1
  154. package/dist/panel/pages/dashboard/DashboardCard.svelte +2 -2
  155. package/dist/panel/pages/dashboard/DashboardCollection.svelte +1 -1
  156. package/dist/panel/pages/dashboard/DashboardRow.svelte +1 -1
  157. package/dist/panel/public.d.ts +4 -0
  158. package/dist/panel/public.js +6 -0
  159. package/dist/panel/style/index.css +13 -37
  160. package/dist/panel/style/mixins/index.css +1 -1
  161. package/dist/panel/style/palette.css +3 -3
  162. package/dist/panel/style/scheme.css +10 -34
  163. package/dist/public.d.ts +13 -0
  164. package/dist/public.js +12 -0
  165. package/package.json +12 -6
  166. package/dist/fields/blocks/component/focus/RenderPlaceholder.svelte +0 -77
  167. package/dist/fields/blocks/component/focus/Stage.svelte +0 -190
  168. package/dist/fields/blocks/component/focus/Stage.svelte.d.ts +0 -8
  169. package/dist/fields/relation/client.d.ts +0 -28
  170. package/dist/fields/relation/client.js +0 -37
  171. /package/dist/{panel/util → fields/relation}/populate.d.ts +0 -0
  172. /package/dist/{panel/util → fields/relation}/populate.js +0 -0
  173. /package/dist/{panel/components/sections/live → live}/LiveEdit.svelte.d.ts +0 -0
  174. /package/dist/{panel/components/sections/live → live}/Provider.svelte.d.ts +0 -0
@@ -524,9 +524,9 @@ video {
524
524
  --rz-gray-14: oklch(0.865 var(--rz-gray-chroma) var(--rz-gray-hue));
525
525
  --rz-gray-15: oklch(0.905 var(--rz-gray-chroma) var(--rz-gray-hue));
526
526
  --rz-gray-16: oklch(0.94 var(--rz-gray-chroma) var(--rz-gray-hue));
527
- --rz-gray-17: oklch(0.965 var(--rz-gray-chroma) var(--rz-gray-hue));
528
- --rz-gray-18: oklch(0.982 var(--rz-gray-chroma) var(--rz-gray-hue));
529
- --rz-gray-19: oklch(0.996 var(--rz-gray-chroma) var(--rz-gray-hue));
527
+ --rz-gray-17: oklch(0.968 var(--rz-gray-chroma) var(--rz-gray-hue));
528
+ --rz-gray-18: oklch(0.986 var(--rz-gray-chroma) var(--rz-gray-hue));
529
+ --rz-gray-19: oklch(0.992 var(--rz-gray-chroma) var(--rz-gray-hue));
530
530
 
531
531
  --rz-accent-hue: 268;
532
532
  --rz-accent-chroma: 0.19;
@@ -549,16 +549,16 @@ video {
549
549
  color-scheme: light dark;
550
550
 
551
551
  /* levels */
552
- --rz-bg-base: var(--rz-gray-17);
553
- --rz-bg-page: var(--rz-gray-19);
554
- --rz-bg-raised: var(--rz-gray-19);
555
- --rz-bg-float: var(--rz-gray-19);
556
- --rz-bg-knob: var(--rz-gray-19);
552
+ --rz-bg-base: var(--rz-gray-15);
553
+ --rz-bg-page: var(--rz-gray-16);
554
+ --rz-bg-raised: var(--rz-gray-17);
555
+ --rz-bg-float: var(--rz-gray-17);
556
+ --rz-bg-knob: var(--rz-gray-17);
557
557
  --rz-bg-inverse: var(--rz-gray-2);
558
558
 
559
559
  /* tints */
560
- --rz-bg-well: oklch(from var(--rz-gray-0) l c h / 0.035);
561
- --rz-bg-hover: oklch(from var(--rz-gray-0) l c h / 0.035);
560
+ --rz-bg-well: oklch(from var(--rz-gray-0) l c h / 0.032);
561
+ --rz-bg-hover: oklch(from var(--rz-gray-0) l c h / 0.021);
562
562
  --rz-bg-active: oklch(from var(--rz-gray-0) l c h / 0.06);
563
563
  --rz-bg-overlay: oklch(from var(--rz-gray-0) l c h / 0.2);
564
564
 
@@ -580,24 +580,10 @@ video {
580
580
  --rz-accent-border: oklch(from var(--rz-accent-solid) l c h / 0.5);
581
581
  --rz-ring: oklch(from var(--rz-accent-solid) l c h / 0.16);
582
582
 
583
- /* shadows: light mode lifts with a shadow, dark mode with a lit top edge */
584
- --rz-shadow-raised: 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.035);
585
- --rz-shadow-float:
586
- 0 4px 12px -2px oklch(from var(--rz-gray-0) l c h / 0.06),
587
- 0 16px 36px -12px oklch(from var(--rz-gray-0) l c h / 0.16);
588
- --rz-shadow-knob:
589
- 0 0 0 1px oklch(from var(--rz-gray-0) l c h / 0.06),
590
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.08);
583
+ /* shadows: only what floats over the page casts one */
584
+ --rz-shadow-float: 0 16px 36px -12px oklch(from var(--rz-gray-0) l c h / 0.16);
591
585
 
592
586
  /* gradients */
593
- --rz-gradient-primary: linear-gradient(
594
- 180deg,
595
- oklch(from var(--rz-bg-inverse) calc(l + 0.08) c h),
596
- var(--rz-bg-inverse)
597
- );
598
- --rz-shadow-primary:
599
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.12),
600
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.18);
601
587
  --rz-glow: radial-gradient(
602
588
  70% 38% at 50% 0%,
603
589
  oklch(from var(--rz-accent-solid) l c h / 0.035),
@@ -632,17 +618,7 @@ video {
632
618
  --rz-accent-border: oklch(from var(--rz-accent-soft) l c h / 0.45);
633
619
  --rz-ring: oklch(from var(--rz-accent-soft) l c h / 0.2);
634
620
 
635
- --rz-shadow-raised: inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.03);
636
- --rz-shadow-float:
637
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.05),
638
- 0 16px 40px -12px oklch(from var(--rz-gray-0) l c h / 0.6);
639
- --rz-shadow-knob:
640
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.07),
641
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.5);
642
-
643
- --rz-shadow-primary:
644
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.5),
645
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.4);
621
+ --rz-shadow-float: 0 16px 40px -12px oklch(from var(--rz-gray-0) l c h / 0.6);
646
622
  --rz-glow: radial-gradient(
647
623
  70% 38% at 50% 0%,
648
624
  oklch(from var(--rz-accent-solid) l c h / 0.07),
@@ -1,4 +1,4 @@
1
- /* A level: its fill, a hairline, its shadow. raised, float. */
1
+ /* A level: its fill, a hairline, and its shadow when it has one. raised has none, float does. */
2
2
 
3
3
  /* A well: an input, a track, a dropzone. Its edge shows on hover. */
4
4
 
@@ -22,9 +22,9 @@
22
22
  --rz-gray-14: oklch(0.865 var(--rz-gray-chroma) var(--rz-gray-hue));
23
23
  --rz-gray-15: oklch(0.905 var(--rz-gray-chroma) var(--rz-gray-hue));
24
24
  --rz-gray-16: oklch(0.94 var(--rz-gray-chroma) var(--rz-gray-hue));
25
- --rz-gray-17: oklch(0.965 var(--rz-gray-chroma) var(--rz-gray-hue));
26
- --rz-gray-18: oklch(0.982 var(--rz-gray-chroma) var(--rz-gray-hue));
27
- --rz-gray-19: oklch(0.996 var(--rz-gray-chroma) var(--rz-gray-hue));
25
+ --rz-gray-17: oklch(0.968 var(--rz-gray-chroma) var(--rz-gray-hue));
26
+ --rz-gray-18: oklch(0.986 var(--rz-gray-chroma) var(--rz-gray-hue));
27
+ --rz-gray-19: oklch(0.992 var(--rz-gray-chroma) var(--rz-gray-hue));
28
28
 
29
29
  --rz-accent-hue: 268;
30
30
  --rz-accent-chroma: 0.19;
@@ -8,16 +8,16 @@
8
8
  color-scheme: light dark;
9
9
 
10
10
  /* levels */
11
- --rz-bg-base: var(--rz-gray-17);
12
- --rz-bg-page: var(--rz-gray-19);
13
- --rz-bg-raised: var(--rz-gray-19);
14
- --rz-bg-float: var(--rz-gray-19);
15
- --rz-bg-knob: var(--rz-gray-19);
11
+ --rz-bg-base: var(--rz-gray-15);
12
+ --rz-bg-page: var(--rz-gray-16);
13
+ --rz-bg-raised: var(--rz-gray-17);
14
+ --rz-bg-float: var(--rz-gray-17);
15
+ --rz-bg-knob: var(--rz-gray-17);
16
16
  --rz-bg-inverse: var(--rz-gray-2);
17
17
 
18
18
  /* tints */
19
- --rz-bg-well: oklch(from var(--rz-gray-0) l c h / 0.035);
20
- --rz-bg-hover: oklch(from var(--rz-gray-0) l c h / 0.035);
19
+ --rz-bg-well: oklch(from var(--rz-gray-0) l c h / 0.032);
20
+ --rz-bg-hover: oklch(from var(--rz-gray-0) l c h / 0.021);
21
21
  --rz-bg-active: oklch(from var(--rz-gray-0) l c h / 0.06);
22
22
  --rz-bg-overlay: oklch(from var(--rz-gray-0) l c h / 0.2);
23
23
 
@@ -39,24 +39,10 @@
39
39
  --rz-accent-border: oklch(from var(--rz-accent-solid) l c h / 0.5);
40
40
  --rz-ring: oklch(from var(--rz-accent-solid) l c h / 0.16);
41
41
 
42
- /* shadows: light mode lifts with a shadow, dark mode with a lit top edge */
43
- --rz-shadow-raised: 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.035);
44
- --rz-shadow-float:
45
- 0 4px 12px -2px oklch(from var(--rz-gray-0) l c h / 0.06),
46
- 0 16px 36px -12px oklch(from var(--rz-gray-0) l c h / 0.16);
47
- --rz-shadow-knob:
48
- 0 0 0 1px oklch(from var(--rz-gray-0) l c h / 0.06),
49
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.08);
42
+ /* shadows: only what floats over the page casts one */
43
+ --rz-shadow-float: 0 16px 36px -12px oklch(from var(--rz-gray-0) l c h / 0.16);
50
44
 
51
45
  /* gradients */
52
- --rz-gradient-primary: linear-gradient(
53
- 180deg,
54
- oklch(from var(--rz-bg-inverse) calc(l + 0.08) c h),
55
- var(--rz-bg-inverse)
56
- );
57
- --rz-shadow-primary:
58
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.12),
59
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.18);
60
46
  --rz-glow: radial-gradient(
61
47
  70% 38% at 50% 0%,
62
48
  oklch(from var(--rz-accent-solid) l c h / 0.035),
@@ -91,17 +77,7 @@
91
77
  --rz-accent-border: oklch(from var(--rz-accent-soft) l c h / 0.45);
92
78
  --rz-ring: oklch(from var(--rz-accent-soft) l c h / 0.2);
93
79
 
94
- --rz-shadow-raised: inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.03);
95
- --rz-shadow-float:
96
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.05),
97
- 0 16px 40px -12px oklch(from var(--rz-gray-0) l c h / 0.6);
98
- --rz-shadow-knob:
99
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.07),
100
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.5);
101
-
102
- --rz-shadow-primary:
103
- inset 0 1px 0 oklch(from var(--rz-gray-19) l c h / 0.5),
104
- 0 1px 2px oklch(from var(--rz-gray-0) l c h / 0.4);
80
+ --rz-shadow-float: 0 16px 40px -12px oklch(from var(--rz-gray-0) l c h / 0.6);
105
81
  --rz-glow: radial-gradient(
106
82
  70% 38% at 50% 0%,
107
83
  oklch(from var(--rz-accent-solid) l c h / 0.07),
@@ -0,0 +1,13 @@
1
+ import { getI18nContext, setI18nContext } from './core/i18n/context.js';
2
+ import { createI18n } from './core/i18n/index.js';
3
+ import { openSse } from './core/plugins/sse/index.js';
4
+ import { isRelationPopulated, isRelationResolved, isRelationUnresolved, resolveRelation } from './fields/relation/util.js';
5
+ import RenderRichText from './fields/rich-text/core/render-rich-text.svelte';
6
+ import { richTextJSONToText } from './fields/rich-text/json.js';
7
+ import LiveConsumer from './live/Consumer.svelte';
8
+ import LiveEdit from './live/LiveEdit.svelte';
9
+ import LiveProvider from './live/Provider.svelte';
10
+ export type { SSEEvent, SSEHandler } from './core/plugins/sse/index.js';
11
+ export type { RichTextNodeRenderer, RichTextNodeRendererProps } from './fields/rich-text/core/types.js';
12
+ export type { JSONContent } from '@tiptap/core';
13
+ export { createI18n, getI18nContext, isRelationPopulated, isRelationResolved, isRelationUnresolved, LiveConsumer, LiveEdit, LiveProvider, openSse, RenderRichText, resolveRelation, richTextJSONToText, setI18nContext };
package/dist/public.js ADDED
@@ -0,0 +1,12 @@
1
+ // rimecms/public: what a site page imports from rime, and only that. Nothing it reaches is the
2
+ // panel or the config, which `public-entries.spec.ts` checks.
3
+ import { getI18nContext, setI18nContext } from './core/i18n/context.js';
4
+ import { createI18n } from './core/i18n/index.js';
5
+ import { openSse } from './core/plugins/sse/index.js';
6
+ import { isRelationPopulated, isRelationResolved, isRelationUnresolved, resolveRelation } from './fields/relation/util.js';
7
+ import RenderRichText from './fields/rich-text/core/render-rich-text.svelte';
8
+ import { richTextJSONToText } from './fields/rich-text/json.js';
9
+ import LiveConsumer from './live/Consumer.svelte';
10
+ import LiveEdit from './live/LiveEdit.svelte';
11
+ import LiveProvider from './live/Provider.svelte';
12
+ export { createI18n, getI18nContext, isRelationPopulated, isRelationResolved, isRelationUnresolved, LiveConsumer, LiveEdit, LiveProvider, openSse, RenderRichText, resolveRelation, richTextJSONToText, setI18nContext };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rimecms",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "homepage": "https://github.com/bienbiendev/rime",
5
5
  "packageManager": "bun@1.3.0",
6
6
  "scripts": {
@@ -39,6 +39,12 @@
39
39
  "import": "./dist/index.js",
40
40
  "default": "./dist/index.js"
41
41
  },
42
+ "./public": {
43
+ "types": "./dist/public.d.ts",
44
+ "svelte": "./dist/public.js",
45
+ "import": "./dist/public.js",
46
+ "default": "./dist/public.js"
47
+ },
42
48
  "./server": {
43
49
  "types": "./dist/server.d.ts",
44
50
  "import": "./dist/server.js",
@@ -69,16 +75,16 @@
69
75
  "import": "./dist/fields/rich-text/client.js",
70
76
  "default": "./dist/fields/rich-text/client.js"
71
77
  },
72
- "./fields/relation": {
73
- "types": "./dist/fields/relation/client.d.ts",
74
- "import": "./dist/fields/relation/client.js",
75
- "default": "./dist/fields/relation/client.js"
76
- },
77
78
  "./panel": {
78
79
  "types": "./dist/panel/index.d.ts",
79
80
  "import": "./dist/panel/index.js",
80
81
  "default": "./dist/panel/index.js"
81
82
  },
83
+ "./panel/public": {
84
+ "types": "./dist/panel/public.d.ts",
85
+ "import": "./dist/panel/public.js",
86
+ "default": "./dist/panel/public.js"
87
+ },
82
88
  "./panel/style/index.css": {
83
89
  "import": "./dist/panel/style/index.css",
84
90
  "default": "./dist/panel/style/index.css"
@@ -1,77 +0,0 @@
1
- <script lang="ts">
2
- import { t__ } from '../../../../core/i18n/index.js';
3
- import { ToyBrick } from '@lucide/svelte';
4
- import type { Snippet } from 'svelte';
5
- import type { LayerRow } from './focus.svelte.js';
6
-
7
- type Props = { row: LayerRow; error?: unknown; children?: Snippet<[name?: string]> };
8
- const { row, error, children }: Props = $props();
9
-
10
- const Icon = $derived(row.config?.icon ?? ToyBrick);
11
-
12
- $effect(() => {
13
- if (error) console.error(`Render of block ${row.path} failed`, error);
14
- });
15
- </script>
16
-
17
- <!-- A block without a render, or one whose render threw: its icon, its title, its nested lists. -->
18
- <div class="rz-render-placeholder" data-error={error ? '' : undefined}>
19
- <p class="rz-render-placeholder__title">
20
- <span class="rz-render-placeholder__icon"><Icon size={14} /></span>
21
- <span>{row.title}</span>
22
- {#if error}
23
- <span class="rz-render-placeholder__error">{t__('fields.render_failed')}</span>
24
- {/if}
25
- </p>
26
- {@render children?.()}
27
- </div>
28
-
29
- <style>/* A level: its fill, a hairline, its shadow. raised, float. */
30
-
31
- /* A well: an input, a track, a dropzone. Its edge shows on hover. */
32
-
33
- /* The hover tint, laid over the element's own fill. */
34
-
35
- /* The picked item of a segmented control. */
36
-
37
- /* The primary button's face: black on light, white on dark. */
38
-
39
- /* Keyboard focus on a button, a tab, a link. */
40
-
41
- /* A focused input: an accent edge and a soft halo. */
42
-
43
- /* An input with an error. */
44
- .rz-render-placeholder {
45
- display: grid;
46
- gap: var(--rz-size-3);
47
- padding: var(--rz-size-3) var(--rz-size-4);
48
- border: 1px dashed var(--rz-border-strong);
49
- border-radius: var(--rz-radius-md);
50
- }
51
-
52
- .rz-render-placeholder__title {
53
- display: flex;
54
- align-items: center;
55
- gap: var(--rz-size-2);
56
- font-size: var(--rz-text-sm);
57
- font-variation-settings: 'wght' 500;
58
- font-weight: 500;
59
- }
60
-
61
- .rz-render-placeholder__icon {
62
- display: grid;
63
- place-items: center;
64
- width: var(--rz-size-6);
65
- height: var(--rz-size-6);
66
- flex-shrink: 0;
67
- border-radius: var(--rz-radius-sm);
68
- background-color: var(--rz-bg-well);
69
- color: var(--rz-fg-muted);
70
- }
71
-
72
- .rz-render-placeholder__error {
73
- font-variation-settings: 'wght' 400;
74
- font-weight: 400;
75
- color: var(--rz-danger);
76
- }
77
- </style>
@@ -1,190 +0,0 @@
1
- <script lang="ts">
2
- import { getFieldListAtPath } from '../../../../core/fields/util.js';
3
- import { t__ } from '../../../../core/i18n/index.js';
4
- import RenderFields from '../../../../panel/components/fields/RenderFields.svelte';
5
- import { Button } from '../../../../panel/components/ui/button/index.js';
6
- import { withBlockTypes } from '../../../../panel/context/blocks-ops.js';
7
- import type { DocumentFormContext } from '../../../../panel/context/documentForm.svelte.js';
8
- import { CopyPlus, ToyBrick, Trash2 } from '@lucide/svelte';
9
- import { getBlocksFocusContext, type LayerRow } from './focus.svelte.js';
10
- import StagePlaceholder from './StagePlaceholder.svelte';
11
-
12
- type Props = { form: DocumentFormContext; onRemove: () => void };
13
- const { form, onRemove }: Props = $props();
14
-
15
- const focus = getBlocksFocusContext()!;
16
- const current = $derived(focus.currentRow);
17
- /** A block selected: that block alone. The root node: every block of the open list. */
18
- const rows = $derived(current ? [current] : focus.path ? focus.rowsOf(focus.path) : []);
19
-
20
- const fieldsOf = (row: LayerRow) =>
21
- getFieldListAtPath(withBlockTypes(row.path, form.values), form.config.fields);
22
- </script>
23
-
24
- <div class="rz-stage" data-mode={current ? 'block' : 'all'}>
25
- {#each rows as row (row.block.id)}
26
- {@const Icon = row.config?.icon ?? ToyBrick}
27
- {@const rendered = fieldsOf(row)}
28
- <article class="rz-stage__card" data-block-path={row.path}>
29
- <header class="rz-stage__header">
30
- <button
31
- type="button"
32
- class="rz-stage__title"
33
- onclick={() => focus.select(row.path)}
34
- disabled={!!current}
35
- >
36
- <span class="rz-stage__icon"><Icon size={14} /></span>
37
- <h3>{row.title}</h3>
38
- <span class="rz-stage__path">{row.path}</span>
39
- </button>
40
- {#if current && !focus.locked}
41
- <div class="rz-stage__actions">
42
- <Button
43
- variant="ghost"
44
- size="icon-sm"
45
- icon={CopyPlus}
46
- title={t__('common.duplicate')}
47
- aria-label={t__('common.duplicate')}
48
- onclick={focus.duplicateSelection}
49
- />
50
- <Button
51
- variant="ghost"
52
- size="icon-sm"
53
- icon={Trash2}
54
- title={t__('fields.delete_block')}
55
- aria-label={t__('fields.delete_block')}
56
- onclick={onRemove}
57
- />
58
- </div>
59
- {/if}
60
- </header>
61
- <div class="rz-stage__fields">
62
- <RenderFields fields={rendered.fields} path={rendered.path} {form} />
63
- </div>
64
- </article>
65
- {:else}
66
- <p class="rz-stage__empty">{t__('fields.no_blocks_yet')}</p>
67
- {/each}
68
- {#if !current && rows.length && !focus.locked}
69
- <StagePlaceholder />
70
- {/if}
71
- </div>
72
-
73
- <style>/* A level: its fill, a hairline, its shadow. raised, float. */
74
-
75
- /* A well: an input, a track, a dropzone. Its edge shows on hover. */
76
-
77
- /* The hover tint, laid over the element's own fill. */
78
-
79
- /* The picked item of a segmented control. */
80
-
81
- /* The primary button's face: black on light, white on dark. */
82
-
83
- /* Keyboard focus on a button, a tab, a link. */
84
-
85
- /* A focused input: an accent edge and a soft halo. */
86
-
87
- /* An input with an error. */
88
- .rz-stage {
89
- display: grid;
90
- align-content: start;
91
- gap: var(--rz-size-6);
92
- min-height: 100%;
93
- padding-bottom: var(--rz-size-16);
94
- }
95
-
96
- .rz-stage[data-mode='all'] {
97
- padding: var(--rz-size-6) var(--rz-size-6) var(--rz-size-16);
98
- }
99
-
100
- .rz-stage[data-mode='all'] .rz-stage__card {
101
- background-color: var(--rz-bg-raised);
102
- box-shadow:
103
- 0 0 0 1px var(--rz-border),
104
- var(--rz-shadow-raised);
105
- border-radius: var(--rz-radius-md);
106
- overflow: hidden;
107
- }
108
-
109
- /* A block's head: its icon, its title, its path, and on the right what it can do. */
110
- .rz-stage__header {
111
- display: flex;
112
- align-items: center;
113
- justify-content: space-between;
114
- gap: var(--rz-size-2);
115
- height: calc(11.5 * var(--rz-unit));
116
- padding-inline: var(--rz-size-3) var(--rz-size-1-5);
117
- border-bottom: 1px solid var(--rz-border);
118
- background-color: var(--rz-bg-raised);
119
- }
120
-
121
- /* Alone, the head stays on top of the fields, on the page's own fill. */
122
- .rz-stage[data-mode='block'] .rz-stage__header {
123
- position: sticky;
124
- top: 0;
125
- z-index: 1;
126
- background-color: var(--rz-bg-page);
127
- }
128
-
129
- .rz-stage__title {
130
- display: flex;
131
- align-items: center;
132
- gap: var(--rz-size-2);
133
- min-width: 0;
134
- h3 {
135
- font-variation-settings: 'wght' 500;
136
- font-weight: 500;
137
- font-size: var(--rz-text-md);
138
- white-space: nowrap;
139
- }
140
- &:not(:disabled):hover h3 {
141
- text-decoration: underline;
142
- }
143
- }
144
-
145
- .rz-stage__icon {
146
- display: grid;
147
- place-items: center;
148
- width: var(--rz-size-6);
149
- height: var(--rz-size-6);
150
- flex-shrink: 0;
151
- border-radius: var(--rz-radius-sm);
152
- background-color: var(--rz-bg-well);
153
- color: var(--rz-fg-muted);
154
- }
155
-
156
- .rz-stage__path {
157
- font-family: var(--rz-font-mono);
158
- font-size: var(--rz-text-xs);
159
- color: var(--rz-fg-subtle);
160
- overflow: hidden;
161
- text-overflow: ellipsis;
162
- white-space: nowrap;
163
- }
164
-
165
- /* Ghost icon buttons, quiet until hovered. */
166
- .rz-stage__actions {
167
- --rz-button-ghost-fg: var(--rz-fg-muted);
168
- display: flex;
169
- gap: var(--rz-size-0-5);
170
- flex-shrink: 0;
171
- :global(.rz-button) {
172
- width: var(--rz-size-7);
173
- height: var(--rz-size-7);
174
- }
175
- :global(.rz-button:hover) {
176
- color: var(--rz-fg);
177
- }
178
- }
179
-
180
- .rz-stage__fields {
181
- padding-block: var(--rz-size-6);
182
- }
183
-
184
- .rz-stage__empty {
185
- padding: var(--rz-size-16) var(--rz-size-6);
186
- text-align: center;
187
- font-size: var(--rz-text-sm);
188
- color: var(--rz-fg-subtle);
189
- }
190
- </style>
@@ -1,8 +0,0 @@
1
- import type { DocumentFormContext } from '../../../../panel/context/documentForm.svelte.js';
2
- type Props = {
3
- form: DocumentFormContext;
4
- onRemove: () => void;
5
- };
6
- declare const Stage: import("svelte").Component<Props, {}, "">;
7
- type Stage = ReturnType<typeof Stage>;
8
- export default Stage;
@@ -1,28 +0,0 @@
1
- import type { RelationValue } from '../types.js';
2
- /**
3
- * Checks if a relation field's value is populated with full documents.
4
- *
5
- * A relation is considered populated if it is an array of objects that do not
6
- * contain only the relation identifiers (`id`, `relationTo`, `documentId`).
7
- * If the value is a string or an array of relation identifier objects,
8
- * it is considered not populated.
9
- *
10
- * @example
11
- * // Returns: false
12
- * isRelationPopulated('7674e91b-598a-4a72-a5cd-9594736a34dd');
13
- *
14
- * @example
15
- * // Returns: false
16
- * isRelationPopulated([]);
17
- *
18
- * @example
19
- * // Returns: false
20
- * isRelationPopulated([
21
- * {
22
- * id: '7674e91b-598a-4a72-a5cd-9594736a34dd',
23
- * relationTo: 'articles',
24
- * documentId: 'b674e91b-598a-4a72-a5cd-9594736a34dd'
25
- * }
26
- * ]);
27
- */
28
- export declare const isRelationPopulated: <T>(value: RelationValue<T>) => value is T[];
@@ -1,37 +0,0 @@
1
- import { hasProps, isObjectLiteral } from '../../util/object.js';
2
- /**
3
- * Checks if a relation field's value is populated with full documents.
4
- *
5
- * A relation is considered populated if it is an array of objects that do not
6
- * contain only the relation identifiers (`id`, `relationTo`, `documentId`).
7
- * If the value is a string or an array of relation identifier objects,
8
- * it is considered not populated.
9
- *
10
- * @example
11
- * // Returns: false
12
- * isRelationPopulated('7674e91b-598a-4a72-a5cd-9594736a34dd');
13
- *
14
- * @example
15
- * // Returns: false
16
- * isRelationPopulated([]);
17
- *
18
- * @example
19
- * // Returns: false
20
- * isRelationPopulated([
21
- * {
22
- * id: '7674e91b-598a-4a72-a5cd-9594736a34dd',
23
- * relationTo: 'articles',
24
- * documentId: 'b674e91b-598a-4a72-a5cd-9594736a34dd'
25
- * }
26
- * ]);
27
- */
28
- export const isRelationPopulated = (value) => {
29
- if (Array.isArray(value)) {
30
- if (value.length === 0)
31
- return false;
32
- return value.every((v) => {
33
- return isObjectLiteral(v) && !hasProps(['id', 'relationTo', 'documentId'], v);
34
- });
35
- }
36
- return typeof value !== 'string';
37
- };