omnidesign 1.0.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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/QUICKREF.md +150 -0
  3. package/README.md +576 -0
  4. package/bin/cli.js +390 -0
  5. package/bin/detect-ide.js +50 -0
  6. package/bin/install.js +8 -0
  7. package/logo.jpg +0 -0
  8. package/package.json +84 -0
  9. package/recipes/components/README.md +29 -0
  10. package/recipes/components/agent-card.md +314 -0
  11. package/recipes/components/ai-chat.md +252 -0
  12. package/recipes/components/bento-grid.md +186 -0
  13. package/recipes/components/code-block.md +503 -0
  14. package/recipes/components/file-upload.md +483 -0
  15. package/recipes/components/forms.md +238 -0
  16. package/recipes/components/hero-section.md +161 -0
  17. package/recipes/components/navbar.md +214 -0
  18. package/recipes/components/prompt-input.md +293 -0
  19. package/recipes/components/thinking-indicator.md +372 -0
  20. package/recipes/motion/README.md +3 -0
  21. package/recipes/motion/motion-system.md +437 -0
  22. package/recipes/patterns/README.md +3 -0
  23. package/skills/aider/omnidesign.md +67 -0
  24. package/skills/amp/SKILL.md +114 -0
  25. package/skills/antigravity/SKILL.md +114 -0
  26. package/skills/claude/omnidesign.md +111 -0
  27. package/skills/continue/omnidesign.yaml +29 -0
  28. package/skills/cursor/omnidesign.md +110 -0
  29. package/skills/kilo/SKILL.md +114 -0
  30. package/skills/opencode/omnidesign.md +110 -0
  31. package/skills/vscode/package.json +66 -0
  32. package/skills/zed/omnidesign.json +7 -0
  33. package/tokens/motion/README.md +3 -0
  34. package/tokens/primitives/README.md +3 -0
  35. package/tokens/primitives/color.json +219 -0
  36. package/tokens/primitives/motion.json +56 -0
  37. package/tokens/primitives/radii.json +37 -0
  38. package/tokens/primitives/shadows.json +34 -0
  39. package/tokens/primitives/spacing.json +67 -0
  40. package/tokens/primitives/typography.json +127 -0
  41. package/tokens/semantic/README.md +3 -0
  42. package/tokens/semantic/color.json +114 -0
  43. package/tokens/semantic/motion.json +44 -0
  44. package/tokens/semantic/radii.json +29 -0
  45. package/tokens/semantic/shadows.json +24 -0
  46. package/tokens/semantic/spacing.json +69 -0
  47. package/tokens/semantic/typography.json +118 -0
  48. package/tokens/shadows/README.md +3 -0
  49. package/tokens/themes/README.md +3 -0
  50. package/tokens/themes/berry.json +143 -0
  51. package/tokens/themes/brutalist.json +143 -0
  52. package/tokens/themes/coral.json +143 -0
  53. package/tokens/themes/corporate.json +143 -0
  54. package/tokens/themes/cream.json +143 -0
  55. package/tokens/themes/cyberpunk.json +143 -0
  56. package/tokens/themes/daylight.json +143 -0
  57. package/tokens/themes/deep-space.json +143 -0
  58. package/tokens/themes/forest.json +143 -0
  59. package/tokens/themes/graphite.json +143 -0
  60. package/tokens/themes/lavender.json +143 -0
  61. package/tokens/themes/midnight.json +143 -0
  62. package/tokens/themes/mint.json +143 -0
  63. package/tokens/themes/navy.json +143 -0
  64. package/tokens/themes/noir.json +143 -0
  65. package/tokens/themes/obsidian.json +143 -0
  66. package/tokens/themes/ocean.json +143 -0
  67. package/tokens/themes/paper.json +143 -0
  68. package/tokens/themes/ruby.json +143 -0
  69. package/tokens/themes/slate.json +143 -0
  70. package/tokens/themes/snow.json +143 -0
  71. package/tokens/themes/solar.json +143 -0
  72. package/tokens/themes/spring.json +143 -0
  73. package/tokens/themes/starry-night.json +143 -0
  74. package/tokens/themes/sunset.json +143 -0
  75. package/tokens/typography/FONT_GUIDE.md +381 -0
  76. package/tokens/typography/README.md +37 -0
  77. package/tokens/typography/font-collection.json +221 -0
@@ -0,0 +1,44 @@
1
+ {
2
+ "motion": {
3
+ "hover": {
4
+ "$type": "transition",
5
+ "$value": {
6
+ "duration": "{duration.fast}",
7
+ "easing": "{easing.easeOut}"
8
+ },
9
+ "$description": "Subtle feedback for hover interactions"
10
+ },
11
+ "enter": {
12
+ "$type": "transition",
13
+ "$value": {
14
+ "duration": "{duration.normal}",
15
+ "easing": "{easing.easeOut}"
16
+ },
17
+ "$description": "Elements appearing on screen"
18
+ },
19
+ "exit": {
20
+ "$type": "transition",
21
+ "$value": {
22
+ "duration": "{duration.fast}",
23
+ "easing": "{easing.easeIn}"
24
+ },
25
+ "$description": "Elements leaving the screen"
26
+ },
27
+ "page": {
28
+ "$type": "transition",
29
+ "$value": {
30
+ "duration": "{duration.slow}",
31
+ "easing": "{easing.easeInOut}"
32
+ },
33
+ "$description": "Page transitions"
34
+ },
35
+ "spring": {
36
+ "$type": "transition",
37
+ "$value": {
38
+ "duration": "{duration.normal}",
39
+ "easing": "{easing.spring}"
40
+ },
41
+ "$description": "Bouncy interactions with overshoot"
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "radius": {
3
+ "button": {
4
+ "$type": "dimension",
5
+ "$value": "{radii.md}",
6
+ "$description": "Button corner radius"
7
+ },
8
+ "input": {
9
+ "$type": "dimension",
10
+ "$value": "{radii.md}",
11
+ "$description": "Form input corner radius"
12
+ },
13
+ "card": {
14
+ "$type": "dimension",
15
+ "$value": "{radii.lg}",
16
+ "$description": "Card container corner radius"
17
+ },
18
+ "modal": {
19
+ "$type": "dimension",
20
+ "$value": "{radii.xl}",
21
+ "$description": "Modal container corner radius"
22
+ },
23
+ "badge": {
24
+ "$type": "dimension",
25
+ "$value": "{radii.full}",
26
+ "$description": "Pill badge corner radius"
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "shadow": {
3
+ "card": {
4
+ "$type": "shadow",
5
+ "$value": "{shadow.md}",
6
+ "$description": "Card elevation shadow"
7
+ },
8
+ "dropdown": {
9
+ "$type": "shadow",
10
+ "$value": "{shadow.lg}",
11
+ "$description": "Dropdown menu elevation shadow"
12
+ },
13
+ "modal": {
14
+ "$type": "shadow",
15
+ "$value": "{shadow.xl}",
16
+ "$description": "Modal dialog elevation shadow"
17
+ },
18
+ "focus": {
19
+ "$type": "shadow",
20
+ "$value": "{shadow.glow.blue}",
21
+ "$description": "Focus ring glow shadow"
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "space": {
3
+ "sectionY": {
4
+ "$type": "dimension",
5
+ "$value": "{spacing.16}",
6
+ "$description": "Vertical section padding"
7
+ },
8
+ "sectionX": {
9
+ "$type": "dimension",
10
+ "$value": "{spacing.6}",
11
+ "$description": "Horizontal section padding"
12
+ },
13
+ "cardPadding": {
14
+ "$type": "dimension",
15
+ "$value": "{spacing.6}",
16
+ "$description": "Card internal padding"
17
+ },
18
+ "cardGap": {
19
+ "$type": "dimension",
20
+ "$value": "{spacing.4}",
21
+ "$description": "Gap between card elements"
22
+ },
23
+ "stackSm": {
24
+ "$type": "dimension",
25
+ "$value": "{spacing.2}",
26
+ "$description": "Small vertical stack spacing"
27
+ },
28
+ "stackMd": {
29
+ "$type": "dimension",
30
+ "$value": "{spacing.4}",
31
+ "$description": "Medium vertical stack spacing"
32
+ },
33
+ "stackLg": {
34
+ "$type": "dimension",
35
+ "$value": "{spacing.6}",
36
+ "$description": "Large vertical stack spacing"
37
+ },
38
+ "inlineSm": {
39
+ "$type": "dimension",
40
+ "$value": "{spacing.2}",
41
+ "$description": "Small horizontal inline spacing"
42
+ },
43
+ "inlineMd": {
44
+ "$type": "dimension",
45
+ "$value": "{spacing.4}",
46
+ "$description": "Medium horizontal inline spacing"
47
+ },
48
+ "inlineLg": {
49
+ "$type": "dimension",
50
+ "$value": "{spacing.6}",
51
+ "$description": "Large horizontal inline spacing"
52
+ },
53
+ "formGap": {
54
+ "$type": "dimension",
55
+ "$value": "{spacing.4}",
56
+ "$description": "Gap between form fields"
57
+ },
58
+ "inputPadding": {
59
+ "$type": "dimension",
60
+ "$value": "{spacing.3}",
61
+ "$description": "Input field internal padding"
62
+ },
63
+ "containerMax": {
64
+ "$type": "dimension",
65
+ "$value": "{spacing.24}",
66
+ "$description": "Max-width for content containers (converted to rem in usage)"
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,118 @@
1
+ {
2
+ "heading": {
3
+ "hero": {
4
+ "$type": "typography",
5
+ "$value": {
6
+ "fontFamily": "{fontFamily.sans}",
7
+ "fontSize": "{fontSize.6xl}",
8
+ "fontWeight": "{fontWeight.bold}",
9
+ "lineHeight": "{lineHeight.tight}",
10
+ "letterSpacing": "{letterSpacing.tight}"
11
+ },
12
+ "$description": "Hero heading typography for landing pages"
13
+ },
14
+ "page": {
15
+ "$type": "typography",
16
+ "$value": {
17
+ "fontFamily": "{fontFamily.sans}",
18
+ "fontSize": "{fontSize.4xl}",
19
+ "fontWeight": "{fontWeight.bold}",
20
+ "lineHeight": "{lineHeight.tight}",
21
+ "letterSpacing": "{letterSpacing.tight}"
22
+ },
23
+ "$description": "Page title typography"
24
+ },
25
+ "section": {
26
+ "$type": "typography",
27
+ "$value": {
28
+ "fontFamily": "{fontFamily.sans}",
29
+ "fontSize": "{fontSize.2xl}",
30
+ "fontWeight": "{fontWeight.semibold}",
31
+ "lineHeight": "{lineHeight.snug}",
32
+ "letterSpacing": "{letterSpacing.tight}"
33
+ },
34
+ "$description": "Section heading typography"
35
+ },
36
+ "card": {
37
+ "$type": "typography",
38
+ "$value": {
39
+ "fontFamily": "{fontFamily.sans}",
40
+ "fontSize": "{fontSize.xl}",
41
+ "fontWeight": "{fontWeight.semibold}",
42
+ "lineHeight": "{lineHeight.snug}",
43
+ "letterSpacing": "{letterSpacing.normal}"
44
+ },
45
+ "$description": "Card heading typography"
46
+ }
47
+ },
48
+ "body": {
49
+ "default": {
50
+ "$type": "typography",
51
+ "$value": {
52
+ "fontFamily": "{fontFamily.sans}",
53
+ "fontSize": "{fontSize.base}",
54
+ "fontWeight": "{fontWeight.normal}",
55
+ "lineHeight": "{lineHeight.normal}",
56
+ "letterSpacing": "{letterSpacing.normal}"
57
+ },
58
+ "$description": "Default body text typography"
59
+ },
60
+ "small": {
61
+ "$type": "typography",
62
+ "$value": {
63
+ "fontFamily": "{fontFamily.sans}",
64
+ "fontSize": "{fontSize.sm}",
65
+ "fontWeight": "{fontWeight.normal}",
66
+ "lineHeight": "{lineHeight.normal}",
67
+ "letterSpacing": "{letterSpacing.normal}"
68
+ },
69
+ "$description": "Small body text typography"
70
+ },
71
+ "large": {
72
+ "$type": "typography",
73
+ "$value": {
74
+ "fontFamily": "{fontFamily.sans}",
75
+ "fontSize": "{fontSize.lg}",
76
+ "fontWeight": "{fontWeight.normal}",
77
+ "lineHeight": "{lineHeight.relaxed}",
78
+ "letterSpacing": "{letterSpacing.normal}"
79
+ },
80
+ "$description": "Large body text typography"
81
+ }
82
+ },
83
+ "ui": {
84
+ "label": {
85
+ "$type": "typography",
86
+ "$value": {
87
+ "fontFamily": "{fontFamily.sans}",
88
+ "fontSize": "{fontSize.sm}",
89
+ "fontWeight": "{fontWeight.medium}",
90
+ "lineHeight": "{lineHeight.normal}",
91
+ "letterSpacing": "{letterSpacing.normal}"
92
+ },
93
+ "$description": "UI label typography"
94
+ },
95
+ "button": {
96
+ "$type": "typography",
97
+ "$value": {
98
+ "fontFamily": "{fontFamily.sans}",
99
+ "fontSize": "{fontSize.base}",
100
+ "fontWeight": "{fontWeight.medium}",
101
+ "lineHeight": "{lineHeight.normal}",
102
+ "letterSpacing": "{letterSpacing.wide}"
103
+ },
104
+ "$description": "Button text typography"
105
+ },
106
+ "caption": {
107
+ "$type": "typography",
108
+ "$value": {
109
+ "fontFamily": "{fontFamily.sans}",
110
+ "fontSize": "{fontSize.xs}",
111
+ "fontWeight": "{fontWeight.normal}",
112
+ "lineHeight": "{lineHeight.normal}",
113
+ "letterSpacing": "{letterSpacing.normal}"
114
+ },
115
+ "$description": "Caption text typography"
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,3 @@
1
+ # Shadows
2
+
3
+ Elevation and shadow token definitions (drop shadows, inner shadows, glows). These create depth and hierarchy in the interface.
@@ -0,0 +1,3 @@
1
+ # Themes
2
+
3
+ Theme-specific token overrides and configurations (light, dark, brand variants). Each theme file extends semantic tokens with contextual values.
@@ -0,0 +1,143 @@
1
+ {
2
+ "theme": {
3
+ "$type": "theme",
4
+ "$value": "berry",
5
+ "$description": "Berry theme with rich raspberry and magenta tones - bold and playful"
6
+ },
7
+ "color": {
8
+ "text": {
9
+ "default": {
10
+ "$type": "color",
11
+ "$value": "#2D1B2E",
12
+ "$description": "Primary text - deep purple-black for contrast"
13
+ },
14
+ "muted": {
15
+ "$type": "color",
16
+ "$value": "#6B5B6B",
17
+ "$description": "Secondary text - muted purple-gray"
18
+ },
19
+ "inverted": {
20
+ "$type": "color",
21
+ "$value": "#FFF5F9",
22
+ "$description": "Text on light surfaces - soft pink-white"
23
+ },
24
+ "link": {
25
+ "$type": "color",
26
+ "$value": "#D946EF",
27
+ "$description": "Link text - vibrant fuchsia"
28
+ },
29
+ "link.hover": {
30
+ "$type": "color",
31
+ "$value": "#E879F9",
32
+ "$description": "Link on hover - bright magenta"
33
+ }
34
+ },
35
+ "surface": {
36
+ "default": {
37
+ "$type": "color",
38
+ "$value": "#FFF5F9",
39
+ "$description": "Default surface - soft pink-white with berry undertones"
40
+ },
41
+ "raised": {
42
+ "$type": "color",
43
+ "$value": "#FFFFFF",
44
+ "$description": "Elevated surface - pure white"
45
+ },
46
+ "sunken": {
47
+ "$type": "color",
48
+ "$value": "#FDF2F8",
49
+ "$description": "Depressed surface - very pale pink for inputs"
50
+ },
51
+ "overlay": {
52
+ "$type": "color",
53
+ "$value": "rgba(217, 70, 239, 0.12)",
54
+ "$description": "Overlay - magenta-tinted backdrop"
55
+ }
56
+ },
57
+ "border": {
58
+ "default": {
59
+ "$type": "color",
60
+ "$value": "#F5D0FE",
61
+ "$description": "Default border - soft lavender-pink"
62
+ },
63
+ "subtle": {
64
+ "$type": "color",
65
+ "$value": "#FAE8FF",
66
+ "$description": "Subtle border - faint pink"
67
+ },
68
+ "strong": {
69
+ "$type": "color",
70
+ "$value": "#E879F9",
71
+ "$description": "Strong border - visible magenta"
72
+ }
73
+ },
74
+ "interactive": {
75
+ "primary": {
76
+ "$type": "color",
77
+ "$value": "#D946EF",
78
+ "$description": "Primary action - vibrant fuchsia"
79
+ },
80
+ "primary.hover": {
81
+ "$type": "color",
82
+ "$value": "#E879F9",
83
+ "$description": "Primary hover - bright magenta"
84
+ },
85
+ "secondary": {
86
+ "$type": "color",
87
+ "$value": "#BE185D",
88
+ "$description": "Secondary action - deep berry pink"
89
+ }
90
+ },
91
+ "focus": {
92
+ "ring": {
93
+ "$type": "color",
94
+ "$value": "#E879F9",
95
+ "$description": "Focus ring - magenta glow"
96
+ }
97
+ },
98
+ "status": {
99
+ "success": {
100
+ "$type": "color",
101
+ "$value": "#059669",
102
+ "$description": "Success - rich emerald"
103
+ },
104
+ "warning": {
105
+ "$type": "color",
106
+ "$value": "#D97706",
107
+ "$description": "Warning - warm amber"
108
+ },
109
+ "error": {
110
+ "$type": "color",
111
+ "$value": "#DC2626",
112
+ "$description": "Error - bold red"
113
+ },
114
+ "info": {
115
+ "$type": "color",
116
+ "$value": "#0891B2",
117
+ "$description": "Info - teal cyan"
118
+ }
119
+ }
120
+ },
121
+ "shadow": {
122
+ "card": {
123
+ "$type": "shadow",
124
+ "$value": "0 4px 6px -1px rgba(217, 70, 239, 0.15), 0 2px 4px -2px rgba(217, 70, 239, 0.1)",
125
+ "$description": "Card shadow - magenta-tinted elevation"
126
+ },
127
+ "dropdown": {
128
+ "$type": "shadow",
129
+ "$value": "0 10px 15px -3px rgba(217, 70, 239, 0.2), 0 4px 6px -4px rgba(217, 70, 239, 0.15)",
130
+ "$description": "Dropdown shadow - berry-tinted depth"
131
+ },
132
+ "modal": {
133
+ "$type": "shadow",
134
+ "$value": "0 20px 25px -5px rgba(217, 70, 239, 0.25), 0 8px 10px -6px rgba(217, 70, 239, 0.18)",
135
+ "$description": "Modal shadow - prominent magenta-tinted"
136
+ },
137
+ "focus": {
138
+ "$type": "shadow",
139
+ "$value": "0 0 0 3px rgba(232, 121, 249, 0.4)",
140
+ "$description": "Focus glow - soft magenta ring"
141
+ }
142
+ }
143
+ }
@@ -0,0 +1,143 @@
1
+ {
2
+ "theme": {
3
+ "$type": "theme",
4
+ "$value": "brutalist",
5
+ "$description": "Stark black/white/yellow - inspired by Lovable's Brutalist theme for bold interfaces"
6
+ },
7
+ "color": {
8
+ "text": {
9
+ "default": {
10
+ "$type": "color",
11
+ "$value": "#FFFFFF",
12
+ "$description": "Primary text on brutalist - pure white"
13
+ },
14
+ "muted": {
15
+ "$type": "color",
16
+ "$value": "#808080",
17
+ "$description": "Secondary text - gray for less important content"
18
+ },
19
+ "inverted": {
20
+ "$type": "color",
21
+ "$value": "#000000",
22
+ "$description": "Text color for light surfaces - pure black"
23
+ },
24
+ "link": {
25
+ "$type": "color",
26
+ "$value": "#FFD700",
27
+ "$description": "Link text color - pure yellow"
28
+ },
29
+ "link.hover": {
30
+ "$type": "color",
31
+ "$value": "#FFED4A",
32
+ "$description": "Link text color on hover - lighter yellow"
33
+ }
34
+ },
35
+ "surface": {
36
+ "default": {
37
+ "$type": "color",
38
+ "$value": "#000000",
39
+ "$description": "Default surface background - pure black"
40
+ },
41
+ "raised": {
42
+ "$type": "color",
43
+ "$value": "#000000",
44
+ "$description": "Elevated surface background - pure black with border"
45
+ },
46
+ "sunken": {
47
+ "$type": "color",
48
+ "$value": "#FFFFFF",
49
+ "$description": "Depressed surface background - pure white for inputs (inverted)"
50
+ },
51
+ "overlay": {
52
+ "$type": "color",
53
+ "$value": "rgba(0, 0, 0, 0.95)",
54
+ "$description": "Overlay background for modals - near-opaque black"
55
+ }
56
+ },
57
+ "border": {
58
+ "default": {
59
+ "$type": "color",
60
+ "$value": "#FFFFFF",
61
+ "$description": "Default border color - stark white border"
62
+ },
63
+ "subtle": {
64
+ "$type": "color",
65
+ "$value": "#404040",
66
+ "$description": "Subtle border for dividers - gray"
67
+ },
68
+ "strong": {
69
+ "$type": "color",
70
+ "$value": "#FFFFFF",
71
+ "$description": "Stronger border for emphasis - bold white"
72
+ }
73
+ },
74
+ "interactive": {
75
+ "primary": {
76
+ "$type": "color",
77
+ "$value": "#FFD700",
78
+ "$description": "Primary interactive element color - pure yellow"
79
+ },
80
+ "primary.hover": {
81
+ "$type": "color",
82
+ "$value": "#FFED4A",
83
+ "$description": "Primary interactive color on hover - lighter yellow"
84
+ },
85
+ "secondary": {
86
+ "$type": "color",
87
+ "$value": "#FFFFFF",
88
+ "$description": "Secondary interactive element color - pure white"
89
+ }
90
+ },
91
+ "focus": {
92
+ "ring": {
93
+ "$type": "color",
94
+ "$value": "#FFD700",
95
+ "$description": "Focus ring outline color - yellow outline"
96
+ }
97
+ },
98
+ "status": {
99
+ "success": {
100
+ "$type": "color",
101
+ "$value": "#00FF00",
102
+ "$description": "Success state color - pure neon green"
103
+ },
104
+ "warning": {
105
+ "$type": "color",
106
+ "$value": "#FFD700",
107
+ "$description": "Warning state color - pure yellow"
108
+ },
109
+ "error": {
110
+ "$type": "color",
111
+ "$value": "#FF0000",
112
+ "$description": "Error state color - pure red"
113
+ },
114
+ "info": {
115
+ "$type": "color",
116
+ "$value": "#FFFFFF",
117
+ "$description": "Info state color - pure white"
118
+ }
119
+ }
120
+ },
121
+ "shadow": {
122
+ "card": {
123
+ "$type": "shadow",
124
+ "$value": "0 4px 6px -1px rgba(255, 215, 0, 0.3), 0 2px 4px -2px rgba(255, 255, 255, 0.2)",
125
+ "$description": "Card elevation shadow - yellow-tinted harsh shadow"
126
+ },
127
+ "dropdown": {
128
+ "$type": "shadow",
129
+ "$value": "0 10px 15px -3px rgba(255, 255, 255, 0.3), 0 4px 6px -4px rgba(255, 215, 0, 0.2)",
130
+ "$description": "Dropdown menu elevation shadow - stark white shadow"
131
+ },
132
+ "modal": {
133
+ "$type": "shadow",
134
+ "$value": "0 20px 25px -5px rgba(255, 255, 255, 0.4), 0 8px 10px -6px rgba(255, 215, 0, 0.3)",
135
+ "$description": "Modal dialog elevation shadow - prominent white/yellow shadow"
136
+ },
137
+ "focus": {
138
+ "$type": "shadow",
139
+ "$value": "0 0 0 3px rgba(255, 215, 0, 0.8)",
140
+ "$description": "Focus ring glow shadow - solid yellow glow"
141
+ }
142
+ }
143
+ }