@teseor/css 1.10.0 → 1.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.
- package/dist/compiled.css +1 -1
- package/dist/index.css +35 -34
- package/package.json +1 -1
- package/src/components/actions/button/button.docs.json +62 -0
- package/src/components/actions/button/index.scss +4 -4
- package/src/components/content/divider/index.scss +1 -1
- package/src/components/data-display/card/index.scss +17 -15
- package/src/components/data-display/data-list/data-list-visual.png +0 -0
- package/src/components/data-display/data-list/data-list.api.json +3 -3
- package/src/components/data-display/data-list/index.scss +13 -6
- package/src/components/data-display/image/index.scss +1 -1
- package/src/components/data-display/status/index.scss +17 -17
- package/src/components/data-display/status/status.api.json +3 -3
- package/src/components/disclosure/accordion/index.scss +5 -2
- package/src/components/disclosure/disclosure/disclosure.api.json +2 -2
- package/src/components/disclosure/disclosure/index.scss +6 -2
- package/src/components/feedback/progress/index.scss +5 -5
- package/src/components/feedback/progress-circle/index.scss +10 -10
- package/src/components/feedback/spinner/index.scss +10 -10
- package/src/components/feedback/toast/index.scss +5 -5
- package/src/components/forms/form-error/index.scss +2 -2
- package/src/components/forms/form-helper/form-helper-visual.png +0 -0
- package/src/components/forms/form-helper/form-helper.docs.json +118 -0
- package/src/components/forms/form-helper/index.scss +2 -2
- package/src/components/forms/label/index.scss +1 -1
- package/src/components/forms/slider/index.scss +9 -9
- package/src/components/forms/toggle/index.scss +3 -3
- package/src/components/navigation/breadcrumb/index.scss +5 -5
- package/src/components/navigation/menu/index.scss +1 -1
- package/src/components/navigation/nav/index.scss +2 -2
- package/src/components/navigation/nav/nav.docs.json +62 -0
- package/src/components/navigation/pagination/index.scss +13 -13
- package/src/components/navigation/tabs/index.scss +2 -2
- package/src/components/overlays/drawer/index.scss +1 -1
- package/src/components/typography/heading/index.scss +1 -0
- package/src/components/typography/link/index.scss +6 -6
- package/src/config/tokens/_variables.scss +8 -0
- package/src/config/tokens/accessibility.docs.json +21 -0
- package/src/config/tokens/semantic/colors/index.scss +25 -0
- package/src/layout/center/center-visual.png +0 -0
- package/src/layout/center/center.docs.json +40 -1
- package/src/layout/container/container.docs.json +85 -0
- package/src/layout/main/main.docs.json +87 -0
- package/src/utilities/display/display.docs.json +55 -0
- package/src/utilities/index.scss +1 -0
- package/src/utilities/scroll-snap/index.scss +66 -0
- package/src/utilities/scroll-snap/scroll-snap.api.json +19 -0
- package/src/utilities/scroll-snap/scroll-snap.docs.json +144 -0
- package/src/utilities/spacing/spacing.docs.json +92 -2
- package/src/utilities/text/text.api.json +7 -1
- package/src/utilities/text/text.docs.json +59 -0
- package/src/utilities/text/text.scss +42 -0
package/src/utilities/index.scss
CHANGED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Scroll-snap utilities
|
|
2
|
+
|
|
3
|
+
@layer utilities {
|
|
4
|
+
// ==========================================================================
|
|
5
|
+
// SCROLL SNAP CONTAINERS
|
|
6
|
+
// ==========================================================================
|
|
7
|
+
.snap-x {
|
|
8
|
+
overflow-x: auto;
|
|
9
|
+
scroll-snap-type: x mandatory;
|
|
10
|
+
overscroll-behavior-x: contain;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.snap-y {
|
|
14
|
+
overflow-y: auto;
|
|
15
|
+
scroll-snap-type: y mandatory;
|
|
16
|
+
overscroll-behavior-y: contain;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.snap-x-proximity {
|
|
20
|
+
overflow-x: auto;
|
|
21
|
+
scroll-snap-type: x proximity;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.snap-y-proximity {
|
|
25
|
+
overflow-y: auto;
|
|
26
|
+
scroll-snap-type: y proximity;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.snap-none {
|
|
30
|
+
scroll-snap-type: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ==========================================================================
|
|
34
|
+
// SCROLL SNAP CHILDREN
|
|
35
|
+
// ==========================================================================
|
|
36
|
+
.snap-start {
|
|
37
|
+
scroll-snap-align: start;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.snap-center {
|
|
41
|
+
scroll-snap-align: center;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.snap-end {
|
|
45
|
+
scroll-snap-align: end;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.snap-always {
|
|
49
|
+
scroll-snap-stop: always;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ==========================================================================
|
|
53
|
+
// SCROLL PADDING (on container, for fixed headers/offsets)
|
|
54
|
+
// ==========================================================================
|
|
55
|
+
.snap-p-1 {
|
|
56
|
+
scroll-padding: var(--ui-space-1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.snap-p-2 {
|
|
60
|
+
scroll-padding: var(--ui-space-2);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.snap-p-4 {
|
|
64
|
+
scroll-padding: var(--ui-space-4);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "scroll-snap",
|
|
3
|
+
"type": "utility",
|
|
4
|
+
"utilities": [
|
|
5
|
+
"snap-x",
|
|
6
|
+
"snap-y",
|
|
7
|
+
"snap-x-proximity",
|
|
8
|
+
"snap-y-proximity",
|
|
9
|
+
"snap-none",
|
|
10
|
+
"snap-start",
|
|
11
|
+
"snap-center",
|
|
12
|
+
"snap-end",
|
|
13
|
+
"snap-always",
|
|
14
|
+
"snap-p-1",
|
|
15
|
+
"snap-p-2",
|
|
16
|
+
"snap-p-4"
|
|
17
|
+
],
|
|
18
|
+
"cssVars": []
|
|
19
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "scroll-snap-utils",
|
|
3
|
+
"type": "utility",
|
|
4
|
+
"title": "Scroll Snap",
|
|
5
|
+
"description": "Scroll-snap utilities for carousels, horizontal lists, and snap-to-position scrolling.",
|
|
6
|
+
"api": "scroll-snap.api.json",
|
|
7
|
+
"sections": [
|
|
8
|
+
{
|
|
9
|
+
"title": "Horizontal Snap",
|
|
10
|
+
"description": "Snap children to start position on horizontal scroll.",
|
|
11
|
+
"examples": [
|
|
12
|
+
{
|
|
13
|
+
"items": [
|
|
14
|
+
{
|
|
15
|
+
"tag": "div",
|
|
16
|
+
"class": "ui-snap-x ui-flex ui-gap-2 ui-p-2",
|
|
17
|
+
"style": { "max-inline-size": "20rem" },
|
|
18
|
+
"children": [
|
|
19
|
+
{
|
|
20
|
+
"tag": "div",
|
|
21
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
22
|
+
"style": { "min-inline-size": "10rem" },
|
|
23
|
+
"text": "Item 1"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"tag": "div",
|
|
27
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
28
|
+
"style": { "min-inline-size": "10rem" },
|
|
29
|
+
"text": "Item 2"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"tag": "div",
|
|
33
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
34
|
+
"style": { "min-inline-size": "10rem" },
|
|
35
|
+
"text": "Item 3"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"tag": "div",
|
|
39
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
40
|
+
"style": { "min-inline-size": "10rem" },
|
|
41
|
+
"text": "Item 4"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"code": "<div class=\"ui-snap-x ui-flex ui-gap-2\">\n <div class=\"ui-snap-start\">Item 1</div>\n <div class=\"ui-snap-start\">Item 2</div>\n <div class=\"ui-snap-start\">Item 3</div>\n</div>"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"title": "Center Snap",
|
|
52
|
+
"description": "Snap children to center position.",
|
|
53
|
+
"examples": [
|
|
54
|
+
{
|
|
55
|
+
"items": [
|
|
56
|
+
{
|
|
57
|
+
"tag": "div",
|
|
58
|
+
"class": "ui-snap-x ui-flex ui-gap-2 ui-p-2",
|
|
59
|
+
"style": { "max-inline-size": "20rem" },
|
|
60
|
+
"children": [
|
|
61
|
+
{
|
|
62
|
+
"tag": "div",
|
|
63
|
+
"class": "ui-snap-center ui-card ui-p-2",
|
|
64
|
+
"style": { "min-inline-size": "10rem" },
|
|
65
|
+
"text": "Center 1"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"tag": "div",
|
|
69
|
+
"class": "ui-snap-center ui-card ui-p-2",
|
|
70
|
+
"style": { "min-inline-size": "10rem" },
|
|
71
|
+
"text": "Center 2"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"tag": "div",
|
|
75
|
+
"class": "ui-snap-center ui-card ui-p-2",
|
|
76
|
+
"style": { "min-inline-size": "10rem" },
|
|
77
|
+
"text": "Center 3"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"code": "<div class=\"ui-snap-x ui-flex ui-gap-2\">\n <div class=\"ui-snap-center\">Center 1</div>\n <div class=\"ui-snap-center\">Center 2</div>\n</div>"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"title": "Vertical Snap",
|
|
88
|
+
"description": "Snap children on vertical scroll.",
|
|
89
|
+
"examples": [
|
|
90
|
+
{
|
|
91
|
+
"items": [
|
|
92
|
+
{
|
|
93
|
+
"tag": "div",
|
|
94
|
+
"class": "ui-snap-y",
|
|
95
|
+
"style": { "max-block-size": "8rem" },
|
|
96
|
+
"children": [
|
|
97
|
+
{ "tag": "div", "class": "ui-snap-start ui-card ui-p-2", "text": "Section 1" },
|
|
98
|
+
{ "tag": "div", "class": "ui-snap-start ui-card ui-p-2", "text": "Section 2" },
|
|
99
|
+
{ "tag": "div", "class": "ui-snap-start ui-card ui-p-2", "text": "Section 3" }
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"code": "<div class=\"ui-snap-y\" style=\"max-block-size: 8rem\">\n <div class=\"ui-snap-start\">Section 1</div>\n <div class=\"ui-snap-start\">Section 2</div>\n</div>"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"title": "Scroll Padding",
|
|
109
|
+
"description": "Offset snap position for fixed headers or insets.",
|
|
110
|
+
"examples": [
|
|
111
|
+
{
|
|
112
|
+
"items": [
|
|
113
|
+
{
|
|
114
|
+
"tag": "div",
|
|
115
|
+
"class": "ui-snap-x ui-snap-p-2 ui-flex ui-gap-2 ui-p-2",
|
|
116
|
+
"style": { "max-inline-size": "20rem" },
|
|
117
|
+
"children": [
|
|
118
|
+
{
|
|
119
|
+
"tag": "div",
|
|
120
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
121
|
+
"style": { "min-inline-size": "10rem" },
|
|
122
|
+
"text": "Padded 1"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"tag": "div",
|
|
126
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
127
|
+
"style": { "min-inline-size": "10rem" },
|
|
128
|
+
"text": "Padded 2"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"tag": "div",
|
|
132
|
+
"class": "ui-snap-start ui-card ui-p-2",
|
|
133
|
+
"style": { "min-inline-size": "10rem" },
|
|
134
|
+
"text": "Padded 3"
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"code": "<div class=\"ui-snap-x ui-snap-p-2 ui-flex ui-gap-2\">\n <div class=\"ui-snap-start\">Padded 1</div>\n <div class=\"ui-snap-start\">Padded 2</div>\n</div>"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"api": "spacing.api.json",
|
|
7
7
|
"sections": [
|
|
8
8
|
{
|
|
9
|
+
"title": "Padding",
|
|
9
10
|
"examples": [
|
|
10
11
|
{
|
|
11
12
|
"layout": "column",
|
|
@@ -27,15 +28,104 @@
|
|
|
27
28
|
"class": "ui-p-4",
|
|
28
29
|
"text": "p-4 (32px padding)",
|
|
29
30
|
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
30
|
-
}
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"code": "<div class=\"ui-p-1\">...</div>\n<div class=\"ui-p-2\">...</div>\n<div class=\"ui-p-4\">...</div>"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"title": "Directional Padding",
|
|
39
|
+
"examples": [
|
|
40
|
+
{
|
|
41
|
+
"layout": "column",
|
|
42
|
+
"items": [
|
|
31
43
|
{
|
|
32
44
|
"tag": "div",
|
|
33
45
|
"class": "ui-px-4 ui-py-2",
|
|
34
46
|
"text": "px-4 py-2 (horizontal 32px, vertical 16px)",
|
|
35
47
|
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"tag": "div",
|
|
51
|
+
"class": "ui-pt-4 ui-pb-1",
|
|
52
|
+
"text": "pt-4 pb-1 (top 32px, bottom 8px)",
|
|
53
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"tag": "div",
|
|
57
|
+
"class": "ui-ps-4 ui-pe-1",
|
|
58
|
+
"text": "ps-4 pe-1 (start 32px, end 8px)",
|
|
59
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"code": "<div class=\"ui-px-4 ui-py-2\">...</div>\n<div class=\"ui-pt-4 ui-pb-1\">...</div>\n<div class=\"ui-ps-4 ui-pe-1\">...</div>"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"title": "Margin",
|
|
68
|
+
"examples": [
|
|
69
|
+
{
|
|
70
|
+
"layout": "column",
|
|
71
|
+
"items": [
|
|
72
|
+
{
|
|
73
|
+
"tag": "div",
|
|
74
|
+
"class": "ui-mb-2",
|
|
75
|
+
"text": "mb-2 (16px bottom margin)",
|
|
76
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"tag": "div",
|
|
80
|
+
"class": "ui-mt-4 ui-mb-2",
|
|
81
|
+
"text": "mt-4 mb-2 (top 32px, bottom 16px)",
|
|
82
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"tag": "div",
|
|
86
|
+
"class": "ui-mx-auto",
|
|
87
|
+
"text": "mx-auto (centered with auto margins)",
|
|
88
|
+
"style": {
|
|
89
|
+
"background": "var(--ui-color-bg-muted)",
|
|
90
|
+
"max-inline-size": "var(--ui-row-8)"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"code": "<div class=\"ui-mb-2\">...</div>\n<div class=\"ui-mt-4 ui-mb-2\">...</div>\n<div class=\"ui-mx-auto\">...</div>"
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"title": "Gap",
|
|
100
|
+
"examples": [
|
|
101
|
+
{
|
|
102
|
+
"items": [
|
|
103
|
+
{
|
|
104
|
+
"tag": "div",
|
|
105
|
+
"class": "ui-flex ui-gap-2",
|
|
106
|
+
"children": [
|
|
107
|
+
{
|
|
108
|
+
"tag": "div",
|
|
109
|
+
"class": "ui-p-2",
|
|
110
|
+
"text": "Item",
|
|
111
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"tag": "div",
|
|
115
|
+
"class": "ui-p-2",
|
|
116
|
+
"text": "Item",
|
|
117
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"tag": "div",
|
|
121
|
+
"class": "ui-p-2",
|
|
122
|
+
"text": "Item",
|
|
123
|
+
"style": { "background": "var(--ui-color-bg-muted)" }
|
|
124
|
+
}
|
|
125
|
+
]
|
|
36
126
|
}
|
|
37
127
|
],
|
|
38
|
-
"code": "<div class=\"ui-
|
|
128
|
+
"code": "<div class=\"ui-flex ui-gap-2\">\n <div>Item</div>\n <div>Item</div>\n <div>Item</div>\n</div>"
|
|
39
129
|
}
|
|
40
130
|
]
|
|
41
131
|
}
|
|
@@ -127,6 +127,65 @@
|
|
|
127
127
|
]
|
|
128
128
|
}
|
|
129
129
|
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"title": "Text Wrap",
|
|
133
|
+
"description": "Control how text wraps across lines.",
|
|
134
|
+
"examples": [
|
|
135
|
+
{
|
|
136
|
+
"layout": "column",
|
|
137
|
+
"items": [
|
|
138
|
+
{
|
|
139
|
+
"tag": "p",
|
|
140
|
+
"class": "ui-text-balance ui-text-2xl ui-font-bold",
|
|
141
|
+
"style": { "max-inline-size": "20rem" },
|
|
142
|
+
"text": "Balanced: distributes text evenly across lines"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"tag": "p",
|
|
146
|
+
"class": "ui-text-pretty",
|
|
147
|
+
"style": { "max-inline-size": "20rem" },
|
|
148
|
+
"text": "Pretty: avoids orphans and widows for cleaner body text paragraphs that wrap naturally"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"tag": "p",
|
|
152
|
+
"class": "ui-text-nowrap",
|
|
153
|
+
"text": "Nowrap: prevents text from wrapping to the next line"
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"code": "<p class=\"ui-text-balance\">Balanced heading text</p>\n<p class=\"ui-text-pretty\">Pretty body text</p>\n<p class=\"ui-text-nowrap\">No wrap text</p>"
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"title": "Multi-line Truncation",
|
|
162
|
+
"description": "Clamp text to a specific number of lines with ellipsis.",
|
|
163
|
+
"examples": [
|
|
164
|
+
{
|
|
165
|
+
"layout": "column",
|
|
166
|
+
"items": [
|
|
167
|
+
{
|
|
168
|
+
"tag": "p",
|
|
169
|
+
"class": "ui-truncate-2",
|
|
170
|
+
"style": { "max-inline-size": "20rem" },
|
|
171
|
+
"text": "Truncate to 2 lines: This is a long paragraph that will be clamped after two lines of text. Any overflow content will be hidden and replaced with an ellipsis character."
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"tag": "p",
|
|
175
|
+
"class": "ui-truncate-3",
|
|
176
|
+
"style": { "max-inline-size": "20rem" },
|
|
177
|
+
"text": "Truncate to 3 lines: This is a long paragraph that will be clamped after three lines of text. Any overflow content beyond the third line will be hidden and replaced with an ellipsis character at the end."
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"tag": "p",
|
|
181
|
+
"class": "ui-truncate-4",
|
|
182
|
+
"style": { "max-inline-size": "20rem" },
|
|
183
|
+
"text": "Truncate to 4 lines: This is a long paragraph that will be clamped after four lines. It gives more room for content previews while still maintaining a consistent height. Overflow beyond line four is hidden with ellipsis."
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"code": "<p class=\"ui-truncate-2\">Long text clamped to 2 lines...</p>\n<p class=\"ui-truncate-3\">Long text clamped to 3 lines...</p>\n<p class=\"ui-truncate-4\">Long text clamped to 4 lines...</p>"
|
|
187
|
+
}
|
|
188
|
+
]
|
|
130
189
|
}
|
|
131
190
|
]
|
|
132
191
|
}
|
|
@@ -214,6 +214,48 @@
|
|
|
214
214
|
white-space: pre-wrap;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
+
// ==========================================================================
|
|
218
|
+
// TEXT WRAP
|
|
219
|
+
// ==========================================================================
|
|
220
|
+
.text-balance {
|
|
221
|
+
text-wrap: balance;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.text-pretty {
|
|
225
|
+
text-wrap: pretty;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.text-nowrap {
|
|
229
|
+
text-wrap: nowrap;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// ==========================================================================
|
|
233
|
+
// MULTI-LINE TRUNCATION
|
|
234
|
+
// ==========================================================================
|
|
235
|
+
.truncate-2 {
|
|
236
|
+
display: -webkit-box;
|
|
237
|
+
-webkit-box-orient: vertical;
|
|
238
|
+
-webkit-line-clamp: 2;
|
|
239
|
+
|
|
240
|
+
overflow: hidden;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.truncate-3 {
|
|
244
|
+
display: -webkit-box;
|
|
245
|
+
-webkit-box-orient: vertical;
|
|
246
|
+
-webkit-line-clamp: 3;
|
|
247
|
+
|
|
248
|
+
overflow: hidden;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.truncate-4 {
|
|
252
|
+
display: -webkit-box;
|
|
253
|
+
-webkit-box-orient: vertical;
|
|
254
|
+
-webkit-line-clamp: 4;
|
|
255
|
+
|
|
256
|
+
overflow: hidden;
|
|
257
|
+
}
|
|
258
|
+
|
|
217
259
|
// ==========================================================================
|
|
218
260
|
// LINE LENGTH (for readable text)
|
|
219
261
|
// ==========================================================================
|