alinea 1.5.3 → 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": "343CEKrqErQ4vi29XpCZFNLmjM6",
2
+ "_id": "36bYvugxw883tiYAmoEtvMRAN3F",
3
3
  "_type": "Page",
4
4
  "_index": "a0",
5
5
  "_seeded": "welcome.json",
package/dist/LICENSES.md CHANGED
@@ -28,29 +28,6 @@ SOFTWARE.
28
28
 
29
29
  ===
30
30
 
31
- # htmlparser2@9.1.0 (MIT)
32
-
33
- Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
34
- Permission is hereby granted, free of charge, to any person obtaining a copy
35
- of this software and associated documentation files (the "Software"), to
36
- deal in the Software without restriction, including without limitation the
37
- rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
38
- sell copies of the Software, and to permit persons to whom the Software is
39
- furnished to do so, subject to the following conditions:
40
-
41
- The above copyright notice and this permission notice shall be included in
42
- all copies or substantial portions of the Software.
43
-
44
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
45
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
46
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
47
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
48
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
49
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
50
- IN THE SOFTWARE.
51
-
52
- ===
53
-
54
31
  # react-query@3.39.3 (MIT)
55
32
 
56
33
  MIT License
@@ -131,7 +108,30 @@ SOFTWARE.
131
108
 
132
109
  ===
133
110
 
134
- # domutils@3.1.0 (BSD-2-Clause)
111
+ # htmlparser2@9.1.0 (MIT)
112
+
113
+ Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
114
+ Permission is hereby granted, free of charge, to any person obtaining a copy
115
+ of this software and associated documentation files (the "Software"), to
116
+ deal in the Software without restriction, including without limitation the
117
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
118
+ sell copies of the Software, and to permit persons to whom the Software is
119
+ furnished to do so, subject to the following conditions:
120
+
121
+ The above copyright notice and this permission notice shall be included in
122
+ all copies or substantial portions of the Software.
123
+
124
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
125
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
126
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
127
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
128
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
129
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
130
+ IN THE SOFTWARE.
131
+
132
+ ===
133
+
134
+ # domhandler@5.0.3 (BSD-2-Clause)
135
135
 
136
136
  Copyright (c) Felix Böhm
137
137
  All rights reserved.
@@ -148,7 +148,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
148
148
 
149
149
  ===
150
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.
@@ -180,33 +180,6 @@ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRE
180
180
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
181
181
 
182
182
 
183
- ===
184
-
185
- # @badgateway/oauth2-client@3.2.0 (MIT)
186
-
187
- MIT License
188
-
189
- Copyright (c) 2019-2023 Evert Pot
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:
197
-
198
- The above copyright notice and this permission notice shall be included in all
199
- copies or substantial portions of the Software.
200
-
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.
208
-
209
-
210
183
  ===
211
184
 
212
185
  # @popperjs/core@2.11.8 (MIT)
@@ -235,28 +208,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
235
208
 
236
209
  ===
237
210
 
238
- # dom-serializer@2.0.0 (MIT)
239
-
240
- License
241
-
242
- (The MIT License)
243
-
244
- Copyright (c) 2014 The cheeriojs contributors
245
-
246
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
247
-
248
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
249
-
250
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
251
-
252
-
253
- ===
254
-
255
- # prop-types@15.8.1 (MIT)
211
+ # @badgateway/oauth2-client@3.2.0 (MIT)
256
212
 
257
213
  MIT License
258
214
 
259
- Copyright (c) 2013-present, Facebook, Inc.
215
+ Copyright (c) 2019-2023 Evert Pot
260
216
 
261
217
  Permission is hereby granted, free of charge, to any person obtaining a copy
262
218
  of this software and associated documentation files (the "Software"), to deal
@@ -484,6 +440,33 @@ SOFTWARE.
484
440
  limitations under the License.
485
441
 
486
442
 
443
+ ===
444
+
445
+ # prop-types@15.8.1 (MIT)
446
+
447
+ MIT License
448
+
449
+ Copyright (c) 2013-present, Facebook, Inc.
450
+
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:
457
+
458
+ The above copyright notice and this permission notice shall be included in all
459
+ copies or substantial portions of the Software.
460
+
461
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
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
+
469
+
487
470
  ===
488
471
 
489
472
  # react-is@16.13.1 (MIT)
@@ -513,9 +496,20 @@ SOFTWARE.
513
496
 
514
497
  ===
515
498
 
516
- # @headless-tree/core@0.0.15 (MIT)
499
+ # dom-serializer@2.0.0 (MIT)
500
+
501
+ License
502
+
503
+ (The MIT License)
504
+
505
+ Copyright (c) 2014 The cheeriojs contributors
506
+
507
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
508
+
509
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
510
+
511
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
517
512
 
518
- MIT
519
513
 
520
514
  ===
521
515
 
@@ -525,6 +519,12 @@ MIT
525
519
 
526
520
  ===
527
521
 
522
+ # @headless-tree/core@0.0.15 (MIT)
523
+
524
+ MIT
525
+
526
+ ===
527
+
528
528
  # y-prosemirror@1.2.15 (MIT)
529
529
 
530
530
  The MIT License (MIT)
@@ -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.
@@ -652,8 +652,7 @@ function clearCookies(redirectUri) {
652
652
  expires: /* @__PURE__ */ new Date(0),
653
653
  path: "/",
654
654
  secure: redirectUri.protocol === "https:",
655
- httpOnly: true,
656
- sameSite: "strict"
655
+ httpOnly: true
657
656
  },
658
657
  {
659
658
  name: COOKIE_REFRESH_TOKEN,
@@ -675,8 +674,7 @@ function tokenToCookie(token, redirectUri) {
675
674
  expires: token.expiresAt ? new Date(token.expiresAt) : void 0,
676
675
  path: "/",
677
676
  secure: redirectUri.protocol === "https:",
678
- httpOnly: true,
679
- sameSite: "strict"
677
+ httpOnly: true
680
678
  },
681
679
  {
682
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';
@@ -2,7 +2,7 @@
2
2
  var package_default = {
3
3
  bin: "./dist/cli.js",
4
4
  name: "alinea",
5
- version: "1.5.3",
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-MJSO2MPH.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-MJSO2MPH.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-MJSO2MPH.js";
3
+ } from "../chunks/chunk-F7QQQJ6Z.js";
4
4
  import "../chunks/chunk-NZLE2WMY.js";
5
5
 
6
6
  // src/cloud/CloudRemote.ts
@@ -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.3",
4
+ "version": "1.5.4",
5
5
  "description": "Headless git-based CMS",
6
6
  "repository": {
7
7
  "type": "git",