@signal9/era-ui 3.9.0 → 3.11.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 (57) hide show
  1. package/dist/apps/index.d.ts +19 -0
  2. package/dist/apps/index.js +19 -0
  3. package/dist/apps/notes/editor/bubble-menu.svelte.d.ts +11 -0
  4. package/dist/apps/notes/editor/bubble-menu.svelte.js +106 -0
  5. package/dist/apps/notes/editor/bubble-toolbar.svelte +42 -0
  6. package/dist/apps/notes/editor/bubble-toolbar.svelte.d.ts +22 -0
  7. package/dist/apps/notes/editor/extensions.d.ts +18 -0
  8. package/dist/apps/notes/editor/extensions.js +88 -0
  9. package/dist/apps/notes/editor/floating.d.ts +21 -0
  10. package/dist/apps/notes/editor/floating.js +44 -0
  11. package/dist/apps/notes/editor/link.d.ts +9 -0
  12. package/dist/apps/notes/editor/link.js +22 -0
  13. package/dist/apps/notes/editor/list-cleanup-rule.d.ts +14 -0
  14. package/dist/apps/notes/editor/list-cleanup-rule.js +47 -0
  15. package/dist/apps/notes/editor/slash-command.svelte.d.ts +22 -0
  16. package/dist/apps/notes/editor/slash-command.svelte.js +215 -0
  17. package/dist/apps/notes/editor/slash-menu.svelte +63 -0
  18. package/dist/apps/notes/editor/slash-menu.svelte.d.ts +23 -0
  19. package/dist/apps/notes/index.d.ts +11 -0
  20. package/dist/apps/notes/index.js +13 -0
  21. package/dist/apps/notes/markdown.d.ts +12 -0
  22. package/dist/apps/notes/markdown.js +165 -0
  23. package/dist/apps/notes/note-editor.svelte +456 -0
  24. package/dist/apps/notes/note-editor.svelte.d.ts +35 -0
  25. package/dist/apps/notes/notes-store.svelte.d.ts +64 -0
  26. package/dist/apps/notes/notes-store.svelte.js +234 -0
  27. package/dist/apps/notes/notes.svelte +377 -0
  28. package/dist/apps/notes/notes.svelte.d.ts +22 -0
  29. package/dist/apps/notes/tree.d.ts +70 -0
  30. package/dist/apps/notes/tree.js +185 -0
  31. package/dist/apps/notes/types.d.ts +49 -0
  32. package/dist/apps/notes/types.js +11 -0
  33. package/dist/dev/audit/audits/index.d.ts +2 -1
  34. package/dist/dev/audit/audits/index.js +3 -1
  35. package/dist/dev/audit/audits/resting-gap.d.ts +2 -0
  36. package/dist/dev/audit/audits/resting-gap.js +78 -0
  37. package/dist/docs/notes.md +82 -0
  38. package/dist/era-ui.css +1 -1
  39. package/dist/generated-docs/llms-full.txt +92 -1
  40. package/dist/generated-docs/llms.txt +1 -1
  41. package/dist/generated-docs/manifest.json +16 -1
  42. package/dist/generated-docs/notes.md +86 -0
  43. package/dist/generated-docs/utilities.json +1 -1
  44. package/dist/generated-docs/utilities.md +1 -1
  45. package/dist/styles/index.css +2 -1
  46. package/dist/styles/themes.css +70 -52
  47. package/dist/ui/badge/badge.svelte.d.ts +17 -17
  48. package/dist/ui/bar/bar.svelte.d.ts +11 -11
  49. package/dist/ui/button/variants.d.ts +44 -44
  50. package/dist/ui/card/card.svelte.d.ts +20 -20
  51. package/dist/ui/chip/chip.svelte.d.ts +14 -14
  52. package/dist/ui/pane/pane-root.svelte.d.ts +1 -1
  53. package/dist/ui/pane/pane.svelte.d.ts +1 -1
  54. package/dist/ui/sheet/sheet-content.svelte.d.ts +14 -14
  55. package/dist/ui/skeleton/skeleton.svelte.d.ts +11 -11
  56. package/dist/utils/index.js +11 -0
  57. package/package.json +31 -5
@@ -1,76 +1,76 @@
1
1
  export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
2
2
  variant: {
3
- filled: string;
4
- link: string;
3
+ filled: "flex justify-center shadow-(--era-shadow) hover:shadow-(--era-highlight-shadow) active:shadow-(--era-shadow-pressed) [&:active>*]:translate-x-(--era-press-sink-x) [&:active>*]:translate-y-(--era-press-sink-y)";
4
+ link: "inline-flex underline-offset-2 hover:underline";
5
5
  };
6
6
  tone: {
7
- default: string;
8
- accent: string;
9
- destructive: string;
10
- success: string;
11
- warning: string;
7
+ default: "";
8
+ accent: "";
9
+ destructive: "";
10
+ success: "";
11
+ warning: "";
12
12
  };
13
13
  size: {
14
- default: string;
15
- sm: string;
16
- xxs: string;
17
- xs: string;
18
- icon: string;
14
+ default: "";
15
+ sm: "";
16
+ xxs: "";
17
+ xs: "";
18
+ icon: "";
19
19
  };
20
20
  icon: {
21
- true: string;
21
+ true: "";
22
22
  };
23
23
  active: {
24
- true: string;
24
+ true: "";
25
25
  };
26
26
  }, undefined, "items-center gap-(--era-gap) text-body era-interactive era-text-trim", {
27
27
  variant: {
28
- filled: string;
29
- link: string;
28
+ filled: "flex justify-center shadow-(--era-shadow) hover:shadow-(--era-highlight-shadow) active:shadow-(--era-shadow-pressed) [&:active>*]:translate-x-(--era-press-sink-x) [&:active>*]:translate-y-(--era-press-sink-y)";
29
+ link: "inline-flex underline-offset-2 hover:underline";
30
30
  };
31
31
  tone: {
32
- default: string;
33
- accent: string;
34
- destructive: string;
35
- success: string;
36
- warning: string;
32
+ default: "";
33
+ accent: "";
34
+ destructive: "";
35
+ success: "";
36
+ warning: "";
37
37
  };
38
38
  size: {
39
- default: string;
40
- sm: string;
41
- xxs: string;
42
- xs: string;
43
- icon: string;
39
+ default: "";
40
+ sm: "";
41
+ xxs: "";
42
+ xs: "";
43
+ icon: "";
44
44
  };
45
45
  icon: {
46
- true: string;
46
+ true: "";
47
47
  };
48
48
  active: {
49
- true: string;
49
+ true: "";
50
50
  };
51
- }, undefined, import("tailwind-variants").TVReturnType<{
51
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
52
52
  variant: {
53
- filled: string;
54
- link: string;
53
+ filled: "flex justify-center shadow-(--era-shadow) hover:shadow-(--era-highlight-shadow) active:shadow-(--era-shadow-pressed) [&:active>*]:translate-x-(--era-press-sink-x) [&:active>*]:translate-y-(--era-press-sink-y)";
54
+ link: "inline-flex underline-offset-2 hover:underline";
55
55
  };
56
56
  tone: {
57
- default: string;
58
- accent: string;
59
- destructive: string;
60
- success: string;
61
- warning: string;
57
+ default: "";
58
+ accent: "";
59
+ destructive: "";
60
+ success: "";
61
+ warning: "";
62
62
  };
63
63
  size: {
64
- default: string;
65
- sm: string;
66
- xxs: string;
67
- xs: string;
68
- icon: string;
64
+ default: "";
65
+ sm: "";
66
+ xxs: "";
67
+ xs: "";
68
+ icon: "";
69
69
  };
70
70
  icon: {
71
- true: string;
71
+ true: "";
72
72
  };
73
73
  active: {
74
- true: string;
74
+ true: "";
75
75
  };
76
- }, undefined, "items-center gap-(--era-gap) text-body era-interactive era-text-trim", unknown, unknown, undefined>>;
76
+ }, undefined>>;
@@ -1,43 +1,43 @@
1
1
  export declare const cardVariants: import("tailwind-variants").TVReturnType<{
2
2
  tone: {
3
- elevated: string;
4
- surface: string;
5
- flat: string;
3
+ elevated: "bg-(--era-surface-bg-elevated) shadow-(--era-shadow)";
4
+ surface: "bg-(--era-surface-bg)";
5
+ flat: "";
6
6
  };
7
7
  sectioned: {
8
- true: string;
9
- false: string;
8
+ true: "p-0";
9
+ false: "px-(--era-pad-md) pt-(--era-gap) pb-(--era-pad-md)";
10
10
  };
11
11
  interactive: {
12
- true: string;
12
+ true: "cursor-pointer hover:bg-(--era-highlight) hover:shadow-(--era-highlight-shadow) focus-visible:bg-(--era-highlight) era-interactive aria-disabled:cursor-not-allowed aria-disabled:opacity-50";
13
13
  };
14
14
  }, undefined, "block w-full rounded-(--era-rd-lg) text-left text-fg", {
15
15
  tone: {
16
- elevated: string;
17
- surface: string;
18
- flat: string;
16
+ elevated: "bg-(--era-surface-bg-elevated) shadow-(--era-shadow)";
17
+ surface: "bg-(--era-surface-bg)";
18
+ flat: "";
19
19
  };
20
20
  sectioned: {
21
- true: string;
22
- false: string;
21
+ true: "p-0";
22
+ false: "px-(--era-pad-md) pt-(--era-gap) pb-(--era-pad-md)";
23
23
  };
24
24
  interactive: {
25
- true: string;
25
+ true: "cursor-pointer hover:bg-(--era-highlight) hover:shadow-(--era-highlight-shadow) focus-visible:bg-(--era-highlight) era-interactive aria-disabled:cursor-not-allowed aria-disabled:opacity-50";
26
26
  };
27
- }, undefined, import("tailwind-variants").TVReturnType<{
27
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
28
28
  tone: {
29
- elevated: string;
30
- surface: string;
31
- flat: string;
29
+ elevated: "bg-(--era-surface-bg-elevated) shadow-(--era-shadow)";
30
+ surface: "bg-(--era-surface-bg)";
31
+ flat: "";
32
32
  };
33
33
  sectioned: {
34
- true: string;
35
- false: string;
34
+ true: "p-0";
35
+ false: "px-(--era-pad-md) pt-(--era-gap) pb-(--era-pad-md)";
36
36
  };
37
37
  interactive: {
38
- true: string;
38
+ true: "cursor-pointer hover:bg-(--era-highlight) hover:shadow-(--era-highlight-shadow) focus-visible:bg-(--era-highlight) era-interactive aria-disabled:cursor-not-allowed aria-disabled:opacity-50";
39
39
  };
40
- }, undefined, "block w-full rounded-(--era-rd-lg) text-left text-fg", unknown, unknown, undefined>>;
40
+ }, undefined>>;
41
41
  import type { Snippet } from 'svelte';
42
42
  import type { HTMLAnchorAttributes, HTMLAttributes, HTMLButtonAttributes } from 'svelte/elements';
43
43
  type CardElement = HTMLDivElement | HTMLAnchorElement | HTMLButtonElement;
@@ -1,31 +1,31 @@
1
1
  export declare const chipVariants: import("tailwind-variants").TVReturnType<{
2
2
  size: {
3
- sm: string;
4
- xxs: string;
3
+ sm: "h-(--era-h-sm) min-w-(--era-h-sm) rounded-(--era-rd-sm) pl-(--era-pill-sm)";
4
+ xxs: "h-(--era-h-xxs) min-w-(--era-h-xxs) rounded-(--era-rd-xxs) pl-(--era-pill-xxs)";
5
5
  };
6
6
  dismissible: {
7
- true: string;
8
- false: string;
7
+ true: "";
8
+ false: "";
9
9
  };
10
10
  }, undefined, "inline-flex items-center bg-hover font-mono text-body leading-none text-fg shadow-(--era-shadow) era-text-trim", {
11
11
  size: {
12
- sm: string;
13
- xxs: string;
12
+ sm: "h-(--era-h-sm) min-w-(--era-h-sm) rounded-(--era-rd-sm) pl-(--era-pill-sm)";
13
+ xxs: "h-(--era-h-xxs) min-w-(--era-h-xxs) rounded-(--era-rd-xxs) pl-(--era-pill-xxs)";
14
14
  };
15
15
  dismissible: {
16
- true: string;
17
- false: string;
16
+ true: "";
17
+ false: "";
18
18
  };
19
- }, undefined, import("tailwind-variants").TVReturnType<{
19
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
20
20
  size: {
21
- sm: string;
22
- xxs: string;
21
+ sm: "h-(--era-h-sm) min-w-(--era-h-sm) rounded-(--era-rd-sm) pl-(--era-pill-sm)";
22
+ xxs: "h-(--era-h-xxs) min-w-(--era-h-xxs) rounded-(--era-rd-xxs) pl-(--era-pill-xxs)";
23
23
  };
24
24
  dismissible: {
25
- true: string;
26
- false: string;
25
+ true: "";
26
+ false: "";
27
27
  };
28
- }, undefined, "inline-flex items-center bg-hover font-mono text-body leading-none text-fg shadow-(--era-shadow) era-text-trim", unknown, unknown, undefined>>;
28
+ }, undefined>>;
29
29
  import type { Snippet } from 'svelte';
30
30
  import type { HTMLAttributes } from 'svelte/elements';
31
31
  type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
@@ -29,6 +29,6 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
29
29
  onDragEnd?: (data: DragEventData) => void;
30
30
  children?: Snippet;
31
31
  };
32
- declare const PaneRoot: import("svelte").Component<$$ComponentProps, {}, "size" | "position" | "ref">;
32
+ declare const PaneRoot: import("svelte").Component<$$ComponentProps, {}, "position" | "size" | "ref">;
33
33
  type PaneRoot = ReturnType<typeof PaneRoot>;
34
34
  export default PaneRoot;
@@ -35,6 +35,6 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
35
35
  header?: Snippet;
36
36
  children?: Snippet;
37
37
  };
38
- declare const Pane: Component<$$ComponentProps, {}, "size" | "position" | "ref">;
38
+ declare const Pane: Component<$$ComponentProps, {}, "position" | "size" | "ref">;
39
39
  type Pane = ReturnType<typeof Pane>;
40
40
  export default Pane;
@@ -1,26 +1,26 @@
1
1
  import { type PartProps } from '../../utils/index.js';
2
2
  export declare const sheetVariants: import("tailwind-variants").TVReturnType<{
3
3
  side: {
4
- top: string;
5
- bottom: string;
6
- left: string;
7
- right: string;
4
+ top: "inset-x-0 top-0 max-h-[85dvh] rounded-b-(--era-rd-lg)";
5
+ bottom: "inset-x-0 bottom-0 max-h-[85dvh] rounded-t-(--era-rd-lg)";
6
+ left: "inset-y-0 left-0 w-[min(20rem,85vw)] rounded-r-(--era-rd-lg)";
7
+ right: "inset-y-0 right-0 w-[min(20rem,85vw)] rounded-l-(--era-rd-lg)";
8
8
  };
9
9
  }, undefined, "fixed z-50 flex flex-col gap-(--era-gap) overflow-y-auto bg-(--era-surface-bg) p-(--era-pad-md) shadow-(--era-shadow-lg) glass-blur", {
10
10
  side: {
11
- top: string;
12
- bottom: string;
13
- left: string;
14
- right: string;
11
+ top: "inset-x-0 top-0 max-h-[85dvh] rounded-b-(--era-rd-lg)";
12
+ bottom: "inset-x-0 bottom-0 max-h-[85dvh] rounded-t-(--era-rd-lg)";
13
+ left: "inset-y-0 left-0 w-[min(20rem,85vw)] rounded-r-(--era-rd-lg)";
14
+ right: "inset-y-0 right-0 w-[min(20rem,85vw)] rounded-l-(--era-rd-lg)";
15
15
  };
16
- }, undefined, import("tailwind-variants").TVReturnType<{
16
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
17
17
  side: {
18
- top: string;
19
- bottom: string;
20
- left: string;
21
- right: string;
18
+ top: "inset-x-0 top-0 max-h-[85dvh] rounded-b-(--era-rd-lg)";
19
+ bottom: "inset-x-0 bottom-0 max-h-[85dvh] rounded-t-(--era-rd-lg)";
20
+ left: "inset-y-0 left-0 w-[min(20rem,85vw)] rounded-r-(--era-rd-lg)";
21
+ right: "inset-y-0 right-0 w-[min(20rem,85vw)] rounded-l-(--era-rd-lg)";
22
22
  };
23
- }, undefined, "fixed z-50 flex flex-col gap-(--era-gap) overflow-y-auto bg-(--era-surface-bg) p-(--era-pad-md) shadow-(--era-shadow-lg) glass-blur", unknown, unknown, undefined>>;
23
+ }, undefined>>;
24
24
  import { Dialog } from 'bits-ui';
25
25
  type $$ComponentProps = PartProps<Dialog.ContentProps> & {
26
26
  /** Screen edge the sheet is anchored to. */
@@ -1,22 +1,22 @@
1
1
  export declare const skeletonVariants: import("tailwind-variants").TVReturnType<{
2
2
  variant: {
3
- line: string;
4
- circle: string;
5
- block: string;
3
+ line: "h-(--era-text) w-full rounded-(--era-rd-md)";
4
+ circle: "size-(--era-h-lg) rounded-full";
5
+ block: "h-24 w-full rounded-(--era-rd-md)";
6
6
  };
7
7
  }, undefined, "animate-[skeleton-pulse_2s_ease-in-out_infinite] bg-(--era-surface-bg-elevated)", {
8
8
  variant: {
9
- line: string;
10
- circle: string;
11
- block: string;
9
+ line: "h-(--era-text) w-full rounded-(--era-rd-md)";
10
+ circle: "size-(--era-h-lg) rounded-full";
11
+ block: "h-24 w-full rounded-(--era-rd-md)";
12
12
  };
13
- }, undefined, import("tailwind-variants").TVReturnType<{
13
+ }, undefined, import("tailwind-variants").TVReturnTypeLike<{
14
14
  variant: {
15
- line: string;
16
- circle: string;
17
- block: string;
15
+ line: "h-(--era-text) w-full rounded-(--era-rd-md)";
16
+ circle: "size-(--era-h-lg) rounded-full";
17
+ block: "h-24 w-full rounded-(--era-rd-md)";
18
18
  };
19
- }, undefined, "animate-[skeleton-pulse_2s_ease-in-out_infinite] bg-(--era-surface-bg-elevated)", unknown, unknown, undefined>>;
19
+ }, undefined>>;
20
20
  import type { HTMLAttributes } from 'svelte/elements';
21
21
  type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
22
22
  ref?: HTMLDivElement | null;
@@ -13,6 +13,17 @@ import { createTV } from 'tailwind-variants';
13
13
  // names tailwind-merge knows; only era's additions to those scales are listed.
14
14
  const TIERS = ['xs', 'xxs', 'sm', 'md', 'lg'];
15
15
  const INSETS = ['inset-xxs', 'inset-sm', 'inset-md'];
16
+ // DELIBERATELY UNANNOTATED — do not restore `: ConfigExtension<string, string>`.
17
+ // This object has to satisfy two libraries at once, and since tailwind-variants
18
+ // 3.3.0 they disagree: tw-variants stopped reusing tailwind-merge's
19
+ // ConfigExtension and declares its own, whose `extend`/`override` are
20
+ // Partial<AnyConfig> where tailwind-merge's are PartialConfigGroupsPart. The two
21
+ // differ in how deeply `theme` is optional, so annotating with either one makes
22
+ // it unassignable to the other and `createTV` stops type-checking.
23
+ //
24
+ // Nothing is lost by inferring: both call sites below still validate the shape,
25
+ // so a typo'd class group is still a compile error — it just gets reported
26
+ // against TWMergeConfig instead of here.
16
27
  const twMergeConfig = {
17
28
  extend: {
18
29
  classGroups: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signal9/era-ui",
3
- "version": "3.9.0",
3
+ "version": "3.11.0",
4
4
  "scripts": {
5
5
  "dev": "vite dev --host",
6
6
  "build": "vite build && npm run prepack",
@@ -63,6 +63,16 @@
63
63
  "svelte": "./dist/os/index.js",
64
64
  "default": "./dist/os/index.js"
65
65
  },
66
+ "./apps": {
67
+ "types": "./dist/apps/index.d.ts",
68
+ "svelte": "./dist/apps/index.js",
69
+ "default": "./dist/apps/index.js"
70
+ },
71
+ "./apps/notes": {
72
+ "types": "./dist/apps/notes/index.d.ts",
73
+ "svelte": "./dist/apps/notes/index.js",
74
+ "default": "./dist/apps/notes/index.js"
75
+ },
66
76
  "./css": "./dist/era-ui.css",
67
77
  "./styles/raw": "./dist/styles/index.css",
68
78
  "./styles/themes": "./dist/styles/themes.css",
@@ -75,7 +85,7 @@
75
85
  "devDependencies": {
76
86
  "@eslint/compat": "^2.1.0",
77
87
  "@eslint/js": "^9.39.2",
78
- "@playwright/test": "^1.61.1",
88
+ "@playwright/test": "^1.62.0",
79
89
  "@semantic-release/changelog": "^6.0.3",
80
90
  "@semantic-release/exec": "^7.1.0",
81
91
  "@semantic-release/git": "^10.0.1",
@@ -87,6 +97,20 @@
87
97
  "@tailwindcss/vite": "^4.3.3",
88
98
  "@threlte/core": "^8.5.16",
89
99
  "@threlte/extras": "^9.21.0",
100
+ "@tiptap/core": "^3.29.0",
101
+ "@tiptap/extension-code-block-lowlight": "^3.29.0",
102
+ "@tiptap/extension-details": "^3.29.0",
103
+ "@tiptap/extension-highlight": "^3.29.0",
104
+ "@tiptap/extension-image": "^3.29.0",
105
+ "@tiptap/extension-placeholder": "^3.29.0",
106
+ "@tiptap/extension-table": "^3.29.0",
107
+ "@tiptap/extension-task-item": "^3.29.0",
108
+ "@tiptap/extension-task-list": "^3.29.0",
109
+ "@tiptap/extension-typography": "^3.29.0",
110
+ "@tiptap/extension-unique-id": "^3.29.0",
111
+ "@tiptap/pm": "^3.29.0",
112
+ "@tiptap/starter-kit": "^3.29.0",
113
+ "@tiptap/suggestion": "^3.29.0",
90
114
  "@types/node": "^24.13.3",
91
115
  "@types/three": "^0.184.1",
92
116
  "@xyflow/svelte": "^1.6.2",
@@ -94,17 +118,19 @@
94
118
  "eslint-config-prettier": "^10.1.8",
95
119
  "eslint-plugin-better-tailwindcss": "^4.7.0",
96
120
  "eslint-plugin-svelte": "^3.22.0",
97
- "globals": "^17.7.0",
121
+ "globals": "^17.8.0",
122
+ "lowlight": "^3.3.0",
98
123
  "prettier": "^3.9.6",
99
124
  "prettier-plugin-svelte": "^3.5.2",
100
125
  "prettier-plugin-tailwindcss": "^0.7.4",
101
126
  "publint": "^0.3.22",
102
127
  "semantic-release": "^25.0.8",
103
128
  "shiki": "^4.3.1",
104
- "svelte": "^5.56.7",
129
+ "svelte": "^5.56.8",
105
130
  "svelte-check": "^4.7.3",
106
131
  "tailwindcss": "^4.1.18",
107
132
  "three": "^0.184.0",
133
+ "tiptap-markdown": "^0.9.0",
108
134
  "typescript": "^5.9.3",
109
135
  "typescript-eslint": "^8.65.0",
110
136
  "vite": "^7.3.6",
@@ -130,7 +156,7 @@
130
156
  "dompurify": "^3.4.12",
131
157
  "marked": "^15.0.12",
132
158
  "tailwind-merge": "^3.6.0",
133
- "tailwind-variants": "^3.2.2",
159
+ "tailwind-variants": "^3.3.0",
134
160
  "vidstack": "^0.6.15"
135
161
  },
136
162
  "allowScripts": {