@justanarthur/modo-ui 0.5.0 → 0.5.1

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.
package/dist/base.css CHANGED
@@ -741,6 +741,44 @@ html.transitioning *::after {
741
741
  }
742
742
  }
743
743
 
744
+ /* In a ScrollArea, Base UI writes how far each edge has left to scroll
745
+ (--scroll-area-overflow-*), so the fade reads that in every browser,
746
+ Firefox included. */
747
+ [data-scroll-edges].scroll-fade {
748
+ animation: none;
749
+ -webkit-mask-image: linear-gradient(
750
+ to bottom,
751
+ transparent 0,
752
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-y-start)),
753
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-y-end))),
754
+ transparent 100%
755
+ );
756
+ mask-image: linear-gradient(
757
+ to bottom,
758
+ transparent 0,
759
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-y-start)),
760
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-y-end))),
761
+ transparent 100%
762
+ );
763
+ }
764
+ [data-scroll-edges].scroll-fade-x {
765
+ animation: none;
766
+ -webkit-mask-image: linear-gradient(
767
+ to right,
768
+ transparent 0,
769
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-x-start)),
770
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-x-end))),
771
+ transparent 100%
772
+ );
773
+ mask-image: linear-gradient(
774
+ to right,
775
+ transparent 0,
776
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-x-start)),
777
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-x-end))),
778
+ transparent 100%
779
+ );
780
+ }
781
+
744
782
  /*
745
783
  * Ported from Fluid Functionalism — github.com/mickadesign/fluid-functionalism
746
784
  * `app/globals.css` (`.scroll-divider`) @ b3587bdbd83fc66c2a6aae3817ffb856cb09260b
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  SidebarApp2
3
- } from "../../shared/components-5pnw8183.js";
4
- import"../../shared/components-qmmjx1qw.js";
3
+ } from "../../shared/components-n42c79bz.js";
4
+ import"../../shared/components-w90endve.js";
5
5
  import"../../shared/components-c6s6b43g.js";
6
6
  import"../../shared/components-raknhppb.js";
7
7
  import"../../shared/components-rr7a6ja9.js";
8
8
  import"../../shared/components-ng72k97e.js";
9
9
  import"../../shared/components-zfnmn5d4.js";
10
10
  import"../../shared/components-3ky44908.js";
11
- import"../../shared/components-a86dytt0.js";
11
+ import"../../shared/components-ypp01w3p.js";
12
12
  import"../../shared/components-5xc2j8jz.js";
13
13
  import"../../shared/components-zrkzcayz.js";
14
14
  import"../../shared/components-0q0sqfh4.js";
@@ -21,7 +21,7 @@ import"../../shared/components-b2wyq2cq.js";
21
21
  import"../../shared/components-n7mjr357.js";
22
22
  import"../../shared/components-men63rwj.js";
23
23
  import"../../shared/components-0sn7ypjw.js";
24
- import"../../shared/components-hawvy2qz.js";
24
+ import"../../shared/components-b0eac83j.js";
25
25
  import"../../shared/components-cv16mryv.js";
26
26
  import"../../shared/components-vc7vq5nz.js";
27
27
  import"../../shared/components-zx6b6yby.js";
@@ -7,7 +7,7 @@ import {
7
7
  ComboboxItem2,
8
8
  ComboboxEmpty2,
9
9
  combobox_default
10
- } from "../../../shared/components-473g814w.js";
10
+ } from "../../../shared/components-w1r67ag9.js";
11
11
  import {
12
12
  fieldVariants
13
13
  } from "../../../shared/components-raknhppb.js";
@@ -21,7 +21,7 @@ import"../../../shared/components-hqeq3w9q.js";
21
21
  import"../../../shared/components-jjw69c4c.js";
22
22
  import"../../../shared/components-men63rwj.js";
23
23
  import"../../../shared/components-0sn7ypjw.js";
24
- import"../../../shared/components-hawvy2qz.js";
24
+ import"../../../shared/components-b0eac83j.js";
25
25
  import"../../../shared/components-cv16mryv.js";
26
26
  import"../../../shared/components-zx6b6yby.js";
27
27
  import"../../../shared/components-ezxhrmer.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Search2,
3
3
  search_default
4
- } from "../../../shared/components-xxvdw7k1.js";
5
- import"../../../shared/components-39vmfq9s.js";
4
+ } from "../../../shared/components-fzrq6tr3.js";
5
+ import"../../../shared/components-4700p9kz.js";
6
6
  import"../../../shared/components-zfnmn5d4.js";
7
7
  import"../../../shared/components-3ky44908.js";
8
8
  import"../../../shared/components-zrkzcayz.js";
@@ -15,7 +15,7 @@ import"../../../shared/components-b2wyq2cq.js";
15
15
  import"../../../shared/components-n7mjr357.js";
16
16
  import"../../../shared/components-men63rwj.js";
17
17
  import"../../../shared/components-0sn7ypjw.js";
18
- import"../../../shared/components-hawvy2qz.js";
18
+ import"../../../shared/components-b0eac83j.js";
19
19
  import"../../../shared/components-cv16mryv.js";
20
20
  import"../../../shared/components-zx6b6yby.js";
21
21
  import"../../../shared/components-ezxhrmer.js";
@@ -8,7 +8,7 @@ import {
8
8
  SelectLabel2,
9
9
  SelectSeparator2,
10
10
  select_default
11
- } from "../../../shared/components-frw34b65.js";
11
+ } from "../../../shared/components-2ecg8svx.js";
12
12
  import"../../../shared/components-0q0sqfh4.js";
13
13
  import"../../../shared/components-kvr7f9hy.js";
14
14
  import"../../../shared/components-chacnk61.js";
@@ -17,7 +17,7 @@ import"../../../shared/components-hqeq3w9q.js";
17
17
  import"../../../shared/components-jjw69c4c.js";
18
18
  import"../../../shared/components-men63rwj.js";
19
19
  import"../../../shared/components-0sn7ypjw.js";
20
- import"../../../shared/components-hawvy2qz.js";
20
+ import"../../../shared/components-b0eac83j.js";
21
21
  import"../../../shared/components-cv16mryv.js";
22
22
  import"../../../shared/components-zx6b6yby.js";
23
23
  import"../../../shared/components-ezxhrmer.js";
@@ -36,7 +36,7 @@ import {
36
36
  Sidebar2,
37
37
  SidebarContent2,
38
38
  sidebar_default
39
- } from "../../../shared/components-qmmjx1qw.js";
39
+ } from "../../../shared/components-w90endve.js";
40
40
  import"../../../shared/components-c6s6b43g.js";
41
41
  import"../../../shared/components-raknhppb.js";
42
42
  import"../../../shared/components-rr7a6ja9.js";
@@ -54,7 +54,7 @@ import"../../../shared/components-b2wyq2cq.js";
54
54
  import"../../../shared/components-n7mjr357.js";
55
55
  import"../../../shared/components-men63rwj.js";
56
56
  import"../../../shared/components-0sn7ypjw.js";
57
- import"../../../shared/components-hawvy2qz.js";
57
+ import"../../../shared/components-b0eac83j.js";
58
58
  import"../../../shared/components-cv16mryv.js";
59
59
  import"../../../shared/components-zx6b6yby.js";
60
60
  import"../../../shared/components-ezxhrmer.js";
@@ -7,7 +7,7 @@ import {
7
7
  CommandContent2,
8
8
  Command2,
9
9
  command_default
10
- } from "../../../shared/components-39vmfq9s.js";
10
+ } from "../../../shared/components-4700p9kz.js";
11
11
  import"../../../shared/components-zfnmn5d4.js";
12
12
  import"../../../shared/components-3ky44908.js";
13
13
  import"../../../shared/components-zrkzcayz.js";
@@ -20,7 +20,7 @@ import"../../../shared/components-b2wyq2cq.js";
20
20
  import"../../../shared/components-n7mjr357.js";
21
21
  import"../../../shared/components-men63rwj.js";
22
22
  import"../../../shared/components-0sn7ypjw.js";
23
- import"../../../shared/components-hawvy2qz.js";
23
+ import"../../../shared/components-b0eac83j.js";
24
24
  import"../../../shared/components-cv16mryv.js";
25
25
  import"../../../shared/components-zx6b6yby.js";
26
26
  import"../../../shared/components-ezxhrmer.js";
@@ -3,8 +3,8 @@ import {
3
3
  ContextMenuContent2,
4
4
  ContextMenu2,
5
5
  context_menu_default
6
- } from "../../../shared/components-ar66gnt0.js";
7
- import"../../../shared/components-a86dytt0.js";
6
+ } from "../../../shared/components-2ph6t61s.js";
7
+ import"../../../shared/components-ypp01w3p.js";
8
8
  import"../../../shared/components-5xc2j8jz.js";
9
9
  import"../../../shared/components-zrkzcayz.js";
10
10
  import"../../../shared/components-0q0sqfh4.js";
@@ -16,7 +16,7 @@ import"../../../shared/components-jjw69c4c.js";
16
16
  import"../../../shared/components-n7mjr357.js";
17
17
  import"../../../shared/components-men63rwj.js";
18
18
  import"../../../shared/components-0sn7ypjw.js";
19
- import"../../../shared/components-hawvy2qz.js";
19
+ import"../../../shared/components-b0eac83j.js";
20
20
  import"../../../shared/components-cv16mryv.js";
21
21
  import"../../../shared/components-vc7vq5nz.js";
22
22
  import"../../../shared/components-zx6b6yby.js";
@@ -11,7 +11,7 @@ import {
11
11
  DropdownLabel2,
12
12
  DropdownSeparator2,
13
13
  dropdown_default
14
- } from "../../../shared/components-a86dytt0.js";
14
+ } from "../../../shared/components-ypp01w3p.js";
15
15
  import"../../../shared/components-5xc2j8jz.js";
16
16
  import"../../../shared/components-zrkzcayz.js";
17
17
  import"../../../shared/components-0q0sqfh4.js";
@@ -23,7 +23,7 @@ import"../../../shared/components-jjw69c4c.js";
23
23
  import"../../../shared/components-n7mjr357.js";
24
24
  import"../../../shared/components-men63rwj.js";
25
25
  import"../../../shared/components-0sn7ypjw.js";
26
- import"../../../shared/components-hawvy2qz.js";
26
+ import"../../../shared/components-b0eac83j.js";
27
27
  import"../../../shared/components-cv16mryv.js";
28
28
  import"../../../shared/components-vc7vq5nz.js";
29
29
  import"../../../shared/components-zx6b6yby.js";
package/dist/index.js CHANGED
@@ -21,7 +21,7 @@ import"./shared/components-n7mjr357.js";
21
21
  import {
22
22
  ScrollArea2,
23
23
  ScrollBar2
24
- } from "./shared/components-hawvy2qz.js";
24
+ } from "./shared/components-b0eac83j.js";
25
25
  import {
26
26
  MorphPart2
27
27
  } from "./shared/components-0q0sqfh4.js";
@@ -98,7 +98,7 @@ import {
98
98
  SidebarMenuSubButton2,
99
99
  Sidebar2,
100
100
  SidebarContent2
101
- } from "./shared/components-qmmjx1qw.js";
101
+ } from "./shared/components-w90endve.js";
102
102
  import"./shared/components-chacnk61.js";
103
103
  import {
104
104
  FluidHoverHighlight2
@@ -126,10 +126,10 @@ import {
126
126
  DropdownContent2,
127
127
  DropdownLabel2,
128
128
  DropdownSeparator2
129
- } from "./shared/components-a86dytt0.js";
129
+ } from "./shared/components-ypp01w3p.js";
130
130
  import {
131
131
  SidebarApp2
132
- } from "./shared/components-5pnw8183.js";
132
+ } from "./shared/components-n42c79bz.js";
133
133
  import {
134
134
  FileThumbnail2,
135
135
  InputMessage2
@@ -193,7 +193,7 @@ import {
193
193
  ComboboxList2,
194
194
  ComboboxItem2,
195
195
  ComboboxEmpty2
196
- } from "./shared/components-473g814w.js";
196
+ } from "./shared/components-w1r67ag9.js";
197
197
  import"./shared/components-gz8zf3ec.js";
198
198
  import {
199
199
  Calendar2
@@ -232,10 +232,10 @@ import {
232
232
  CommandTrigger2,
233
233
  CommandContent2,
234
234
  Command2
235
- } from "./shared/components-39vmfq9s.js";
235
+ } from "./shared/components-4700p9kz.js";
236
236
  import {
237
237
  Search2
238
- } from "./shared/components-xxvdw7k1.js";
238
+ } from "./shared/components-fzrq6tr3.js";
239
239
  import {
240
240
  Select2,
241
241
  triggerVariants2,
@@ -245,7 +245,7 @@ import {
245
245
  SelectGroup2,
246
246
  SelectLabel2,
247
247
  SelectSeparator2
248
- } from "./shared/components-frw34b65.js";
248
+ } from "./shared/components-2ecg8svx.js";
249
249
  import {
250
250
  Switch2,
251
251
  SwitchGroup2
@@ -272,7 +272,7 @@ import {
272
272
  ContextMenuItem2,
273
273
  ContextMenuContent2,
274
274
  ContextMenu2
275
- } from "./shared/components-ar66gnt0.js";
275
+ } from "./shared/components-2ph6t61s.js";
276
276
  import {
277
277
  PopoverTrigger2,
278
278
  PopoverClose2,
@@ -301,7 +301,7 @@ import {
301
301
  } from "./shared/components-1434p1mh.js";
302
302
  import {
303
303
  Code2
304
- } from "./shared/components-s2bz1xpk.js";
304
+ } from "./shared/components-11da9ajg.js";
305
305
  import"./shared/components-vfbhxf5r.js";
306
306
  import {
307
307
  FluidHoverItem2,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Code2
3
- } from "../../shared/components-s2bz1xpk.js";
4
- import"../../shared/components-hawvy2qz.js";
3
+ } from "../../shared/components-11da9ajg.js";
4
+ import"../../shared/components-b0eac83j.js";
5
5
  import"../../shared/components-cv16mryv.js";
6
6
  import"../../shared/components-zx6b6yby.js";
7
7
  import"../../shared/components-ezxhrmer.js";
@@ -2,7 +2,7 @@ import {
2
2
  ScrollArea2,
3
3
  ScrollBar2,
4
4
  scroll_area_default
5
- } from "../../shared/components-hawvy2qz.js";
5
+ } from "../../shared/components-b0eac83j.js";
6
6
  import"../../shared/components-cv16mryv.js";
7
7
  import"../../shared/components-ezxhrmer.js";
8
8
  export {
@@ -7,7 +7,7 @@ import {
7
7
  } from "./components-ezxhrmer.js";
8
8
  import {
9
9
  scroll_area_default
10
- } from "./components-hawvy2qz.js";
10
+ } from "./components-b0eac83j.js";
11
11
 
12
12
  // primitives/code/index.tsx
13
13
  import { Fragment } from "react";
@@ -32,7 +32,7 @@ import {
32
32
  } from "./components-59efxjd9.js";
33
33
  import {
34
34
  ScrollArea2
35
- } from "./components-hawvy2qz.js";
35
+ } from "./components-b0eac83j.js";
36
36
  import {
37
37
  SizeProvider2
38
38
  } from "./components-jjw69c4c.js";
@@ -31,7 +31,7 @@ import {
31
31
  } from "./components-59efxjd9.js";
32
32
  import {
33
33
  ScrollArea2
34
- } from "./components-hawvy2qz.js";
34
+ } from "./components-b0eac83j.js";
35
35
  import {
36
36
  SizeProvider2
37
37
  } from "./components-jjw69c4c.js";
@@ -40,7 +40,7 @@ import {
40
40
  MenuItem2,
41
41
  DropdownLabel2,
42
42
  DropdownSeparator2
43
- } from "./components-a86dytt0.js";
43
+ } from "./components-ypp01w3p.js";
44
44
  import {
45
45
  popupScrollAreaClass,
46
46
  popupViewportClass,
@@ -19,7 +19,7 @@ import {
19
19
  } from "./components-59efxjd9.js";
20
20
  import {
21
21
  ScrollArea2
22
- } from "./components-hawvy2qz.js";
22
+ } from "./components-b0eac83j.js";
23
23
  import {
24
24
  DialogTrigger2,
25
25
  DialogContent2,
@@ -64,6 +64,7 @@ var ScrollArea2 = forwardRef(({ className, children, viewportClassName, orientat
64
64
  children: [
65
65
  /* @__PURE__ */ jsx(ScrollAreaPrimitive.Viewport, {
66
66
  "data-slot": "scroll-area-viewport",
67
+ "data-scroll-edges": "",
67
68
  className: cn2("size-full rounded-[inherit]", viewportClassName),
68
69
  children: /* @__PURE__ */ jsx(ScrollAreaPrimitive.Content, {
69
70
  children
@@ -33,7 +33,7 @@ import {
33
33
  CommandListRoot2,
34
34
  CommandShortcut2,
35
35
  CommandList2
36
- } from "./components-39vmfq9s.js";
36
+ } from "./components-4700p9kz.js";
37
37
  import {
38
38
  spring2
39
39
  } from "./components-1v7rxytx.js";
@@ -23,13 +23,13 @@ import {
23
23
  SidebarMenuItem2,
24
24
  SidebarMenuButton2,
25
25
  sidebar_default
26
- } from "./components-qmmjx1qw.js";
26
+ } from "./components-w90endve.js";
27
27
  import {
28
28
  MenuItem2,
29
29
  DropdownMenu2,
30
30
  DropdownTrigger2,
31
31
  DropdownContent2
32
- } from "./components-a86dytt0.js";
32
+ } from "./components-ypp01w3p.js";
33
33
 
34
34
  // blocks/sidebar-app/index.tsx
35
35
  import { useState } from "react";
@@ -44,7 +44,7 @@ import {
44
44
  } from "./components-5xc2j8jz.js";
45
45
  import {
46
46
  ScrollArea2
47
- } from "./components-hawvy2qz.js";
47
+ } from "./components-b0eac83j.js";
48
48
  import {
49
49
  SizeProvider2
50
50
  } from "./components-jjw69c4c.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./components-cv16mryv.js";
10
10
  import {
11
11
  ScrollArea2
12
- } from "./components-hawvy2qz.js";
12
+ } from "./components-b0eac83j.js";
13
13
  import {
14
14
  surfaceClasses2,
15
15
  useSurface2,
@@ -39,7 +39,7 @@ import {
39
39
  } from "./components-5xc2j8jz.js";
40
40
  import {
41
41
  ScrollArea2
42
- } from "./components-hawvy2qz.js";
42
+ } from "./components-b0eac83j.js";
43
43
  import {
44
44
  SizeProvider2
45
45
  } from "./components-jjw69c4c.js";
package/dist/styles.css CHANGED
@@ -59,7 +59,7 @@
59
59
  }
60
60
  /* layer: theme */
61
61
  @layer theme{
62
- :root, :host { --default-transition-timingFunction: cubic-bezier(0.4, 0, 0.2, 1); --default-transition-duration: 150ms; --spacing: 0.25rem; --ease-DEFAULT: cubic-bezier(0.4, 0, 0.2, 1); --font-sans: 'Inter Variable', ui-sans-serif, system-ui, sans-serif; --radius-md: 0.375rem; --radius-DEFAULT: 0.25rem; --radius-none: 0; --leading-relaxed: 1.625; --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; --leading-none: 1; --ease-out: cubic-bezier(0, 0, 0.2, 1); --radius-sm: 0.25rem; --leading-snug: 1.375; --leading-normal: 1.5; --radius-xs: 0.125rem; --tracking-wide: 0.025em; --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace; --leading-tight: 1.25; --default-font-family: var(--font-sans); --default-monoFont-family: var(--font-mono); }
62
+ :root, :host { --default-transition-timingFunction: cubic-bezier(0.4, 0, 0.2, 1); --default-transition-duration: 150ms; --spacing: 0.25rem; --radius-xl: 0.75rem; --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace; --leading-relaxed: 1.625; --ease-DEFAULT: cubic-bezier(0.4, 0, 0.2, 1); --font-sans: 'Inter Variable', ui-sans-serif, system-ui, sans-serif; --ease-out: cubic-bezier(0, 0, 0.2, 1); --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); --radius-2xl: 1rem; --radius-3xl: 1.5rem; --radius-DEFAULT: 0.25rem; --radius-lg: 0.5rem; --radius-none: 0; --leading-none: 1; --radius-md: 0.375rem; --radius-sm: 0.25rem; --leading-snug: 1.375; --leading-normal: 1.5; --radius-xs: 0.125rem; --tracking-wide: 0.025em; --leading-tight: 1.25; --default-font-family: var(--font-sans); --default-monoFont-family: var(--font-mono); }
63
63
  }
64
64
  /* layer: base */
65
65
  @layer base{
@@ -1696,6 +1696,44 @@ html.transitioning *::after {
1696
1696
  }
1697
1697
  }
1698
1698
 
1699
+ /* In a ScrollArea, Base UI writes how far each edge has left to scroll
1700
+ (--scroll-area-overflow-*), so the fade reads that in every browser,
1701
+ Firefox included. */
1702
+ [data-scroll-edges].scroll-fade {
1703
+ animation: none;
1704
+ -webkit-mask-image: linear-gradient(
1705
+ to bottom,
1706
+ transparent 0,
1707
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-y-start)),
1708
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-y-end))),
1709
+ transparent 100%
1710
+ );
1711
+ mask-image: linear-gradient(
1712
+ to bottom,
1713
+ transparent 0,
1714
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-y-start)),
1715
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-y-end))),
1716
+ transparent 100%
1717
+ );
1718
+ }
1719
+ [data-scroll-edges].scroll-fade-x {
1720
+ animation: none;
1721
+ -webkit-mask-image: linear-gradient(
1722
+ to right,
1723
+ transparent 0,
1724
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-x-start)),
1725
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-x-end))),
1726
+ transparent 100%
1727
+ );
1728
+ mask-image: linear-gradient(
1729
+ to right,
1730
+ transparent 0,
1731
+ #000 min(var(--scroll-fade-size), var(--scroll-area-overflow-x-start)),
1732
+ #000 calc(100% - min(var(--scroll-fade-size), var(--scroll-area-overflow-x-end))),
1733
+ transparent 100%
1734
+ );
1735
+ }
1736
+
1699
1737
  /*
1700
1738
  * Ported from Fluid Functionalism — github.com/mickadesign/fluid-functionalism
1701
1739
  * `app/globals.css` (`.scroll-divider`) @ b3587bdbd83fc66c2a6aae3817ffb856cb09260b
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@justanarthur/modo-ui",
3
3
  "type": "module",
4
- "version": "0.5.0",
4
+ "version": "0.5.1",
5
5
  "description": "Fluid Functionalism (Base UI flavor, MIT © 2026 Micka Touillaud) ported to UnoCSS: motion springs, fluid hover, a two-step size ladder and an eight-level elevated surface system. Documented with modo.",
6
6
  "license": "MIT",
7
7
  "keywords": [