fulldev-ui 0.1.64

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 (82) hide show
  1. package/.astro/types.d.ts +156 -0
  2. package/README.md +29 -0
  3. package/astro.config.mjs +7 -0
  4. package/package.json +45 -0
  5. package/src/blocks/todo.md +12 -0
  6. package/src/components/_Block.astro +20 -0
  7. package/src/components/_Blocks.astro +26 -0
  8. package/src/components/_Children.astro +38 -0
  9. package/src/components/_Plural.astro +27 -0
  10. package/src/components/_Tag.astro +53 -0
  11. package/src/components/base/Badge.astro +53 -0
  12. package/src/components/base/Button.astro +85 -0
  13. package/src/components/base/Buttons.astro +15 -0
  14. package/src/components/base/Checkbox.astro +39 -0
  15. package/src/components/base/Icon.astro +46 -0
  16. package/src/components/base/Image.astro +123 -0
  17. package/src/components/base/Images.astro +15 -0
  18. package/src/components/base/Input.astro +52 -0
  19. package/src/components/base/Logo.astro +33 -0
  20. package/src/components/base/Radio.astro +38 -0
  21. package/src/components/base/Rating.astro +45 -0
  22. package/src/components/base/Select.astro +65 -0
  23. package/src/components/base/SelectOption.astro +27 -0
  24. package/src/components/base/Switch.astro +82 -0
  25. package/src/components/base/Textarea.astro +31 -0
  26. package/src/components/base/Video.astro +32 -0
  27. package/src/components/base/todo.md +8 -0
  28. package/src/components/typography/Heading.astro +41 -0
  29. package/src/components/typography/Label.astro +36 -0
  30. package/src/components/typography/Link.astro +38 -0
  31. package/src/components/typography/Links.astro +15 -0
  32. package/src/components/typography/List.astro +42 -0
  33. package/src/components/typography/ListItem.astro +30 -0
  34. package/src/components/typography/Paragraph.astro +38 -0
  35. package/src/components/typography/Tagline.astro +39 -0
  36. package/src/components/typography/_Typography.astro +28 -0
  37. package/src/components/typography/todo.md +15 -0
  38. package/src/components/utility/DecorativeBox.astro +22 -0
  39. package/src/components/utility/Head.astro +81 -0
  40. package/src/components/wrapper/Body.astro +32 -0
  41. package/src/components/wrapper/Card.astro +144 -0
  42. package/src/components/wrapper/Cards.astro +15 -0
  43. package/src/components/wrapper/Deck.astro +133 -0
  44. package/src/components/wrapper/Footer.astro +14 -0
  45. package/src/components/wrapper/Form.astro +26 -0
  46. package/src/components/wrapper/Group.astro +26 -0
  47. package/src/components/wrapper/Header.astro +76 -0
  48. package/src/components/wrapper/Main.astro +25 -0
  49. package/src/components/wrapper/Nav.astro +32 -0
  50. package/src/components/wrapper/Prose.astro +108 -0
  51. package/src/components/wrapper/Section.astro +110 -0
  52. package/src/components/wrapper/Sections.astro +15 -0
  53. package/src/components/wrapper/Writeup.astro +23 -0
  54. package/src/components/wrapper/_Wrapper.astro +333 -0
  55. package/src/components/wrapper/todo.md +20 -0
  56. package/src/content/pages/index.md +2 -0
  57. package/src/css/border.css +23 -0
  58. package/src/css/colors.css +328 -0
  59. package/src/css/font.css +15 -0
  60. package/src/css/main.css +4 -0
  61. package/src/css/reset.css +388 -0
  62. package/src/css/sizes.css +273 -0
  63. package/src/env.d.ts +2 -0
  64. package/src/index.ts +63 -0
  65. package/src/integration/integration.ts +61 -0
  66. package/src/layouts/Layout.astro +39 -0
  67. package/src/layouts/todo.md +2 -0
  68. package/src/schemas/attributesSchema.ts +125 -0
  69. package/src/schemas/htmlAttributesSchema.ts +126 -0
  70. package/src/schemas/pageSchema.ts +185 -0
  71. package/src/schemas/staticPageSchema.ts +124 -0
  72. package/src/types/Childmorphic.ts +8 -0
  73. package/src/types/Pluralmorphic.ts +7 -0
  74. package/src/utils/getAllCollections.ts +10 -0
  75. package/src/utils/getCollectionCascade.ts +33 -0
  76. package/src/utils/getPathname.ts +18 -0
  77. package/src/utils/transform/transform.ts +25 -0
  78. package/src/utils/transform/transformCasing.ts +24 -0
  79. package/src/utils/transform/transformReferences.ts +54 -0
  80. package/src/utils/transform/transformSelfs.ts +20 -0
  81. package/src/utils/transform/transformUnderscores.ts +19 -0
  82. package/tsconfig.json +6 -0
@@ -0,0 +1,76 @@
1
+ ---
2
+ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
+ import Wrapper from './_Wrapper.astro'
4
+
5
+ type Props<As extends HTMLTag = 'header'> = Polymorphic<{ as: As }> &
6
+ ComponentProps<typeof Wrapper> & {
7
+ frame?: 'screen' | 'panel'
8
+ position?: 'relative' | 'sticky' | 'fixed' | 'absolute'
9
+ }
10
+
11
+ const {
12
+ as = 'header',
13
+ direction = 'horizontal',
14
+ y = 'center',
15
+ density = 'compact',
16
+ variant,
17
+ position,
18
+ frame,
19
+ ...rest
20
+ } = Astro.props
21
+ ---
22
+
23
+ <Wrapper
24
+ class:list={[
25
+ 'full-header',
26
+ {
27
+ [`full-frame-${frame}`]: frame,
28
+ [`full-position-${position}`]: position,
29
+ },
30
+ ]}
31
+ {as}
32
+ {direction}
33
+ {y}
34
+ {density}
35
+ {variant}
36
+ {...rest}
37
+ >
38
+ <slot name="before" />
39
+ <slot />
40
+ </Wrapper>
41
+
42
+ <style is:global lang="scss">
43
+ .full-header {
44
+ display: flex;
45
+ top: 0;
46
+ right: 0;
47
+ left: 0;
48
+ justify-content: space-between;
49
+ align-items: center;
50
+ z-index: 10;
51
+ background: var(--background);
52
+ padding: var(--space-3) var(--space-gutter);
53
+ width: 100%;
54
+
55
+ &.full-position-fixed {
56
+ position: fixed;
57
+ }
58
+
59
+ &.full-position-absolute {
60
+ position: absolute;
61
+ }
62
+
63
+ &.full-position-sticky {
64
+ position: sticky;
65
+ }
66
+
67
+ &.subtle {
68
+ border-color: var(--6);
69
+ background-color: var(--2);
70
+ }
71
+
72
+ &.bordered {
73
+ border-bottom: 1px solid var(--border);
74
+ }
75
+ }
76
+ </style>
@@ -0,0 +1,25 @@
1
+ ---
2
+ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
+ import Wrapper from './_Wrapper.astro'
4
+
5
+ type Props<As extends HTMLTag = 'main'> = Polymorphic<{ as: As }> &
6
+ ComponentProps<typeof Wrapper>
7
+
8
+ const { as = 'main', x = 'fill', ...rest } = Astro.props
9
+ ---
10
+
11
+ <Wrapper
12
+ class:list={['full-main']}
13
+ {as}
14
+ {x}
15
+ {...rest}
16
+ >
17
+ <slot name="before" />
18
+ <slot />
19
+ </Wrapper>
20
+
21
+ <style is:global lang="scss">
22
+ .full-main {
23
+ width: 100%;
24
+ }
25
+ </style>
@@ -0,0 +1,32 @@
1
+ ---
2
+ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
+ import Wrapper from './_Wrapper.astro'
4
+
5
+ type Props<As extends HTMLTag = 'nav'> = Polymorphic<{ as: As }> &
6
+ ComponentProps<typeof Wrapper>
7
+
8
+ const {
9
+ as = 'nav',
10
+ direction = 'horizontal',
11
+ y = 'center',
12
+ ...rest
13
+ } = Astro.props
14
+ ---
15
+
16
+ <Wrapper
17
+ class:list={['full-nav']}
18
+ {as}
19
+ {direction}
20
+ {y}
21
+ {...rest}
22
+ >
23
+ <slot name="before" />
24
+ <slot />
25
+ </Wrapper>
26
+
27
+ <style is:global lang="scss">
28
+ .full-nav {
29
+ margin-left: auto;
30
+ width: max-content;
31
+ }
32
+ </style>
@@ -0,0 +1,108 @@
1
+ ---
2
+ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
+ import Section from './Section.astro'
4
+ import { default as Layout } from './_Wrapper.astro'
5
+
6
+ type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> &
7
+ ComponentProps<typeof Layout>
8
+
9
+ const { as = 'div', ...rest } = Astro.props
10
+ ---
11
+
12
+ <Section
13
+ class:list={['full-prose']}
14
+ {as}
15
+ {...rest}
16
+ >
17
+ <slot name="before" />
18
+ <slot />
19
+ </Section>
20
+
21
+ <style is:global lang="scss">
22
+ .full-prose {
23
+ @media (min-width: 768px) {
24
+ padding-right: 15vw;
25
+ padding-left: 15vw;
26
+ }
27
+ @media (min-width: 1024px) {
28
+ padding-right: 25vw;
29
+ padding-left: 25vw;
30
+ }
31
+ }
32
+
33
+ // Tables
34
+ .full-prose {
35
+ color: var(--foreground);
36
+ font-weight: var(--full-font-weight);
37
+ font-size: var(--text);
38
+ line-height: 1.625;
39
+ font-family: var(--full-font-family);
40
+
41
+ .display {
42
+ display: grid;
43
+ width: 100%;
44
+ max-width: none;
45
+
46
+ table {
47
+ h1,
48
+ h2,
49
+ h3,
50
+ h4,
51
+ h5,
52
+ h6 {
53
+ margin: var(--space-2) 0;
54
+ font: 600 var(--text-2) 'Saira';
55
+
56
+ & + p {
57
+ color: var(--hue11);
58
+ }
59
+ }
60
+ }
61
+ }
62
+
63
+ @media (max-width: 640px) {
64
+ display: none;
65
+ }
66
+
67
+ table {
68
+ margin: var(--space-4) 0;
69
+ border: 1px solid var(--border);
70
+ border-radius: var(--radius-1) !important;
71
+ border-collapse: collapse;
72
+ width: 100%;
73
+ }
74
+
75
+ th {
76
+ border-bottom: 1px solid var(--border);
77
+ background: var(--raised-background) !important;
78
+ color: var(--muted-foreground) !important;
79
+ font-weight: 500 !important;
80
+ font-size: var(--text-element) !important;
81
+ }
82
+
83
+ td {
84
+ color: var(--muted-foreground) !important;
85
+ }
86
+
87
+ th,
88
+ td {
89
+ padding: var(--space-2);
90
+ }
91
+
92
+ table a {
93
+ color: var(--primary-background) !important;
94
+ font-size: var(--text-element) !important;
95
+ line-height: 1 !important;
96
+ white-space: nowrap;
97
+ }
98
+
99
+ h6 {
100
+ margin: var(--space-2) 0;
101
+ font-size: var(--text) !important;
102
+ }
103
+
104
+ table a:hover {
105
+ text-decoration: underline;
106
+ }
107
+ }
108
+ </style>
@@ -0,0 +1,110 @@
1
+ ---
2
+ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
+ import Wrapper from './_Wrapper.astro'
4
+
5
+ type Props<As extends HTMLTag = 'section'> = Polymorphic<{ as: As }> &
6
+ ComponentProps<typeof Wrapper> & {
7
+ direction?: 'horizontal' | 'vertical'
8
+ variant?: 'base' | 'raised'
9
+ frame?: 'viewport' | 'panel'
10
+ // gutter?: 'viewport' | 'panel'
11
+ reverse?: true | 'odd' | 'even'
12
+ }
13
+
14
+ const { as = 'section', reverse, variant, frame, ...rest } = Astro.props
15
+ ---
16
+
17
+ <Wrapper
18
+ class:list={[
19
+ 'full-section',
20
+ {
21
+ [`full-variant-${variant}`]: variant,
22
+ [`full-frame-${frame}`]: frame,
23
+ [`full-reverse-${reverse}`]: reverse,
24
+ },
25
+ ]}
26
+ {as}
27
+ {...rest}
28
+ >
29
+ <slot name="before" />
30
+ <slot />
31
+ </Wrapper>
32
+
33
+ <style is:global lang="scss">
34
+ :root,
35
+ .full-tag {
36
+ --media: 1536px;
37
+ --space-gutter: max(4vw, calc((100vw - var(--media)) / 2));
38
+ --space-spacer: calc(var(--space-5) + 4vw);
39
+ }
40
+
41
+ .full-section {
42
+ position: relative;
43
+ background: var(--background);
44
+ padding: var(--space-spacer) var(--space-gutter);
45
+ width: 100%;
46
+ overflow-x: hidden;
47
+
48
+ &.full-frame-panel {
49
+ margin: var(--space-5) var(--space-gutter);
50
+ border: 1px solid var(--border);
51
+ border-radius: var(--full-border-radius-3);
52
+ background-color: var(--background);
53
+ padding: var(--space-5) var(--space-gutter);
54
+ width: auto;
55
+ overflow: hidden;
56
+ }
57
+ }
58
+
59
+ .full-layout-split {
60
+ display: grid;
61
+ column-gap: var(--space-gutter);
62
+ row-gap: var(--space-5);
63
+ justify-content: var(--full-x);
64
+ align-items: var(--full-y);
65
+
66
+ @media (min-width: 1024px) {
67
+ grid-auto-columns: 1fr;
68
+ grid-auto-flow: column;
69
+ }
70
+
71
+ & > * {
72
+ margin: 0;
73
+ }
74
+ }
75
+
76
+ .full-reverse-true {
77
+ --full-reverse: 1;
78
+ }
79
+
80
+ .full-reverse-even:nth-child(even) {
81
+ --full-reverse: 1;
82
+ }
83
+
84
+ .full-reverse-odd:nth-child(odd) {
85
+ --full-reverse: 1;
86
+ }
87
+
88
+ .full-reverse-even,
89
+ .full-reverse-odd,
90
+ .full-reverse-true {
91
+ @media (min-width: 1024px) {
92
+ > .full-tag {
93
+ order: 0;
94
+
95
+ &:first-child {
96
+ order: var(--full-reverse, 0);
97
+ }
98
+
99
+ &:last-child {
100
+ order: calc(var(--full-reverse, 0) * -1);
101
+ }
102
+ }
103
+ }
104
+ }
105
+
106
+ .full-frame-viewport {
107
+ height: auto;
108
+ min-height: 100vh;
109
+ }
110
+ </style>
@@ -0,0 +1,15 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import type { Pluralmorphic } from '../../types/Pluralmorphic'
4
+ import Plural from '../_Plural.astro'
5
+ import Section from './Section.astro'
6
+
7
+ type Props = Pluralmorphic<ComponentProps<typeof Section>>
8
+
9
+ const { props } = Astro
10
+ ---
11
+
12
+ <Plural
13
+ component={Section}
14
+ {...props}
15
+ />
@@ -0,0 +1,23 @@
1
+ ---
2
+ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
+ import Wrapper from './_Wrapper.astro'
4
+
5
+ type Props<As extends HTMLTag = 'div'> = Polymorphic<{ as: As }> &
6
+ ComponentProps<typeof Wrapper>
7
+
8
+ const { as = 'div', ...rest } = Astro.props
9
+ ---
10
+
11
+ <Wrapper
12
+ class:list={['full-writeup']}
13
+ {as}
14
+ {...rest}
15
+ >
16
+ <slot name="before" />
17
+ <slot />
18
+ </Wrapper>
19
+
20
+ <style is:global lang="scss">
21
+ .full-writeup {
22
+ }
23
+ </style>
@@ -0,0 +1,333 @@
1
+ ---
2
+ import type { ComponentProps } from 'astro/types'
3
+ import Children from '../_Children.astro'
4
+ import Tag from '../_Tag.astro'
5
+
6
+ interface Props extends ComponentProps<typeof Tag> {
7
+ html?: string
8
+ x?: 'start' | 'center' | 'end' | 'between' | 'stretch' | 'fraction'
9
+ y?: 'start' | 'center' | 'end' | 'between' | 'stretch' | 'fraction'
10
+ }
11
+
12
+ const {
13
+ direction = 'vertical',
14
+ x = 'left',
15
+ y = 'top',
16
+ layout,
17
+ ...rest
18
+ } = Astro.props
19
+ ---
20
+
21
+ <Tag
22
+ class:list={[
23
+ 'full-wrapper',
24
+ {
25
+ [`full-direction-${direction}`]: direction,
26
+ [`full-layout-${layout}`]: layout,
27
+ [`full-x-${x}`]: x,
28
+ [`full-y-${y}`]: y,
29
+ },
30
+ ]}
31
+ {...rest}
32
+ >
33
+ <slot name="before" />
34
+ <Children {...rest} />
35
+ <slot />
36
+ </Tag>
37
+
38
+ <style is:global lang="scss">
39
+ .full-wrapper {
40
+ * {
41
+ margin: 0;
42
+ }
43
+ }
44
+
45
+ .full-direction-horizontal:not(.full-x-fill) {
46
+ display: flex;
47
+ flex-direction: row;
48
+
49
+ > {
50
+ .full-tag {
51
+ + .full-deck,
52
+ + .full-image:not(.full-position-background),
53
+ + .full-icon {
54
+ margin-left: var(--space-5);
55
+ }
56
+ }
57
+
58
+ .full-deck,
59
+ .full-image:not(.full-position-background),
60
+ .full-icon {
61
+ + .full-tag {
62
+ margin-left: var(--space-5);
63
+ }
64
+ }
65
+
66
+ .full-tag {
67
+ + .full-group,
68
+ + .full-form {
69
+ margin-left: var(--space-4);
70
+ }
71
+ }
72
+
73
+ .full-tag {
74
+ + .full-paragraph,
75
+ + .full-link,
76
+ + .full-heading,
77
+ + .full-switch {
78
+ margin-left: var(--space-3);
79
+ }
80
+ }
81
+
82
+ .full-tag {
83
+ + .full-link {
84
+ margin-left: var(--space-4);
85
+ }
86
+ }
87
+
88
+ .full-tag {
89
+ + .full-button {
90
+ margin-left: var(--space-5);
91
+ }
92
+ }
93
+
94
+ .full-position-background + .full-tag {
95
+ margin-left: 0;
96
+ }
97
+
98
+ .full-button {
99
+ + .full-button {
100
+ margin-left: var(--space-2);
101
+ }
102
+ }
103
+
104
+ .full-placeholder + .full-placeholder {
105
+ margin-left: var(--space-4);
106
+ }
107
+
108
+ .full-position-background + .full-tag {
109
+ margin-left: 0;
110
+ }
111
+ }
112
+ }
113
+
114
+ .full-direction-vertical {
115
+ display: flex;
116
+ flex-direction: column;
117
+
118
+ > {
119
+ .full-tag {
120
+ + .full-deck,
121
+ + .full-image:not(.full-position-background),
122
+ + .full-icon {
123
+ margin-top: var(--space-5);
124
+ }
125
+ }
126
+
127
+ .full-placeholder + .full-placeholder {
128
+ margin-top: var(--space-4);
129
+ }
130
+
131
+ .full-tag {
132
+ + .full-group,
133
+ + .full-card,
134
+ + .full-form,
135
+ + .full-button,
136
+ + .full-list {
137
+ margin-top: var(--space-4);
138
+ }
139
+ }
140
+
141
+ .full-list {
142
+ + .full-tag {
143
+ margin-top: var(--space-4);
144
+ }
145
+ }
146
+
147
+ .full-tag {
148
+ + .full-heading {
149
+ margin-top: var(--space-3);
150
+ }
151
+ }
152
+
153
+ .full-rating {
154
+ + .full-tag {
155
+ margin-top: var(--space-4);
156
+ }
157
+ }
158
+
159
+ .full-deck,
160
+ .full-image:not(.full-position-background),
161
+ .full-icon {
162
+ + .full-tag {
163
+ margin-top: var(--space-5);
164
+ }
165
+ }
166
+
167
+ .full-button {
168
+ + .full-button {
169
+ margin-top: var(--space-2);
170
+ }
171
+ }
172
+
173
+ .full-paragraph {
174
+ + .full-paragraph,
175
+ + .full-label,
176
+ + .full-input {
177
+ margin-top: var(--space-2);
178
+ }
179
+ }
180
+
181
+ .full-tagline {
182
+ + .full-paragraph,
183
+ + .full-heading,
184
+ + .full-label,
185
+ + .full-input {
186
+ margin-top: var(--space-3);
187
+ }
188
+ }
189
+
190
+ .full-heading {
191
+ + .full-paragraph {
192
+ margin-top: var(--space-3);
193
+ }
194
+ }
195
+
196
+ .full-paragraph {
197
+ + .full-heading {
198
+ margin-top: var(--space-3);
199
+ }
200
+ }
201
+
202
+ .full-label {
203
+ + .full-input,
204
+ + .full-textarea,
205
+ + .full-select {
206
+ margin-top: var(--space-1);
207
+ }
208
+ }
209
+
210
+ .full-input {
211
+ + .full-input,
212
+ + .full-button,
213
+ + .full-label {
214
+ margin-top: var(--space-3);
215
+ }
216
+ }
217
+ }
218
+ }
219
+
220
+ .full-direction-vertical {
221
+ display: flex;
222
+ flex-direction: column;
223
+
224
+ // & > .full-tag:not(:first-child) {
225
+ // margin-top: var(--my-spacer);
226
+ // }
227
+
228
+ &.full-x-left {
229
+ align-items: flex-start;
230
+ }
231
+
232
+ &.full-x-center {
233
+ align-items: center;
234
+ text-align: center;
235
+
236
+ > .full-tag > .full-tag {
237
+ text-align: left;
238
+ }
239
+ }
240
+
241
+ &.full-x-right {
242
+ align-items: flex-end;
243
+ text-align: right;
244
+
245
+ > .full-tag > .full-tag {
246
+ text-align: left;
247
+ }
248
+ }
249
+
250
+ &.full-x-fill {
251
+ align-items: stretch;
252
+ }
253
+
254
+ &.full-y-top {
255
+ justify-content: flex-start;
256
+ }
257
+
258
+ &.full-y-center {
259
+ justify-content: center;
260
+ }
261
+
262
+ &.full-y-bottom {
263
+ justify-content: flex-end;
264
+ }
265
+
266
+ &.full-y-spread {
267
+ justify-content: space-between;
268
+ }
269
+
270
+ &.full-y-fill {
271
+ justify-content: stretch;
272
+ }
273
+ }
274
+
275
+ .full-direction-horizontal {
276
+ display: flex;
277
+ flex-direction: row;
278
+
279
+ // & > .full-tag:not(:first-child) {
280
+ // margin-left: var(--my-spacer);
281
+ // }
282
+
283
+ &.full-x-left {
284
+ justify-content: flex-start;
285
+ }
286
+
287
+ &.full-x-center {
288
+ justify-content: center;
289
+ }
290
+
291
+ &.full-x-right {
292
+ justify-content: flex-end;
293
+ }
294
+
295
+ &.full-x-spread {
296
+ justify-content: space-between;
297
+ }
298
+
299
+ &.full-x-fill {
300
+ display: grid;
301
+ row-gap: var(--space-5);
302
+
303
+ @media (min-width: 1024px) {
304
+ grid-auto-columns: 1fr;
305
+ grid-auto-flow: column;
306
+ }
307
+
308
+ & > .full-tag {
309
+ margin-left: 0;
310
+ }
311
+ }
312
+
313
+ &.full-y-top {
314
+ align-items: flex-start;
315
+ }
316
+
317
+ &.full-y-center {
318
+ align-items: center;
319
+ }
320
+
321
+ &.full-y-bottom {
322
+ align-items: flex-end;
323
+ }
324
+
325
+ &.full-y-stretch {
326
+ align-items: stretch;
327
+ }
328
+
329
+ &.full-y-fill {
330
+ align-items: stretch;
331
+ }
332
+ }
333
+ </style>