alinea 1.5.1 → 1.5.4

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "_id": "32jmmrahEGbj2XLJgk85LnTNyEt",
2
+ "_id": "36bYvugxw883tiYAmoEtvMRAN3F",
3
3
  "_type": "Page",
4
4
  "_index": "a0",
5
5
  "_seeded": "welcome.json",
package/dist/LICENSES.md CHANGED
@@ -80,6 +80,32 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
80
80
  SOFTWARE.
81
81
 
82
82
 
83
+ ===
84
+
85
+ # @headlessui/react@2.2.0 (MIT)
86
+
87
+ MIT License
88
+
89
+ Copyright (c) 2020 Tailwind Labs
90
+
91
+ Permission is hereby granted, free of charge, to any person obtaining a copy
92
+ of this software and associated documentation files (the "Software"), to deal
93
+ in the Software without restriction, including without limitation the rights
94
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
95
+ copies of the Software, and to permit persons to whom the Software is
96
+ furnished to do so, subject to the following conditions:
97
+
98
+ The above copyright notice and this permission notice shall be included in all
99
+ copies or substantial portions of the Software.
100
+
101
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
102
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
103
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
104
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
105
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
106
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
107
+ SOFTWARE.
108
+
83
109
  ===
84
110
 
85
111
  # htmlparser2@9.1.0 (MIT)
@@ -105,7 +131,7 @@ IN THE SOFTWARE.
105
131
 
106
132
  ===
107
133
 
108
- # domutils@3.1.0 (BSD-2-Clause)
134
+ # domhandler@5.0.3 (BSD-2-Clause)
109
135
 
110
136
  Copyright (c) Felix Böhm
111
137
  All rights reserved.
@@ -122,33 +148,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
122
148
 
123
149
  ===
124
150
 
125
- # @headlessui/react@2.2.0 (MIT)
126
-
127
- MIT License
128
-
129
- Copyright (c) 2020 Tailwind Labs
130
-
131
- Permission is hereby granted, free of charge, to any person obtaining a copy
132
- of this software and associated documentation files (the "Software"), to deal
133
- in the Software without restriction, including without limitation the rights
134
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
135
- copies of the Software, and to permit persons to whom the Software is
136
- furnished to do so, subject to the following conditions:
137
-
138
- The above copyright notice and this permission notice shall be included in all
139
- copies or substantial portions of the Software.
140
-
141
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
142
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
143
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
144
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
145
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
146
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
147
- SOFTWARE.
148
-
149
- ===
150
-
151
- # domhandler@5.0.3 (BSD-2-Clause)
151
+ # domutils@3.1.0 (BSD-2-Clause)
152
152
 
153
153
  Copyright (c) Felix Böhm
154
154
  All rights reserved.
@@ -182,38 +182,37 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
182
182
 
183
183
  ===
184
184
 
185
- # @badgateway/oauth2-client@3.2.0 (MIT)
185
+ # @popperjs/core@2.11.8 (MIT)
186
186
 
187
- MIT License
187
+ The MIT License (MIT)
188
188
 
189
- Copyright (c) 2019-2023 Evert Pot
189
+ Copyright (c) 2019 Federico Zivolo
190
190
 
191
- Permission is hereby granted, free of charge, to any person obtaining a copy
192
- of this software and associated documentation files (the "Software"), to deal
193
- in the Software without restriction, including without limitation the rights
194
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
195
- copies of the Software, and to permit persons to whom the Software is
196
- furnished to do so, subject to the following conditions:
191
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
192
+ this software and associated documentation files (the "Software"), to deal in
193
+ the Software without restriction, including without limitation the rights to
194
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
195
+ the Software, and to permit persons to whom the Software is furnished to do so,
196
+ subject to the following conditions:
197
197
 
198
198
  The above copyright notice and this permission notice shall be included in all
199
199
  copies or substantial portions of the Software.
200
200
 
201
201
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
202
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
203
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
204
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
205
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
206
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
207
- SOFTWARE.
202
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
203
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
204
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
205
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
206
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
208
207
 
209
208
 
210
209
  ===
211
210
 
212
- # prop-types@15.8.1 (MIT)
211
+ # @badgateway/oauth2-client@3.2.0 (MIT)
213
212
 
214
213
  MIT License
215
214
 
216
- Copyright (c) 2013-present, Facebook, Inc.
215
+ Copyright (c) 2019-2023 Evert Pot
217
216
 
218
217
  Permission is hereby granted, free of charge, to any person obtaining a copy
219
218
  of this software and associated documentation files (the "Software"), to deal
@@ -443,28 +442,29 @@ SOFTWARE.
443
442
 
444
443
  ===
445
444
 
446
- # @popperjs/core@2.11.8 (MIT)
445
+ # prop-types@15.8.1 (MIT)
447
446
 
448
- The MIT License (MIT)
447
+ MIT License
449
448
 
450
- Copyright (c) 2019 Federico Zivolo
449
+ Copyright (c) 2013-present, Facebook, Inc.
451
450
 
452
- Permission is hereby granted, free of charge, to any person obtaining a copy of
453
- this software and associated documentation files (the "Software"), to deal in
454
- the Software without restriction, including without limitation the rights to
455
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
456
- the Software, and to permit persons to whom the Software is furnished to do so,
457
- subject to the following conditions:
451
+ Permission is hereby granted, free of charge, to any person obtaining a copy
452
+ of this software and associated documentation files (the "Software"), to deal
453
+ in the Software without restriction, including without limitation the rights
454
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
455
+ copies of the Software, and to permit persons to whom the Software is
456
+ furnished to do so, subject to the following conditions:
458
457
 
459
458
  The above copyright notice and this permission notice shall be included in all
460
459
  copies or substantial portions of the Software.
461
460
 
462
461
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
463
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
464
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
465
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
466
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
467
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
462
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
463
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
464
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
465
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
466
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
467
+ SOFTWARE.
468
468
 
469
469
 
470
470
  ===
@@ -513,16 +513,43 @@ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
513
513
 
514
514
  ===
515
515
 
516
- # @headless-tree/core@0.0.15 (MIT)
516
+ # @headless-tree/react@0.0.15 (MIT)
517
517
 
518
518
  MIT
519
519
 
520
520
  ===
521
521
 
522
- # @headless-tree/react@0.0.15 (MIT)
522
+ # @headless-tree/core@0.0.15 (MIT)
523
523
 
524
524
  MIT
525
525
 
526
+ ===
527
+
528
+ # y-prosemirror@1.2.15 (MIT)
529
+
530
+ The MIT License (MIT)
531
+
532
+ Copyright (c) 2019 Kevin Jahns <kevin.jahns@protonmail.com>.
533
+
534
+ Permission is hereby granted, free of charge, to any person obtaining a copy
535
+ of this software and associated documentation files (the "Software"), to deal
536
+ in the Software without restriction, including without limitation the rights
537
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
538
+ copies of the Software, and to permit persons to whom the Software is
539
+ furnished to do so, subject to the following conditions:
540
+
541
+ The above copyright notice and this permission notice shall be included in all
542
+ copies or substantial portions of the Software.
543
+
544
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
545
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
546
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
547
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
548
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
549
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
550
+ SOFTWARE.
551
+
552
+
526
553
  ===
527
554
 
528
555
  # @babel/runtime@7.25.4 (MIT)
@@ -551,33 +578,6 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
551
578
  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
552
579
 
553
580
 
554
- ===
555
-
556
- # y-prosemirror@1.2.15 (MIT)
557
-
558
- The MIT License (MIT)
559
-
560
- Copyright (c) 2019 Kevin Jahns <kevin.jahns@protonmail.com>.
561
-
562
- Permission is hereby granted, free of charge, to any person obtaining a copy
563
- of this software and associated documentation files (the "Software"), to deal
564
- in the Software without restriction, including without limitation the rights
565
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
566
- copies of the Software, and to permit persons to whom the Software is
567
- furnished to do so, subject to the following conditions:
568
-
569
- The above copyright notice and this permission notice shall be included in all
570
- copies or substantial portions of the Software.
571
-
572
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
573
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
574
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
575
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
576
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
577
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
578
- SOFTWARE.
579
-
580
-
581
581
  ===
582
582
 
583
583
  # @react-aria/focus@3.19.1 (Apache-2.0)
@@ -1612,6 +1612,33 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1612
1612
  See the License for the specific language governing permissions and
1613
1613
  limitations under the License.
1614
1614
 
1615
+ ===
1616
+
1617
+ # @tanstack/virtual-core@3.10.6 (MIT)
1618
+
1619
+ MIT License
1620
+
1621
+ Copyright (c) 2021-present Tanner Linsley
1622
+
1623
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1624
+ of this software and associated documentation files (the "Software"), to deal
1625
+ in the Software without restriction, including without limitation the rights
1626
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1627
+ copies of the Software, and to permit persons to whom the Software is
1628
+ furnished to do so, subject to the following conditions:
1629
+
1630
+ The above copyright notice and this permission notice shall be included in all
1631
+ copies or substantial portions of the Software.
1632
+
1633
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1634
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1635
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1636
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1637
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1638
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1639
+ SOFTWARE.
1640
+
1641
+
1615
1642
  ===
1616
1643
 
1617
1644
  # @react-stately/utils@3.10.5 (Apache-2.0)
@@ -1817,30 +1844,3 @@ limitations under the License.
1817
1844
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1818
1845
  See the License for the specific language governing permissions and
1819
1846
  limitations under the License.
1820
-
1821
-
1822
- ===
1823
-
1824
- # @tanstack/virtual-core@3.10.6 (MIT)
1825
-
1826
- MIT License
1827
-
1828
- Copyright (c) 2021-present Tanner Linsley
1829
-
1830
- Permission is hereby granted, free of charge, to any person obtaining a copy
1831
- of this software and associated documentation files (the "Software"), to deal
1832
- in the Software without restriction, including without limitation the rights
1833
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1834
- copies of the Software, and to permit persons to whom the Software is
1835
- furnished to do so, subject to the following conditions:
1836
-
1837
- The above copyright notice and this permission notice shall be included in all
1838
- copies or substantial portions of the Software.
1839
-
1840
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1841
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1842
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1843
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1844
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1845
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1846
- SOFTWARE.
@@ -525,8 +525,7 @@ var OAuth2 = class {
525
525
  value: codeVerifier,
526
526
  path: redirectUri.pathname,
527
527
  secure: redirectUri.protocol === "https:",
528
- httpOnly: true,
529
- sameSite: "strict"
528
+ httpOnly: true
530
529
  })
531
530
  }
532
531
  }
@@ -651,10 +650,9 @@ function clearCookies(redirectUri) {
651
650
  name: COOKIE_ACCESS_TOKEN,
652
651
  value: "",
653
652
  expires: /* @__PURE__ */ new Date(0),
654
- path: redirectUri.pathname,
653
+ path: "/",
655
654
  secure: redirectUri.protocol === "https:",
656
- httpOnly: true,
657
- sameSite: "strict"
655
+ httpOnly: true
658
656
  },
659
657
  {
660
658
  name: COOKIE_REFRESH_TOKEN,
@@ -674,10 +672,9 @@ function tokenToCookie(token, redirectUri) {
674
672
  name: COOKIE_ACCESS_TOKEN,
675
673
  value: token.accessToken,
676
674
  expires: token.expiresAt ? new Date(token.expiresAt) : void 0,
677
- path: redirectUri.pathname,
675
+ path: "/",
678
676
  secure: redirectUri.protocol === "https:",
679
- httpOnly: true,
680
- sameSite: "strict"
677
+ httpOnly: true
681
678
  },
682
679
  {
683
680
  name: COOKIE_REFRESH_TOKEN,
package/dist/bundled.d.ts CHANGED
@@ -9882,6 +9882,20 @@ declare module 'alinea/ui/icons/TableDeleteRow' {
9882
9882
 
9883
9883
  }
9884
9884
 
9885
+ declare module 'alinea/ui/icons/TableHeaderCell' {
9886
+
9887
+ import type { SVGProps } from 'react';
9888
+ export function TableHeaderCell(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
9889
+
9890
+ }
9891
+
9892
+ declare module 'alinea/ui/icons/TableHeaderColumn' {
9893
+
9894
+ import type { SVGProps } from 'react';
9895
+ export function TableHeaderColumn(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
9896
+
9897
+ }
9898
+
9885
9899
  declare module 'alinea/ui/icons/TableHeaderRow' {
9886
9900
 
9887
9901
  import type { SVGProps } from 'react';
@@ -9924,6 +9938,20 @@ declare module 'alinea/ui/icons/TableInsertRowBefore' {
9924
9938
 
9925
9939
  }
9926
9940
 
9941
+ declare module 'alinea/ui/icons/TableMergeCells' {
9942
+
9943
+ import type { SVGProps } from 'react';
9944
+ export function TableMergeCells(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
9945
+
9946
+ }
9947
+
9948
+ declare module 'alinea/ui/icons/TableSplitCell' {
9949
+
9950
+ import type { SVGProps } from 'react';
9951
+ export function TableSplitCell(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
9952
+
9953
+ }
9954
+
9927
9955
  declare module 'alinea/ui/Lift' {
9928
9956
 
9929
9957
  import type { HTMLProps } from 'react';
@@ -57,7 +57,7 @@ var package_default = {
57
57
  },
58
58
  devDependencies: {
59
59
  "@alinea/styler": "^1.0.3",
60
- "@alinea/suite": "^0.6.2",
60
+ "@alinea/suite": "^0.6.3",
61
61
  "@biomejs/biome": "^2.1.2",
62
62
  "@esbx/reporter": "^0.0.20",
63
63
  "@esbx/workspaces": "^0.0.20",
@@ -2,7 +2,7 @@
2
2
  var package_default = {
3
3
  bin: "./dist/cli.js",
4
4
  name: "alinea",
5
- version: "1.5.1",
5
+ version: "1.5.4",
6
6
  description: "Headless git-based CMS",
7
7
  repository: {
8
8
  type: "git",
package/dist/cli/Serve.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "../chunks/chunk-Z3QMPIDC.js";
3
+ } from "../chunks/chunk-F7QQQJ6Z.js";
4
4
  import "../chunks/chunk-NZLE2WMY.js";
5
5
 
6
6
  // src/cli/Serve.ts
package/dist/cli/bin.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "../chunks/chunk-Z3QMPIDC.js";
3
+ } from "../chunks/chunk-F7QQQJ6Z.js";
4
4
  import "../chunks/chunk-NZLE2WMY.js";
5
5
 
6
6
  // node_modules/mri/lib/index.mjs
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  package_default
3
- } from "../chunks/chunk-Z3QMPIDC.js";
3
+ } from "../chunks/chunk-F7QQQJ6Z.js";
4
4
  import "../chunks/chunk-NZLE2WMY.js";
5
5
 
6
6
  // src/cloud/CloudRemote.ts
@@ -104,7 +104,7 @@ var EntryResolver = class {
104
104
  case "next": {
105
105
  const [next] = this.index.filter({
106
106
  condition({ workspace, root, parentId, index, locale }) {
107
- return workspace === entry.workspace && root === entry.root && parentId === entry.parentId && index < entry.index && locale === entry.locale;
107
+ return workspace === entry.workspace && root === entry.root && parentId === entry.parentId && index > entry.index && locale === entry.locale;
108
108
  }
109
109
  }).sort((a, b) => compareStrings(a.index, b.index));
110
110
  return { ids: next ? [next.id] : [] };
@@ -112,7 +112,7 @@ var EntryResolver = class {
112
112
  case "previous": {
113
113
  const [previous] = this.index.filter({
114
114
  condition({ workspace, root, parentId, index, locale }) {
115
- return workspace === entry.workspace && root === entry.root && parentId === entry.parentId && index > entry.index && locale === entry.locale;
115
+ return workspace === entry.workspace && root === entry.root && parentId === entry.parentId && index < entry.index && locale === entry.locale;
116
116
  }
117
117
  }).sort((a, b) => compareStrings(b.index, a.index));
118
118
  return { ids: previous ? [previous.id] : [] };
@@ -4,6 +4,8 @@ import {
4
4
  import "../../chunks/chunk-NZLE2WMY.js";
5
5
 
6
6
  // src/field/richtext/RichTextToolbar.tsx
7
+ import { FieldToolbar } from "alinea/dashboard/view/entry/FieldToolbar";
8
+ import { IconButton } from "alinea/dashboard/view/IconButton";
7
9
  import { HStack, Icon, px, Typo } from "alinea/ui";
8
10
  import { DropdownMenu } from "alinea/ui/DropdownMenu";
9
11
  import { IcAlignCenter } from "alinea/ui/icons/IcAlignCenter";
@@ -18,21 +20,23 @@ import { IcRoundFormatListNumbered } from "alinea/ui/icons/IcRoundFormatListNumb
18
20
  import { IcRoundHorizontalRule } from "alinea/ui/icons/IcRoundHorizontalRule";
19
21
  import { IcRoundLink } from "alinea/ui/icons/IcRoundLink";
20
22
  import { IcRoundQuote } from "alinea/ui/icons/IcRoundQuote";
21
- import { IcRoundTextFields } from "alinea/ui/icons/IcRoundTextFields";
22
- import { IcRoundUnfoldMore } from "alinea/ui/icons/IcRoundUnfoldMore";
23
- import { FieldToolbar } from "alinea/dashboard/view/entry/FieldToolbar";
24
- import { IconButton } from "alinea/dashboard/view/IconButton";
25
23
  import { IcRoundSubscript } from "alinea/ui/icons/IcRoundSubscript";
26
24
  import { IcRoundSuperscript } from "alinea/ui/icons/IcRoundSuperscript";
25
+ import { IcRoundTextFields } from "alinea/ui/icons/IcRoundTextFields";
26
+ import { IcRoundUnfoldMore } from "alinea/ui/icons/IcRoundUnfoldMore";
27
27
  import { TableDelete } from "alinea/ui/icons/TableDelete";
28
28
  import { TableDeleteColumn } from "alinea/ui/icons/TableDeleteColumn";
29
29
  import { TableDeleteRow } from "alinea/ui/icons/TableDeleteRow";
30
+ import { TableHeaderCell } from "alinea/ui/icons/TableHeaderCell";
31
+ import { TableHeaderColumn } from "alinea/ui/icons/TableHeaderColumn";
30
32
  import { TableHeaderRow } from "alinea/ui/icons/TableHeaderRow";
31
33
  import { TableInsert } from "alinea/ui/icons/TableInsert";
32
34
  import { TableInsertColumnAfter } from "alinea/ui/icons/TableInsertColumnAfter";
33
35
  import { TableInsertColumnBefore } from "alinea/ui/icons/TableInsertColumnBefore";
34
36
  import { TableInsertRowAfter } from "alinea/ui/icons/TableInsertRowAfter";
35
37
  import { TableInsertRowBefore } from "alinea/ui/icons/TableInsertRowBefore";
38
+ import { TableMergeCells } from "alinea/ui/icons/TableMergeCells";
39
+ import { TableSplitCell } from "alinea/ui/icons/TableSplitCell";
36
40
  import { forwardRef } from "react";
37
41
  import { attributesToReference, referenceToAttributes } from "./ReferenceLink.js";
38
42
 
@@ -185,34 +189,32 @@ var RichTextToolbar = forwardRef(function RichTextToolbar2({ pickLink, editor, f
185
189
  /* @__PURE__ */ jsx(
186
190
  DropdownMenu.Item,
187
191
  {
188
- onClick: () => exec().addRowBefore().run(),
192
+ onClick: () => exec().mergeCells().run(),
193
+ disabled: !editor.can().mergeCells(),
189
194
  children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
190
- /* @__PURE__ */ jsx(Icon, { icon: TableInsertRowBefore, size: 20 }),
191
- "Insert row before"
195
+ /* @__PURE__ */ jsx(Icon, { icon: TableMergeCells, size: 20 }),
196
+ "Merge cells"
192
197
  ] })
193
198
  }
194
199
  ),
195
200
  /* @__PURE__ */ jsx(
196
201
  DropdownMenu.Item,
197
202
  {
198
- onClick: () => exec().addRowAfter().run(),
203
+ onClick: () => exec().splitCell().run(),
204
+ disabled: !editor.can().splitCell(),
199
205
  children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
200
- /* @__PURE__ */ jsx(Icon, { icon: TableInsertRowAfter, size: 20 }),
201
- "Insert row after"
206
+ /* @__PURE__ */ jsx(Icon, { icon: TableSplitCell, size: 20 }),
207
+ "Split cell"
202
208
  ] })
203
209
  }
204
210
  ),
205
- /* @__PURE__ */ jsx(DropdownMenu.Item, { onClick: () => exec().deleteRow().run(), children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
206
- /* @__PURE__ */ jsx(Icon, { icon: TableDeleteRow, size: 20 }),
207
- "Delete row"
208
- ] }) }),
209
211
  /* @__PURE__ */ jsx(
210
212
  DropdownMenu.Item,
211
213
  {
212
- onClick: () => exec().toggleHeaderRow().run(),
214
+ onClick: () => exec().toggleHeaderCell().run(),
213
215
  children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
214
- /* @__PURE__ */ jsx(Icon, { icon: TableHeaderRow, size: 20 }),
215
- "Toggle header row"
216
+ /* @__PURE__ */ jsx(Icon, { icon: TableHeaderCell, size: 20 }),
217
+ "Toggle header cell"
216
218
  ] })
217
219
  }
218
220
  ),
@@ -237,6 +239,16 @@ var RichTextToolbar = forwardRef(function RichTextToolbar2({ pickLink, editor, f
237
239
  ] })
238
240
  }
239
241
  ),
242
+ /* @__PURE__ */ jsx(
243
+ DropdownMenu.Item,
244
+ {
245
+ onClick: () => exec().toggleHeaderColumn().run(),
246
+ children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
247
+ /* @__PURE__ */ jsx(Icon, { icon: TableHeaderColumn, size: 20 }),
248
+ "Toggle header column"
249
+ ] })
250
+ }
251
+ ),
240
252
  /* @__PURE__ */ jsx(
241
253
  DropdownMenu.Item,
242
254
  {
@@ -248,6 +260,41 @@ var RichTextToolbar = forwardRef(function RichTextToolbar2({ pickLink, editor, f
248
260
  }
249
261
  ),
250
262
  /* @__PURE__ */ jsx(HrDivider, {}),
263
+ /* @__PURE__ */ jsx(
264
+ DropdownMenu.Item,
265
+ {
266
+ onClick: () => exec().addRowBefore().run(),
267
+ children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
268
+ /* @__PURE__ */ jsx(Icon, { icon: TableInsertRowBefore, size: 20 }),
269
+ "Insert row before"
270
+ ] })
271
+ }
272
+ ),
273
+ /* @__PURE__ */ jsx(
274
+ DropdownMenu.Item,
275
+ {
276
+ onClick: () => exec().addRowAfter().run(),
277
+ children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
278
+ /* @__PURE__ */ jsx(Icon, { icon: TableInsertRowAfter, size: 20 }),
279
+ "Insert row after"
280
+ ] })
281
+ }
282
+ ),
283
+ /* @__PURE__ */ jsx(
284
+ DropdownMenu.Item,
285
+ {
286
+ onClick: () => exec().toggleHeaderRow().run(),
287
+ children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
288
+ /* @__PURE__ */ jsx(Icon, { icon: TableHeaderRow, size: 20 }),
289
+ "Toggle header row"
290
+ ] })
291
+ }
292
+ ),
293
+ /* @__PURE__ */ jsx(DropdownMenu.Item, { onClick: () => exec().deleteRow().run(), children: /* @__PURE__ */ jsxs(HStack, { gap: 8, center: true, children: [
294
+ /* @__PURE__ */ jsx(Icon, { icon: TableDeleteRow, size: 20 }),
295
+ "Delete row"
296
+ ] }) }),
297
+ /* @__PURE__ */ jsx(HrDivider, {}),
251
298
  /* @__PURE__ */ jsx(
252
299
  DropdownMenu.Item,
253
300
  {
package/dist/index.css CHANGED
@@ -338,12 +338,16 @@ button {
338
338
  }
339
339
  .alinea-EntryHeader-description {
340
340
  flex: 1;
341
- overflow-x: auto;
342
341
  height: 100%;
343
342
  margin: auto;
344
343
  padding: 0 var(--alinea-main-padding-x);
345
344
  max-width: var(--alinea-main-width);
346
345
  }
346
+ @media (max-width: 439.9px) {
347
+ .alinea-EntryHeader-description {
348
+ overflow-x: auto;
349
+ }
350
+ }
347
351
  .alinea-EntryHeader-description-separator {
348
352
  border-right: 1px solid;
349
353
  opacity: 0;
@@ -3335,6 +3339,10 @@ h3.alinea-RichTextKit-heading:not(:last-child) {
3335
3339
  padding: 0.25rem 0.5rem;
3336
3340
  border: 1px solid var(--alinea-fields-table);
3337
3341
  }
3342
+ .alinea-RichTextKit-td.selectedCell,
3343
+ .alinea-RichTextKit-th.selectedCell {
3344
+ background-color: var(--alinea-highlight);
3345
+ }
3338
3346
  .alinea-RichTextKit-th {
3339
3347
  background: var(--alinea-fields-header);
3340
3348
  text-align: left;
@@ -3875,15 +3883,21 @@ h3.alinea-RichTextKit-heading:not(:last-child) {
3875
3883
  user-select: none;
3876
3884
  border-radius: var(--alinea-border-radius);
3877
3885
  padding: 0.5rem 0.625rem;
3886
+ }
3887
+ .alinea-DropdownMenu-item:not([disabled]) {
3878
3888
  cursor: pointer;
3879
3889
  }
3880
3890
  .alinea-DropdownMenu-item:focus {
3881
- background-color: var(--alinea-selected);
3891
+ background: var(--alinea-selected);
3882
3892
  }
3883
3893
  .alinea-DropdownMenu-item:hover,
3884
3894
  .alinea-DropdownMenu-item.alinea-DropdownMenu-is-active {
3885
3895
  background: var(--alinea-highlight);
3886
3896
  }
3897
+ .alinea-DropdownMenu-item:disabled {
3898
+ pointer-events: none;
3899
+ opacity: 0.5;
3900
+ }
3887
3901
 
3888
3902
  /* src/ui/Ellipsis.module.scss */
3889
3903
  .alinea-Ellipsis {
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare function TableHeaderCell(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import "../../chunks/chunk-NZLE2WMY.js";
2
+
3
+ // src/ui/icons/TableHeaderCell.tsx
4
+ import { jsx } from "react/jsx-runtime";
5
+ function TableHeaderCell(props) {
6
+ return /* @__PURE__ */ jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx(
7
+ "path",
8
+ {
9
+ fill: "currentColor",
10
+ d: "M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14Zm-8 9H5v5h6v-5Zm8 0h-6v5h6v-5Zm-8-7H5v5h6V6Z"
11
+ }
12
+ ) });
13
+ }
14
+ export {
15
+ TableHeaderCell
16
+ };
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare function TableHeaderColumn(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import "../../chunks/chunk-NZLE2WMY.js";
2
+
3
+ // src/ui/icons/TableHeaderColumn.tsx
4
+ import { jsx } from "react/jsx-runtime";
5
+ function TableHeaderColumn(props) {
6
+ return /* @__PURE__ */ jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx(
7
+ "path",
8
+ {
9
+ fill: "currentColor",
10
+ d: "M19,4 C20.1045695,4 21,4.8954305 21,6 L21,18 C21,19.1045695 20.1045695,20 19,20 L5,20 C3.8954305,20 3,19.1045695 3,18 L3,6 C3,4.8954305 3.8954305,4 5,4 L19,4 Z M19,13 L15,13 L15,18 L19,18 L19,13 Z M13,13 L9,13 L9,18 L13,18 L13,13 Z M13,6 L9,6 L9,11 L13,11 L13,6 Z M19,6 L15,6 L15,11 L19,11 L19,6 Z"
11
+ }
12
+ ) });
13
+ }
14
+ export {
15
+ TableHeaderColumn
16
+ };
@@ -7,7 +7,7 @@ function TableHeaderRow(props) {
7
7
  "path",
8
8
  {
9
9
  fill: "currentColor",
10
- d: "M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 15v3h6v-3H5Zm14 0h-6v3h6v-3Zm0-9h-6v3h6V6ZM5 9h6V6H5v3Z"
10
+ d: "M19,4 C20.1045695,4 21,4.8954305 21,6 L21,18 C21,19.1045695 20.1045695,20 19,20 L5,20 C3.8954305,20 3,19.1045695 3,18 L3,6 C3,4.8954305 3.8954305,4 5,4 L19,4 Z M11,15 L5,15 L5,18 L11,18 L11,15 Z M19,15 L13,15 L13,18 L19,18 L19,15 Z M19,10 L13,10 L13,13 L19,13 L19,10 Z M5,13 L11,13 L11,10 L5,10 L5,13 Z"
11
11
  }
12
12
  ) });
13
13
  }
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare function TableMergeCells(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import "../../chunks/chunk-NZLE2WMY.js";
2
+
3
+ // src/ui/icons/TableMergeCells.tsx
4
+ import { jsx } from "react/jsx-runtime";
5
+ function TableMergeCells(props) {
6
+ return /* @__PURE__ */ jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx(
7
+ "path",
8
+ {
9
+ fill: "currentColor",
10
+ d: "M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM5 15.5V18h3v-2.5H5Zm14-5h-9V18h9v-7.5ZM19 6h-4v2.5h4V6ZM8 6H5v2.5h3V6Zm5 0h-3v2.5h3V6Zm-8 7.5h3v-3H5v3Z"
11
+ }
12
+ ) });
13
+ }
14
+ export {
15
+ TableMergeCells
16
+ };
@@ -0,0 +1,2 @@
1
+ import type { SVGProps } from 'react';
2
+ export declare function TableSplitCell(props: SVGProps<SVGSVGElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import "../../chunks/chunk-NZLE2WMY.js";
2
+
3
+ // src/ui/icons/TableSplitCell.tsx
4
+ import { jsx } from "react/jsx-runtime";
5
+ function TableSplitCell(props) {
6
+ return /* @__PURE__ */ jsx("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", ...props, children: /* @__PURE__ */ jsx(
7
+ "path",
8
+ {
9
+ fill: "currentColor",
10
+ d: "M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14ZM8 15.5H5V18h3v-2.5Zm11-5h-9V18h9v-7.5Zm-2.5 1 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2-2-2 1-1 2 2 2-2Zm-8.5-1H5v3h3v-3ZM19 6h-4v2.5h4V6ZM8 6H5v2.5h3V6Zm5 0h-3v2.5h3V6Z"
11
+ }
12
+ ) });
13
+ }
14
+ export {
15
+ TableSplitCell
16
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bin": "./dist/cli.js",
3
3
  "name": "alinea",
4
- "version": "1.5.1",
4
+ "version": "1.5.4",
5
5
  "description": "Headless git-based CMS",
6
6
  "repository": {
7
7
  "type": "git",