playbook_ui_docs 14.17.0.pre.alpha.PBNTR920emojipickerpoc7143 → 14.17.0.pre.alpha.PBNTR935draggablelinedesign7118

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 (27) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.jsx +102 -105
  3. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.md +3 -3
  4. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.jsx +50 -48
  5. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.md +1 -1
  6. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.jsx +115 -0
  7. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.md +5 -0
  8. data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_table_react.jsx → _draggable_with_table.jsx} +1 -1
  9. data/app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md +3 -1
  10. data/app/pb_kits/playbook/pb_draggable/docs/example.yml +9 -6
  11. data/app/pb_kits/playbook/pb_draggable/docs/index.js +4 -1
  12. data/app/pb_kits/playbook/pb_text_input/docs/example.yml +0 -1
  13. data/app/pb_kits/playbook/pb_text_input/docs/index.js +0 -1
  14. data/dist/playbook-doc.js +1 -1
  15. metadata +15 -14
  16. data/app/pb_kits/playbook/pb_text_input/docs/_text_input_emoji_picker.jsx +0 -371
  17. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_default_rails.html.erb → _draggable_default.html.erb} +0 -0
  18. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_default.md → _draggable_default_react.md} +0 -0
  19. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_multiple_containers_rails.html.erb → _draggable_multiple_containers.html.erb} +0 -0
  20. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_multiple_containers.md → _draggable_multiple_containers_react.md} +0 -0
  21. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_cards_rails.html.erb → _draggable_with_cards.html.erb} +0 -0
  22. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_cards.md → _draggable_with_cards_react.md} +0 -0
  23. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_list_rails.html.erb → _draggable_with_list.html.erb} +0 -0
  24. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_list.md → _draggable_with_list_react.md} +0 -0
  25. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_selectable_list_rails.html.erb → _draggable_with_selectable_list.html.erb} +0 -0
  26. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_selectable_list.md → _draggable_with_selectable_list_react.md} +0 -0
  27. /data/app/pb_kits/playbook/pb_draggable/docs/{_draggable_with_table.md → _draggable_with_table_rails.md} +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playbook_ui_docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.17.0.pre.alpha.PBNTR920emojipickerpoc7143
4
+ version: 14.17.0.pre.alpha.PBNTR935draggablelinedesign7118
5
5
  platform: ruby
6
6
  authors:
7
7
  - Power UX
@@ -706,33 +706,35 @@ files:
706
706
  - app/pb_kits/playbook/pb_distribution_bar/docs/_distribution_bar_default.jsx
707
707
  - app/pb_kits/playbook/pb_distribution_bar/docs/example.yml
708
708
  - app/pb_kits/playbook/pb_distribution_bar/docs/index.js
709
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_default.html.erb
709
710
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_default.jsx
710
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_default.md
711
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_default_rails.html.erb
712
711
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_default_rails.md
712
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_default_react.md
713
713
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.jsx
714
714
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones.md
715
715
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.jsx
716
716
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_colors.md
717
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.jsx
718
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_drop_zones_line.md
719
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers.html.erb
717
720
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers.jsx
718
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers.md
719
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_rails.html.erb
720
721
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_rails.md
722
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_multiple_containers_react.md
723
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.html.erb
721
724
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.jsx
722
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards.md
723
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_rails.html.erb
724
725
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_rails.md
726
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_cards_react.md
727
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list.html.erb
725
728
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list.jsx
726
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list.md
727
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.html.erb
728
729
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_rails.md
730
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_list_react.md
731
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list.html.erb
729
732
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list.jsx
730
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list.md
731
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.html.erb
732
733
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_rails.md
734
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_selectable_list_react.md
733
735
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.html.erb
734
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.md
735
- - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.jsx
736
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table.jsx
737
+ - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_rails.md
736
738
  - app/pb_kits/playbook/pb_draggable/docs/_draggable_with_table_react.md
737
739
  - app/pb_kits/playbook/pb_draggable/docs/example.yml
738
740
  - app/pb_kits/playbook/pb_draggable/docs/index.js
@@ -1977,7 +1979,6 @@ files:
1977
1979
  - app/pb_kits/playbook/pb_text_input/docs/_text_input_disabled.html.erb
1978
1980
  - app/pb_kits/playbook/pb_text_input/docs/_text_input_disabled.jsx
1979
1981
  - app/pb_kits/playbook/pb_text_input/docs/_text_input_disabled_swift.md
1980
- - app/pb_kits/playbook/pb_text_input/docs/_text_input_emoji_picker.jsx
1981
1982
  - app/pb_kits/playbook/pb_text_input/docs/_text_input_error.html.erb
1982
1983
  - app/pb_kits/playbook/pb_text_input/docs/_text_input_error.jsx
1983
1984
  - app/pb_kits/playbook/pb_text_input/docs/_text_input_error.md
@@ -1,371 +0,0 @@
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