@syncupsuite/themes 0.3.0 → 0.4.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.
- package/dist/index.cjs +11364 -4488
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +11359 -4487
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/art-deco/tailwind.css +22 -0
- package/src/art-deco/tokens.css +16 -2
- package/src/de-stijl/meta.json +50 -0
- package/src/de-stijl/tailwind.css +391 -0
- package/src/de-stijl/tokens.css +319 -0
- package/src/de-stijl/tokens.json +840 -0
- package/src/milanese-design/meta.json +50 -0
- package/src/milanese-design/tailwind.css +391 -0
- package/src/milanese-design/tokens.css +319 -0
- package/src/milanese-design/tokens.json +840 -0
- package/src/nihon-minimal/tailwind.css +22 -0
- package/src/nihon-minimal/tokens.css +16 -2
- package/src/nihon-traditional/tailwind.css +22 -0
- package/src/nihon-traditional/tokens.css +16 -2
- package/src/nordic-modern/tailwind.css +22 -0
- package/src/nordic-modern/tokens.css +16 -2
- package/src/renaissance/tailwind.css +22 -0
- package/src/renaissance/tokens.css +16 -2
- package/src/shuimo-modern/tailwind.css +22 -0
- package/src/shuimo-modern/tokens.css +16 -2
- package/src/swiss-international/tailwind.css +22 -0
- package/src/swiss-international/tokens.css +16 -2
- package/src/swiss-modernist/meta.json +62 -0
- package/src/swiss-modernist/tailwind.css +451 -0
- package/src/swiss-modernist/tokens.css +359 -0
- package/src/swiss-modernist/tokens.json +960 -0
- package/src/tang-imperial/tailwind.css +22 -0
- package/src/tang-imperial/tokens.css +16 -2
- package/src/wiener-werkstaette/meta.json +44 -0
- package/src/wiener-werkstaette/tailwind.css +361 -0
- package/src/wiener-werkstaette/tokens.css +299 -0
- package/src/wiener-werkstaette/tokens.json +780 -0
|
@@ -195,6 +195,28 @@
|
|
|
195
195
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
+
/* === Semantic Color API — theme-aware Tailwind utilities === */
|
|
199
|
+
@theme {
|
|
200
|
+
--color-canvas: var(--background-canvas);
|
|
201
|
+
--color-surface: var(--background-surface);
|
|
202
|
+
--color-muted: var(--background-muted);
|
|
203
|
+
--color-foreground: var(--text-primary);
|
|
204
|
+
--color-foreground-secondary: var(--text-secondary);
|
|
205
|
+
--color-foreground-muted: var(--text-muted);
|
|
206
|
+
--color-foreground-inverse: var(--text-inverse);
|
|
207
|
+
--color-primary: var(--interactive-primary);
|
|
208
|
+
--color-primary-hover: var(--interactive-primary-hover);
|
|
209
|
+
--color-primary-active: var(--interactive-primary-active);
|
|
210
|
+
--color-border: var(--border-default);
|
|
211
|
+
--color-border-strong: var(--border-strong);
|
|
212
|
+
--color-error: var(--status-error);
|
|
213
|
+
--color-success: var(--status-success);
|
|
214
|
+
--color-warning: var(--status-warning);
|
|
215
|
+
--color-info: var(--status-info);
|
|
216
|
+
--color-ring: var(--focus-ring);
|
|
217
|
+
--color-focus-visible: var(--accessibility-focus-visible);
|
|
218
|
+
}
|
|
219
|
+
|
|
198
220
|
/* Primitive aliases + light mode semantic tokens */
|
|
199
221
|
:root {
|
|
200
222
|
/* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
* nihon-minimal — Design Tokens
|
|
3
|
+
* Generated by @syncupsuite/transformers
|
|
4
|
+
*
|
|
5
|
+
* CONSUMER API — Use these semantic tokens in your styles:
|
|
6
|
+
*
|
|
7
|
+
* Backgrounds: var(--background-canvas | surface | muted)
|
|
8
|
+
* Text: var(--text-primary | secondary | muted | inverse)
|
|
9
|
+
* Interactive: var(--interactive-primary | primary-hover | primary-active)
|
|
10
|
+
* Borders: var(--border-default | strong)
|
|
11
|
+
* Status: var(--status-error | success | warning | info)
|
|
12
|
+
* Focus: var(--focus-ring)
|
|
13
|
+
*
|
|
14
|
+
* Dark mode: Add [data-theme="dark"] to a parent element.
|
|
15
|
+
* Primitives: --primitive-color-*, --primitive-spacing-*, etc.
|
|
16
|
+
* ═══════════════════════════════════════════════════════════════ */
|
|
3
17
|
|
|
4
18
|
:root {
|
|
5
19
|
/* --- Primitive Colors --- */
|
|
@@ -255,6 +255,28 @@
|
|
|
255
255
|
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
+
/* === Semantic Color API — theme-aware Tailwind utilities === */
|
|
259
|
+
@theme {
|
|
260
|
+
--color-canvas: var(--background-canvas);
|
|
261
|
+
--color-surface: var(--background-surface);
|
|
262
|
+
--color-muted: var(--background-muted);
|
|
263
|
+
--color-foreground: var(--text-primary);
|
|
264
|
+
--color-foreground-secondary: var(--text-secondary);
|
|
265
|
+
--color-foreground-muted: var(--text-muted);
|
|
266
|
+
--color-foreground-inverse: var(--text-inverse);
|
|
267
|
+
--color-primary: var(--interactive-primary);
|
|
268
|
+
--color-primary-hover: var(--interactive-primary-hover);
|
|
269
|
+
--color-primary-active: var(--interactive-primary-active);
|
|
270
|
+
--color-border: var(--border-default);
|
|
271
|
+
--color-border-strong: var(--border-strong);
|
|
272
|
+
--color-error: var(--status-error);
|
|
273
|
+
--color-success: var(--status-success);
|
|
274
|
+
--color-warning: var(--status-warning);
|
|
275
|
+
--color-info: var(--status-info);
|
|
276
|
+
--color-ring: var(--focus-ring);
|
|
277
|
+
--color-focus-visible: var(--accessibility-focus-visible);
|
|
278
|
+
}
|
|
279
|
+
|
|
258
280
|
/* Primitive aliases + light mode semantic tokens */
|
|
259
281
|
:root {
|
|
260
282
|
/* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
* nihon-no-iro-traditional — Design Tokens
|
|
3
|
+
* Generated by @syncupsuite/transformers
|
|
4
|
+
*
|
|
5
|
+
* CONSUMER API — Use these semantic tokens in your styles:
|
|
6
|
+
*
|
|
7
|
+
* Backgrounds: var(--background-canvas | surface | muted)
|
|
8
|
+
* Text: var(--text-primary | secondary | muted | inverse)
|
|
9
|
+
* Interactive: var(--interactive-primary | primary-hover | primary-active)
|
|
10
|
+
* Borders: var(--border-default | strong)
|
|
11
|
+
* Status: var(--status-error | success | warning | info)
|
|
12
|
+
* Focus: var(--focus-ring)
|
|
13
|
+
*
|
|
14
|
+
* Dark mode: Add [data-theme="dark"] to a parent element.
|
|
15
|
+
* Primitives: --primitive-color-*, --primitive-spacing-*, etc.
|
|
16
|
+
* ═══════════════════════════════════════════════════════════════ */
|
|
3
17
|
|
|
4
18
|
:root {
|
|
5
19
|
/* --- Primitive Colors --- */
|
|
@@ -235,6 +235,28 @@
|
|
|
235
235
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
+
/* === Semantic Color API — theme-aware Tailwind utilities === */
|
|
239
|
+
@theme {
|
|
240
|
+
--color-canvas: var(--background-canvas);
|
|
241
|
+
--color-surface: var(--background-surface);
|
|
242
|
+
--color-muted: var(--background-muted);
|
|
243
|
+
--color-foreground: var(--text-primary);
|
|
244
|
+
--color-foreground-secondary: var(--text-secondary);
|
|
245
|
+
--color-foreground-muted: var(--text-muted);
|
|
246
|
+
--color-foreground-inverse: var(--text-inverse);
|
|
247
|
+
--color-primary: var(--interactive-primary);
|
|
248
|
+
--color-primary-hover: var(--interactive-primary-hover);
|
|
249
|
+
--color-primary-active: var(--interactive-primary-active);
|
|
250
|
+
--color-border: var(--border-default);
|
|
251
|
+
--color-border-strong: var(--border-strong);
|
|
252
|
+
--color-error: var(--status-error);
|
|
253
|
+
--color-success: var(--status-success);
|
|
254
|
+
--color-warning: var(--status-warning);
|
|
255
|
+
--color-info: var(--status-info);
|
|
256
|
+
--color-ring: var(--focus-ring);
|
|
257
|
+
--color-focus-visible: var(--accessibility-focus-visible);
|
|
258
|
+
}
|
|
259
|
+
|
|
238
260
|
/* Primitive aliases + light mode semantic tokens */
|
|
239
261
|
:root {
|
|
240
262
|
/* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
* nordic-modern — Design Tokens
|
|
3
|
+
* Generated by @syncupsuite/transformers
|
|
4
|
+
*
|
|
5
|
+
* CONSUMER API — Use these semantic tokens in your styles:
|
|
6
|
+
*
|
|
7
|
+
* Backgrounds: var(--background-canvas | surface | muted)
|
|
8
|
+
* Text: var(--text-primary | secondary | muted | inverse)
|
|
9
|
+
* Interactive: var(--interactive-primary | primary-hover | primary-active)
|
|
10
|
+
* Borders: var(--border-default | strong)
|
|
11
|
+
* Status: var(--status-error | success | warning | info)
|
|
12
|
+
* Focus: var(--focus-ring)
|
|
13
|
+
*
|
|
14
|
+
* Dark mode: Add [data-theme="dark"] to a parent element.
|
|
15
|
+
* Primitives: --primitive-color-*, --primitive-spacing-*, etc.
|
|
16
|
+
* ═══════════════════════════════════════════════════════════════ */
|
|
3
17
|
|
|
4
18
|
:root {
|
|
5
19
|
/* --- Primitive Colors --- */
|
|
@@ -235,6 +235,28 @@
|
|
|
235
235
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
+
/* === Semantic Color API — theme-aware Tailwind utilities === */
|
|
239
|
+
@theme {
|
|
240
|
+
--color-canvas: var(--background-canvas);
|
|
241
|
+
--color-surface: var(--background-surface);
|
|
242
|
+
--color-muted: var(--background-muted);
|
|
243
|
+
--color-foreground: var(--text-primary);
|
|
244
|
+
--color-foreground-secondary: var(--text-secondary);
|
|
245
|
+
--color-foreground-muted: var(--text-muted);
|
|
246
|
+
--color-foreground-inverse: var(--text-inverse);
|
|
247
|
+
--color-primary: var(--interactive-primary);
|
|
248
|
+
--color-primary-hover: var(--interactive-primary-hover);
|
|
249
|
+
--color-primary-active: var(--interactive-primary-active);
|
|
250
|
+
--color-border: var(--border-default);
|
|
251
|
+
--color-border-strong: var(--border-strong);
|
|
252
|
+
--color-error: var(--status-error);
|
|
253
|
+
--color-success: var(--status-success);
|
|
254
|
+
--color-warning: var(--status-warning);
|
|
255
|
+
--color-info: var(--status-info);
|
|
256
|
+
--color-ring: var(--focus-ring);
|
|
257
|
+
--color-focus-visible: var(--accessibility-focus-visible);
|
|
258
|
+
}
|
|
259
|
+
|
|
238
260
|
/* Primitive aliases + light mode semantic tokens */
|
|
239
261
|
:root {
|
|
240
262
|
/* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
* renaissance — Design Tokens
|
|
3
|
+
* Generated by @syncupsuite/transformers
|
|
4
|
+
*
|
|
5
|
+
* CONSUMER API — Use these semantic tokens in your styles:
|
|
6
|
+
*
|
|
7
|
+
* Backgrounds: var(--background-canvas | surface | muted)
|
|
8
|
+
* Text: var(--text-primary | secondary | muted | inverse)
|
|
9
|
+
* Interactive: var(--interactive-primary | primary-hover | primary-active)
|
|
10
|
+
* Borders: var(--border-default | strong)
|
|
11
|
+
* Status: var(--status-error | success | warning | info)
|
|
12
|
+
* Focus: var(--focus-ring)
|
|
13
|
+
*
|
|
14
|
+
* Dark mode: Add [data-theme="dark"] to a parent element.
|
|
15
|
+
* Primitives: --primitive-color-*, --primitive-spacing-*, etc.
|
|
16
|
+
* ═══════════════════════════════════════════════════════════════ */
|
|
3
17
|
|
|
4
18
|
:root {
|
|
5
19
|
/* --- Primitive Colors --- */
|
|
@@ -235,6 +235,28 @@
|
|
|
235
235
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
+
/* === Semantic Color API — theme-aware Tailwind utilities === */
|
|
239
|
+
@theme {
|
|
240
|
+
--color-canvas: var(--background-canvas);
|
|
241
|
+
--color-surface: var(--background-surface);
|
|
242
|
+
--color-muted: var(--background-muted);
|
|
243
|
+
--color-foreground: var(--text-primary);
|
|
244
|
+
--color-foreground-secondary: var(--text-secondary);
|
|
245
|
+
--color-foreground-muted: var(--text-muted);
|
|
246
|
+
--color-foreground-inverse: var(--text-inverse);
|
|
247
|
+
--color-primary: var(--interactive-primary);
|
|
248
|
+
--color-primary-hover: var(--interactive-primary-hover);
|
|
249
|
+
--color-primary-active: var(--interactive-primary-active);
|
|
250
|
+
--color-border: var(--border-default);
|
|
251
|
+
--color-border-strong: var(--border-strong);
|
|
252
|
+
--color-error: var(--status-error);
|
|
253
|
+
--color-success: var(--status-success);
|
|
254
|
+
--color-warning: var(--status-warning);
|
|
255
|
+
--color-info: var(--status-info);
|
|
256
|
+
--color-ring: var(--focus-ring);
|
|
257
|
+
--color-focus-visible: var(--accessibility-focus-visible);
|
|
258
|
+
}
|
|
259
|
+
|
|
238
260
|
/* Primitive aliases + light mode semantic tokens */
|
|
239
261
|
:root {
|
|
240
262
|
/* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
* shuimo-modern — Design Tokens
|
|
3
|
+
* Generated by @syncupsuite/transformers
|
|
4
|
+
*
|
|
5
|
+
* CONSUMER API — Use these semantic tokens in your styles:
|
|
6
|
+
*
|
|
7
|
+
* Backgrounds: var(--background-canvas | surface | muted)
|
|
8
|
+
* Text: var(--text-primary | secondary | muted | inverse)
|
|
9
|
+
* Interactive: var(--interactive-primary | primary-hover | primary-active)
|
|
10
|
+
* Borders: var(--border-default | strong)
|
|
11
|
+
* Status: var(--status-error | success | warning | info)
|
|
12
|
+
* Focus: var(--focus-ring)
|
|
13
|
+
*
|
|
14
|
+
* Dark mode: Add [data-theme="dark"] to a parent element.
|
|
15
|
+
* Primitives: --primitive-color-*, --primitive-spacing-*, etc.
|
|
16
|
+
* ═══════════════════════════════════════════════════════════════ */
|
|
3
17
|
|
|
4
18
|
:root {
|
|
5
19
|
/* --- Primitive Colors --- */
|
|
@@ -235,6 +235,28 @@
|
|
|
235
235
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
+
/* === Semantic Color API — theme-aware Tailwind utilities === */
|
|
239
|
+
@theme {
|
|
240
|
+
--color-canvas: var(--background-canvas);
|
|
241
|
+
--color-surface: var(--background-surface);
|
|
242
|
+
--color-muted: var(--background-muted);
|
|
243
|
+
--color-foreground: var(--text-primary);
|
|
244
|
+
--color-foreground-secondary: var(--text-secondary);
|
|
245
|
+
--color-foreground-muted: var(--text-muted);
|
|
246
|
+
--color-foreground-inverse: var(--text-inverse);
|
|
247
|
+
--color-primary: var(--interactive-primary);
|
|
248
|
+
--color-primary-hover: var(--interactive-primary-hover);
|
|
249
|
+
--color-primary-active: var(--interactive-primary-active);
|
|
250
|
+
--color-border: var(--border-default);
|
|
251
|
+
--color-border-strong: var(--border-strong);
|
|
252
|
+
--color-error: var(--status-error);
|
|
253
|
+
--color-success: var(--status-success);
|
|
254
|
+
--color-warning: var(--status-warning);
|
|
255
|
+
--color-info: var(--status-info);
|
|
256
|
+
--color-ring: var(--focus-ring);
|
|
257
|
+
--color-focus-visible: var(--accessibility-focus-visible);
|
|
258
|
+
}
|
|
259
|
+
|
|
238
260
|
/* Primitive aliases + light mode semantic tokens */
|
|
239
261
|
:root {
|
|
240
262
|
/* --primitive-color-* aliases → @theme --color-* (for semantic var() resolution) */
|
|
@@ -1,5 +1,19 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
1
|
+
/* ═══════════════════════════════════════════════════════════════
|
|
2
|
+
* swiss-international-style — Design Tokens
|
|
3
|
+
* Generated by @syncupsuite/transformers
|
|
4
|
+
*
|
|
5
|
+
* CONSUMER API — Use these semantic tokens in your styles:
|
|
6
|
+
*
|
|
7
|
+
* Backgrounds: var(--background-canvas | surface | muted)
|
|
8
|
+
* Text: var(--text-primary | secondary | muted | inverse)
|
|
9
|
+
* Interactive: var(--interactive-primary | primary-hover | primary-active)
|
|
10
|
+
* Borders: var(--border-default | strong)
|
|
11
|
+
* Status: var(--status-error | success | warning | info)
|
|
12
|
+
* Focus: var(--focus-ring)
|
|
13
|
+
*
|
|
14
|
+
* Dark mode: Add [data-theme="dark"] to a parent element.
|
|
15
|
+
* Primitives: --primitive-color-*, --primitive-spacing-*, etc.
|
|
16
|
+
* ═══════════════════════════════════════════════════════════════ */
|
|
3
17
|
|
|
4
18
|
:root {
|
|
5
19
|
/* --- Primitive Colors --- */
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "swiss-modernist",
|
|
3
|
+
"name": "Swiss Modernist",
|
|
4
|
+
"description": "Swiss Modernist — International Typographic Style from Zürich and Basel schools, 1950s–70s. Müller-Brockmann's grid precision, Helvetica, and disciplined color.",
|
|
5
|
+
"foundation": {
|
|
6
|
+
"story": "Josef Müller-Brockmann, Armin Hofmann, and Emil Ruder established the International Typographic Style at Zürich's Kunstgewerbeschule and Basel's Allgemeine Gewerbeschule. Helvetica arrived in 1957, designed to say nothing but the message itself. One typeface, one grid, one accent color — the rest is discipline.",
|
|
7
|
+
"philosophy": "Objectivity over expression. The grid is not a constraint — it is liberation. Typography carries the visual weight; color is used once, with surgical precision.",
|
|
8
|
+
"era": "Modernist — 1950s–1970s",
|
|
9
|
+
"harmonyMode": "monochromatic",
|
|
10
|
+
"radiusTendency": "none",
|
|
11
|
+
"typographyCategory": "neo-grotesque"
|
|
12
|
+
},
|
|
13
|
+
"seedColors": [
|
|
14
|
+
{
|
|
15
|
+
"hex": "#3B6EA5",
|
|
16
|
+
"name": "Himmelblau",
|
|
17
|
+
"tradition": "Sky blue recurring across Josef Müller-Brockmann's Zürich concert poster series, 1960–72. The structural color of the ITS canon.",
|
|
18
|
+
"source": "Josef Müller-Brockmann: Pioneer of Swiss Graphic Design, L. Müller"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"hex": "#C8202A",
|
|
22
|
+
"name": "Rotkreuz",
|
|
23
|
+
"tradition": "Red Cross red; Swiss national identity. The single vivid accent deployed against the neutral field — restraint is the principle.",
|
|
24
|
+
"source": "Swiss Graphic Design: Origins and Growth, R. Hollis"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"hex": "#64748B",
|
|
28
|
+
"name": "Bleigrau",
|
|
29
|
+
"tradition": "Lead gray (Blei = lead). The color of moveable type blocks before inking; the unprinted color of typographic infrastructure.",
|
|
30
|
+
"source": "Typography, E. Ruder"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hex": "#8FA3B1",
|
|
34
|
+
"name": "Stahl",
|
|
35
|
+
"tradition": "Steel blue-gray from Swiss precision engineering and Alpine industrial heritage — the color of structural metal and machine casings.",
|
|
36
|
+
"source": "Grid Systems in Graphic Design, J. Müller-Brockmann"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"hex": "#4A7C59",
|
|
40
|
+
"name": "Alpenklee",
|
|
41
|
+
"tradition": "Alpine clover (Alpenklee). Nature as quiet counterpoint to industrial precision; from Swiss landscape graphic tradition.",
|
|
42
|
+
"source": "Armin Hofmann: His Work, Quest and Philosophy, A. Hofmann"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"hex": "#F5F3EE",
|
|
46
|
+
"name": "Elfenbein",
|
|
47
|
+
"tradition": "Ivory; the warm white of quality uncoated Swiss printing paper. The ground of all composition.",
|
|
48
|
+
"source": "Typographic Design: Form and Communication, R. Carter"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"hex": "#1A2530",
|
|
52
|
+
"name": "Russ",
|
|
53
|
+
"tradition": "Soot black (Russ = soot). The color of letterpress ink on uncoated paper — ink-black with depth, not flat digital black.",
|
|
54
|
+
"source": "The New Typography, J. Tschichold"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"validation": {
|
|
58
|
+
"schema": true,
|
|
59
|
+
"contrast": true,
|
|
60
|
+
"completeness": true
|
|
61
|
+
}
|
|
62
|
+
}
|