playbook_ui_docs 14.16.0.pre.rc.5 → 14.17.0.pre.alpha.PBNTR920emojipickerpoc7143

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.jsx +90 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_fullscreen.md +3 -0
  4. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_pagination.jsx +0 -1
  5. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows.html.erb +39 -0
  6. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows.html.erb +33 -0
  7. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_no_subrows_rails.md +1 -0
  8. data/app/pb_kits/playbook/pb_advanced_table/docs/_advanced_table_selectable_rows_rails.md +6 -0
  9. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +4 -1
  10. data/app/pb_kits/playbook/pb_advanced_table/docs/index.js +2 -1
  11. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.html.erb +0 -11
  12. data/app/pb_kits/playbook/pb_date_picker/docs/_date_picker_inline.jsx +0 -7
  13. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_default.jsx +1 -0
  14. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.jsx +184 -0
  15. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.md +5 -0
  16. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.jsx +97 -0
  17. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.md +1 -0
  18. data/app/pb_kits/playbook/pb_drawer/docs/_drawer_breakpoints.html.erb +3 -0
  19. data/app/pb_kits/playbook/pb_drawer/docs/example.yml +1 -0
  20. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete.jsx +6 -6
  21. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_autocomplete_and_custom_display.jsx +6 -6
  22. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display.jsx +6 -6
  23. data/app/pb_kits/playbook/pb_dropdown/docs/_dropdown_with_custom_display_rails.html.erb +8 -8
  24. data/app/pb_kits/playbook/pb_form/docs/_form_form_with.html.erb +67 -0
  25. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +67 -0
  26. data/app/pb_kits/playbook/pb_icon/docs/_icon_color.html.erb +10 -4
  27. data/app/pb_kits/playbook/pb_icon/docs/_icon_color.jsx +49 -24
  28. data/app/pb_kits/playbook/pb_icon_button/docs/_icon_button_click.jsx +13 -0
  29. data/app/pb_kits/playbook/pb_icon_button/docs/example.yml +1 -0
  30. data/app/pb_kits/playbook/pb_icon_button/docs/index.js +1 -0
  31. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.jsx +190 -0
  32. data/app/pb_kits/playbook/pb_layout/docs/_layout_bracket.md +5 -0
  33. data/app/pb_kits/playbook/pb_layout/docs/example.yml +1 -0
  34. data/app/pb_kits/playbook/pb_layout/docs/index.js +1 -0
  35. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled.html.erb +1 -1
  36. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.html.erb +76 -0
  37. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.jsx +94 -0
  38. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options.md +1 -0
  39. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.html.erb +75 -0
  40. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.jsx +93 -0
  41. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_default.md +3 -0
  42. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.html.erb +75 -0
  43. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.jsx +93 -0
  44. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent.md +3 -0
  45. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.html.erb +74 -0
  46. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.jsx +92 -0
  47. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_disabled_options_parent_default.md +3 -0
  48. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.html.erb +72 -0
  49. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_error.jsx +97 -0
  50. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.html.erb +71 -0
  51. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_label.jsx +91 -0
  52. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +14 -2
  53. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +6 -0
  54. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_default.html.erb +1 -1
  55. data/app/pb_kits/playbook/pb_section_separator/docs/_section_separator_vertical.md +1 -0
  56. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless.jsx +50 -0
  57. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_borderless_react.md +1 -0
  58. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating.jsx +59 -0
  59. data/app/pb_kits/playbook/pb_table/docs/_table_with_header_style_floating_react.md +1 -0
  60. data/app/pb_kits/playbook/pb_table/docs/example.yml +2 -0
  61. data/app/pb_kits/playbook/pb_table/docs/index.js +2 -0
  62. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_emoji_picker.jsx +371 -0
  63. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +1 -0
  64. data/app/pb_kits/playbook/pb_text_input/docs/index.js +1 -0
  65. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_disabled.html.erb +19 -0
  66. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_disabled.jsx +23 -0
  67. data/app/pb_kits/playbook/pb_typeahead/docs/_typeahead_with_highlight.jsx +4 -4
  68. data/app/pb_kits/playbook/pb_typeahead/docs/example.yml +2 -0
  69. data/app/pb_kits/playbook/pb_typeahead/docs/index.js +1 -0
  70. data/app/pb_kits/playbook/pb_user/docs/_user_font_options.html.erb +22 -0
  71. data/app/pb_kits/playbook/pb_user/docs/_user_font_options.jsx +40 -0
  72. data/app/pb_kits/playbook/pb_user/docs/_user_font_options_rails.md +5 -0
  73. data/app/pb_kits/playbook/pb_user/docs/_user_font_options_react.md +5 -0
  74. data/app/pb_kits/playbook/pb_user/docs/example.yml +2 -0
  75. data/app/pb_kits/playbook/pb_user/docs/index.js +1 -0
  76. data/dist/playbook-doc.js +1 -1
  77. metadata +45 -4
  78. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows_no_subrows.md → _advanced_table_selectable_rows_no_subrows_react.md} +0 -0
  79. /data/app/pb_kits/playbook/pb_advanced_table/docs/{_advanced_table_selectable_rows.md → _advanced_table_selectable_rows_react.md} +0 -0
@@ -0,0 +1,371 @@
1
+ import React, { useState, useEffect } from "react"
2
+ import TextInput from '../../pb_text_input/_text_input'
3
+ import Button from "../../pb_button/_button"
4
+
5
+ // Emojis organized by category with icons for navigation and search names
6
+ const emojiCategories = [
7
+ {
8
+ id: 'recent',
9
+ name: "Recent",
10
+ icon: '🕒',
11
+ emojis: [
12
+ { emoji: '😀', name: 'happy' },
13
+ { emoji: '👍', name: 'thumbs up' },
14
+ { emoji: '🎉', name: 'popper' },
15
+ { emoji: '❤️', name: 'heart' },
16
+ { emoji: '🔥', name: 'fire' },
17
+ { emoji: '✨', name: 'sparkles' }
18
+ ]
19
+ },
20
+ {
21
+ id: 'smileys',
22
+ name: "Smileys",
23
+ icon: '😊',
24
+ emojis: [
25
+ { emoji: '😀', name: 'happy' },
26
+ { emoji: '😂', name: 'lmao' },
27
+ { emoji: '🙂', name: 'smile' },
28
+ { emoji: '😊', name: 'smiley' },
29
+ { emoji: '😍', name: 'smile-heart' },
30
+ { emoji: '🤩', name: 'star-struck' }
31
+ ]
32
+ },
33
+ {
34
+ id: 'people',
35
+ name: "People",
36
+ icon: '👥',
37
+ emojis: [
38
+ { emoji: '👍', name: 'thumbs up' },
39
+ { emoji: '👎', name: 'thumbs down' },
40
+ { emoji: '👌', name: 'OK' },
41
+ { emoji: '👋', name: 'wave' },
42
+ { emoji: '✌️', name: 'victory' },
43
+ { emoji: '🙏', name: 'pray' }
44
+ ]
45
+ },
46
+ {
47
+ id: 'animals',
48
+ name: "Animals",
49
+ icon: '🐼',
50
+ emojis: [
51
+ { emoji: '🐶', name: 'dog' },
52
+ { emoji: '🐱', name: 'cat' },
53
+ { emoji: '🐼', name: 'panda' },
54
+ { emoji: '🦁', name: 'lion' },
55
+ { emoji: '🐢', name: 'turtle' },
56
+ { emoji: '🦋', name: 'butterfly' }
57
+ ]
58
+ },
59
+ {
60
+ id: 'food',
61
+ name: "Food",
62
+ icon: '🍔',
63
+ emojis: [
64
+ { emoji: '🍎', name: 'apple' },
65
+ { emoji: '🍕', name: 'pizza' },
66
+ { emoji: '🍦', name: 'ice cream' },
67
+ { emoji: '🍩', name: 'doughnut' },
68
+ { emoji: '🍷', name: 'wine' },
69
+ { emoji: '🍺', name: 'beer' }
70
+ ]
71
+ },
72
+ {
73
+ id: 'activities',
74
+ name: "Activities",
75
+ icon: '⚽',
76
+ emojis: [
77
+ { emoji: '⚽', name: 'soccer ball' },
78
+ { emoji: '🏀', name: 'basketball' },
79
+ { emoji: '🎮', name: 'video game' },
80
+ { emoji: '🎬', name: 'clapper board' },
81
+ { emoji: '🎨', name: 'artist palette' },
82
+ { emoji: '🎭', name: 'performing arts' }
83
+ ]
84
+ },
85
+ {
86
+ id: 'travel',
87
+ name: "Travel",
88
+ icon: '✈️',
89
+ emojis: [
90
+ { emoji: '🚗', name: 'automobile' },
91
+ { emoji: '✈️', name: 'airplane' },
92
+ { emoji: '🚲', name: 'bicycle' },
93
+ { emoji: '⛵', name: 'sailboat' },
94
+ { emoji: '🏖️', name: 'beach' },
95
+ { emoji: '🗽', name: 'Statue of Liberty' }
96
+ ]
97
+ },
98
+ {
99
+ id: 'symbols',
100
+ name: "Symbols",
101
+ icon: '🔣',
102
+ emojis: [
103
+ { emoji: '❤️', name: 'heart' },
104
+ { emoji: '🔥', name: 'fire' },
105
+ { emoji: '✨', name: 'sparkles' },
106
+ { emoji: '💯', name: 'hundred' },
107
+ { emoji: '⭐', name: 'star' },
108
+ { emoji: '💪', name: 'flex' }
109
+ ]
110
+ }
111
+ ]
112
+
113
+ const TextInputEmojiPicker = (props) => {
114
+ const [inputText, setInputText] = useState('')
115
+ const [showPicker, setShowPicker] = useState(false)
116
+ const [activeCategory, setActiveCategory] = useState('smileys')
117
+ const [searchQuery, setSearchQuery] = useState('')
118
+ const [filteredEmojis, setFilteredEmojis] = useState([])
119
+ const [recentEmojis, setRecentEmojis] = useState([
120
+ { emoji: '😀', name: 'happy' },
121
+ { emoji: '👍', name: 'thumbs up' },
122
+ { emoji: '🎉', name: 'popper' },
123
+ { emoji: '❤️', name: 'heart' },
124
+ { emoji: '🔥', name: 'fire' },
125
+ { emoji: '✨', name: 'sparkles' }
126
+ ])
127
+
128
+ // Handle emoji selection
129
+ const handleEmojiClick = (emojiObj) => {
130
+ setInputText(prevInput => prevInput + emojiObj.emoji)
131
+
132
+ // Add to recent emojis
133
+ if (!recentEmojis.some(item => item.emoji === emojiObj.emoji)) {
134
+ const updatedRecent = [emojiObj, ...recentEmojis.slice(0, 5)]
135
+ setRecentEmojis(updatedRecent)
136
+
137
+ // Update the recent category
138
+ const recentCategory = emojiCategories.find(cat => cat.id === 'recent')
139
+ if (recentCategory) {
140
+ recentCategory.emojis = updatedRecent
141
+ }
142
+ }
143
+
144
+ // Uncomment to close picker after selection
145
+ // setShowPicker(false)
146
+ }
147
+
148
+ // Handle search
149
+ useEffect(() => {
150
+ if (searchQuery.trim() === '') {
151
+ setFilteredEmojis([])
152
+ return
153
+ }
154
+
155
+ // Collect all emojis and filter based on search
156
+ const allEmojis = emojiCategories.flatMap(category =>
157
+ category.emojis.map(emojiObj => ({
158
+ ...emojiObj,
159
+ categoryName: category.name
160
+ }))
161
+ )
162
+
163
+ // Search by emoji name or category
164
+ const filtered = allEmojis.filter(item =>
165
+ item.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
166
+ item.categoryName.toLowerCase().includes(searchQuery.toLowerCase())
167
+ )
168
+
169
+ setFilteredEmojis(filtered)
170
+ }, [searchQuery])
171
+
172
+ return (
173
+ <div className="emoji-container">
174
+ <div className="input-wrapper">
175
+ <TextInput
176
+ id="emoji-text-input"
177
+ name="emojiPicker"
178
+ onChange={(e) => setInputText(e.target.value)}
179
+ placeholder="Enter some emojis here"
180
+ value={inputText}
181
+ {...props}
182
+ />
183
+ <Button
184
+ className="emoji-toggle-button"
185
+ marginRight="lg"
186
+ onClick={() => setShowPicker(!showPicker)}
187
+ variant="link"
188
+ >
189
+ 😊
190
+ </Button>
191
+ </div>
192
+
193
+ {showPicker && (
194
+ <div className="picker-wrapper">
195
+ {/* Search Bar */}
196
+ <TextInput
197
+ onChange={(e) => setSearchQuery(e.target.value)}
198
+ placeholder="Search emojis..."
199
+ type="text"
200
+ value={searchQuery}
201
+ {...props}
202
+ />
203
+
204
+ {/* Category Navigation */}
205
+ <div className="category-nav">
206
+ {emojiCategories.map(category => (
207
+ <button
208
+ className={`category-button ${activeCategory === category.id ? 'active' : ''}`}
209
+ key={category.id}
210
+ onClick={() => {
211
+ setActiveCategory(category.id)
212
+ setSearchQuery('')
213
+ document.getElementById(`category-${category.id}`)?.scrollIntoView({ behavior: 'smooth' })
214
+ }}
215
+ title={category.name}
216
+ >
217
+ {category.icon}
218
+ </button>
219
+ ))}
220
+ </div>
221
+
222
+ {/* Emoji Content */}
223
+ <div className="emoji-content">
224
+ {searchQuery.trim() !== '' ? (
225
+ // Search Results
226
+ <div className="search-results">
227
+ <div className="category-title">Search Results</div>
228
+ {filteredEmojis.length > 0 ? (
229
+ <div className="emoji-grid">
230
+ {filteredEmojis.map((item, index) => (
231
+ <Button
232
+ className="emoji-button"
233
+ key={`search-${index}`}
234
+ onClick={() => handleEmojiClick(item)}
235
+ title={item.name}
236
+ variant="link"
237
+ >
238
+ {item.emoji}
239
+ </Button>
240
+ ))}
241
+ </div>
242
+ ) : (
243
+ <div className="no-results">No emojis found</div>
244
+ )}
245
+ </div>
246
+ ) : (
247
+ // All Categories
248
+ <div className="all-categories">
249
+ {emojiCategories.map(category => (
250
+ <div
251
+ className="category-section"
252
+ id={`category-${category.id}`}
253
+ key={category.id}
254
+ >
255
+ <div className="category-title">
256
+ {category.name}
257
+ </div>
258
+ <div className="emoji-grid">
259
+ {category.emojis.map((emojiObj, index) => (
260
+ <Button
261
+ className="emoji-button"
262
+ key={`${category.id}-${index}`}
263
+ onClick={() => handleEmojiClick(emojiObj)}
264
+ title={emojiObj.name}
265
+ variant="link"
266
+ >
267
+ {emojiObj.emoji}
268
+ </Button>
269
+ ))}
270
+ </div>
271
+ </div>
272
+ ))}
273
+ </div>
274
+ )}
275
+ </div>
276
+ </div>
277
+ )}
278
+
279
+ <style jsx>{`
280
+ .emoji-container {
281
+ font-family: Arial, sans-serif;
282
+ max-width: 500px;
283
+ position: relative;
284
+ }
285
+
286
+ .input-wrapper {
287
+ display: flex;
288
+ margin-bottom: 10px;
289
+ position: relative;
290
+ }
291
+
292
+ .picker-wrapper {
293
+ position: absolute;
294
+ z-index: 100;
295
+ margin-top: 5px;
296
+ background: white;
297
+ border: 1px solid #ddd;
298
+ border-radius: 8px;
299
+ padding: 12px;
300
+ box-shadow: 0 2px 15px rgba(0,0,0,0.1);
301
+ width: 320px;
302
+ }
303
+
304
+ .search-container {
305
+ margin-bottom: 12px;
306
+ }
307
+
308
+ .category-nav {
309
+ display: flex;
310
+ overflow-x: auto;
311
+ padding-bottom: 8px;
312
+ margin-bottom: 12px;
313
+ border-bottom: 1px solid #eee;
314
+ }
315
+
316
+ .category-button {
317
+ background: none;
318
+ border: none;
319
+ font-size: 18px;
320
+ padding: 8px;
321
+ cursor: pointer;
322
+ margin-right: 4px;
323
+ border-radius: 4px;
324
+ min-width: 36px;
325
+ }
326
+
327
+ .category-button.active {
328
+ background-color: #f0f0f0;
329
+ }
330
+
331
+ .emoji-content {
332
+ max-height: 300px;
333
+ overflow-y: auto;
334
+ scroll-behavior: smooth;
335
+ }
336
+
337
+ .all-categories {
338
+ display: flex;
339
+ flex-direction: column;
340
+ gap: 16px;
341
+ }
342
+
343
+ .category-section {
344
+ padding-top: 8px;
345
+ scroll-margin-top: 8px;
346
+ }
347
+
348
+ .category-title {
349
+ font-weight: bold;
350
+ margin-bottom: 8px;
351
+ color: #555;
352
+ font-size: 14px;
353
+ }
354
+
355
+ .emoji-grid {
356
+ display: grid;
357
+ grid-template-columns: repeat(6, 1fr);
358
+ gap: 2px;
359
+ }
360
+
361
+ .no-results {
362
+ padding: 20px;
363
+ text-align: center;
364
+ color: #999;
365
+ }
366
+ `}</style>
367
+ </div>
368
+ );
369
+ };
370
+
371
+ export default TextInputEmojiPicker
@@ -18,6 +18,7 @@ examples:
18
18
  - text_input_inline: Inline
19
19
  - text_input_no_label: No Label
20
20
  - text_input_mask: Mask
21
+ - text_input_emoji_picker: Emoji Picker
21
22
 
22
23
  swift:
23
24
  - text_input_default_swift: Default
@@ -6,3 +6,4 @@ export { default as TextInputAddOn } from './_text_input_add_on.jsx'
6
6
  export { default as TextInputInline } from './_text_input_inline.jsx'
7
7
  export { default as TextInputNoLabel } from './_text_input_no_label.jsx'
8
8
  export { default as TextInputMask } from './_text_input_mask.jsx'
9
+ export { default as TextInputEmojiPicker } from './_text_input_emoji_picker.jsx'
@@ -0,0 +1,19 @@
1
+ <%
2
+ options = [
3
+ { label: 'Orange', value: '#FFA500' },
4
+ { label: 'Red', value: '#FF0000' },
5
+ { label: 'Green', value: '#00FF00' },
6
+ { label: 'Blue', value: '#0000FF' },
7
+ ]
8
+ %>
9
+
10
+ <%= pb_rails("typeahead", props: {
11
+ id: "typeahead-disabled",
12
+ disabled: true,
13
+ placeholder: "All Colors",
14
+ options: options,
15
+ label: "Colors",
16
+ name: :foo,
17
+ is_multi: false
18
+ })
19
+ %>
@@ -0,0 +1,23 @@
1
+ import React from 'react'
2
+
3
+ import Typeahead from '../_typeahead'
4
+
5
+ const options = [
6
+ { label: 'Orange', value: '#FFA500' },
7
+ { label: 'Red', value: '#FF0000' },
8
+ { label: 'Green', value: '#00FF00' },
9
+ { label: 'Blue', value: '#0000FF' },
10
+ ]
11
+
12
+ const TypeaheadDisabled = (props) => {
13
+ return (
14
+ <Typeahead
15
+ disabled
16
+ label="Colors"
17
+ options={options}
18
+ {...props}
19
+ />
20
+ )
21
+ }
22
+
23
+ export default TypeaheadDisabled
@@ -18,18 +18,18 @@ const USERS = [
18
18
  territory: "PHL",
19
19
  },
20
20
  {
21
- name: "Jason Cypret",
22
- title: "Vice President of User Experience",
21
+ name: "Carlos Lima",
22
+ title: "Nitro Developer",
23
23
  territory: "PHL",
24
24
  },
25
25
  {
26
26
  name: "Stephen Marshall",
27
- title: "Senior User Experience Engineer",
27
+ title: "Senior Nitro Developer",
28
28
  territory: "PHL",
29
29
  },
30
30
  {
31
31
  name: "Jasper Furniss",
32
- title: "Senior User Experience Engineer",
32
+ title: "Lead User Experience Engineer",
33
33
  territory: "PHL",
34
34
  },
35
35
  ];
@@ -14,6 +14,7 @@ examples:
14
14
  - typeahead_truncated_text: Truncated Text
15
15
  - typeahead_dynamic_options: Dynamic Options
16
16
  - typeahead_dynamic_options_pure_rails: Dynamic Options (Pure Rails)
17
+ - typeahead_disabled: Disabled
17
18
 
18
19
  react:
19
20
  - typeahead_default: Default
@@ -32,3 +33,4 @@ examples:
32
33
  - typeahead_margin_bottom: Margin Bottom
33
34
  - typeahead_with_pills_color: With Pills (Custom Color)
34
35
  - typeahead_truncated_text: Truncated Text
36
+ - typeahead_disabled: Disabled
@@ -14,3 +14,4 @@ export { default as TypeaheadMarginBottom } from './_typeahead_margin_bottom.jsx
14
14
  export { default as TypeaheadWithPillsColor } from './_typeahead_with_pills_color.jsx'
15
15
  export { default as TypeaheadTruncatedText } from './_typeahead_truncated_text.jsx'
16
16
  export { default as TypeaheadReactHook } from './_typeahead_react_hook.jsx'
17
+ export { default as TypeaheadDisabled } from './_typeahead_disabled.jsx'
@@ -0,0 +1,22 @@
1
+ <div class="pb--doc-demo-row">
2
+ <%= pb_rails("user", props: {
3
+ align: "left",
4
+ avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
5
+ name: "Anna Black",
6
+ name_style: "body",
7
+ orientation: "horizontal",
8
+ size: "md",
9
+ territory: "PHL",
10
+ title: "Remodeling Consultant"
11
+ }) %>
12
+ <%= pb_rails("user", props: {
13
+ align: "left",
14
+ avatar_url: "https://randomuser.me/api/portraits/women/44.jpg",
15
+ name: "Anna Black",
16
+ name_style: "detail",
17
+ orientation: "horizontal",
18
+ size: "md",
19
+ territory: "PHL",
20
+ title: "Remodeling Consultant"
21
+ }) %>
22
+ </div>
@@ -0,0 +1,40 @@
1
+ import React from 'react'
2
+ import { User } from 'playbook-ui'
3
+
4
+ const UserFontOptions = (props) => {
5
+ return (
6
+ <div>
7
+ <div className="pb--doc-demo-row">
8
+ <div>
9
+ <User
10
+ align="center"
11
+ avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
12
+ name="Anna Black"
13
+ nameStyle= "body"
14
+ orientation="horizontal"
15
+ size= "md"
16
+ territory= "PHL"
17
+ title="Remodeling Consultant"
18
+ {...props}
19
+ />
20
+ </div>
21
+
22
+ <div>
23
+ <User
24
+ align="left"
25
+ avatarUrl="https://randomuser.me/api/portraits/women/44.jpg"
26
+ name="Anna Black"
27
+ nameStyle= "detail"
28
+ orientation="horizontal"
29
+ size= "md"
30
+ territory= "PHL"
31
+ title= "Remodeling Consultant"
32
+ {...props}
33
+ />
34
+ </div>
35
+ </div>
36
+ </div>
37
+ )
38
+ }
39
+
40
+ export default UserFontOptions
@@ -0,0 +1,5 @@
1
+ Passing a `name_style` prop changes the type kit used for the user name. You can choose between `title`, `body`, `caption`, and `detail`. `title` is the default.
2
+
3
+ Passing a `title_style` prop changes the type kit used for the user title. You can choose between `body`, `caption`, and `detail`. `body` is the default.
4
+
5
+ The size of the `caption` is determined by the `size` prop.
@@ -0,0 +1,5 @@
1
+ Passing a `nameStyle` prop changes the type kit used for the user name. You can choose between `title`, `body`, `caption`, and `detail`. `title` is the default.
2
+
3
+ Passing a `titleStyle` prop changes the type kit used for the user title. You can choose between `body`, `caption`, and `detail`. `body` is the default.
4
+
5
+ The size of the `caption` is determined by the `size` prop.
@@ -9,6 +9,7 @@ examples:
9
9
  - user_vertical_size: Vertical Size
10
10
  - user_subtitle: Subtitle
11
11
  - user_block_content_subtitle_rails: Block Content Subtitle
12
+ - user_font_options: Font Options
12
13
 
13
14
  react:
14
15
  - user_default: Default
@@ -19,6 +20,7 @@ examples:
19
20
  - user_vertical_size: Vertical Size
20
21
  - user_subtitle: Subtitle
21
22
  - user_block_content_subtitle_react: Block Content Subtitle
23
+ - user_font_options: Font Options
22
24
 
23
25
  swift:
24
26
  - user_horizontal_swift: Horizontal
@@ -6,3 +6,4 @@ export { default as UserSize } from './_user_size.jsx'
6
6
  export { default as UserVerticalSize } from './_user_vertical_size.jsx'
7
7
  export { default as UserSubtitle } from './_user_subtitle.jsx'
8
8
  export { default as UserBlockContentSubtitleReact } from './_user_block_content_subtitle_react.jsx'
9
+ export { default as UserFontOptions } from './_user_font_options.jsx'