playbook_ui 13.10.0 → 13.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_button/docs/_button_circle_swift.md +28 -0
  3. data/app/pb_kits/playbook/pb_button/docs/_button_default_swift.md +23 -0
  4. data/app/pb_kits/playbook/pb_button/docs/_button_full_width_swift.md +9 -0
  5. data/app/pb_kits/playbook/pb_button/docs/_button_icon_options_swift.md +18 -0
  6. data/app/pb_kits/playbook/pb_button/docs/_button_props_swift.md +11 -0
  7. data/app/pb_kits/playbook/pb_button/docs/_button_size_swift.md +20 -0
  8. data/app/pb_kits/playbook/pb_button/docs/example.yml +8 -0
  9. data/app/pb_kits/playbook/pb_card/docs/_card_background_swift.md +29 -0
  10. data/app/pb_kits/playbook/pb_card/docs/_card_border_none_swift.md +7 -0
  11. data/app/pb_kits/playbook/pb_card/docs/_card_border_radius_swift.md +33 -0
  12. data/app/pb_kits/playbook/pb_card/docs/_card_header_swift.md +33 -0
  13. data/app/pb_kits/playbook/pb_card/docs/_card_highlight_swift.md +17 -0
  14. data/app/pb_kits/playbook/pb_card/docs/_card_light_swift.md +7 -0
  15. data/app/pb_kits/playbook/pb_card/docs/_card_padding_swift.md +33 -0
  16. data/app/pb_kits/playbook/pb_card/docs/_card_props_swift.md +10 -0
  17. data/app/pb_kits/playbook/pb_card/docs/_card_selected_swift.md +0 -0
  18. data/app/pb_kits/playbook/pb_card/docs/_card_separator_swift.md +11 -0
  19. data/app/pb_kits/playbook/pb_card/docs/_card_shadow_swift.md +21 -0
  20. data/app/pb_kits/playbook/pb_card/docs/_card_styles_swift.md +17 -0
  21. data/app/pb_kits/playbook/pb_card/docs/_card_tag_swift.md +0 -0
  22. data/app/pb_kits/playbook/pb_card/docs/example.yml +12 -0
  23. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_default_swift.md +10 -0
  24. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_error_swift.md +12 -0
  25. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_indeterminate_swift.md +12 -0
  26. data/app/pb_kits/playbook/pb_checkbox/docs/_checkbox_props_swift.md +7 -0
  27. data/app/pb_kits/playbook/pb_checkbox/docs/example.yml +7 -0
  28. data/app/pb_kits/playbook/pb_docs/kit_example.html.erb +3 -3
  29. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color_props.md +6 -0
  30. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_color_swift.md +16 -0
  31. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_defaul_swift.md +7 -0
  32. data/app/pb_kits/playbook/pb_icon_circle/docs/_icon_circle_sizes_swift.md +11 -0
  33. data/app/pb_kits/playbook/pb_icon_circle/docs/example.yml +7 -0
  34. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +27 -20
  35. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_selected_ids.html.erb +0 -1
  36. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.html.erb +104 -45
  37. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.jsx +100 -43
  38. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single.md +1 -0
  39. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.html.erb +138 -0
  40. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.jsx +150 -0
  41. data/app/pb_kits/playbook/pb_multi_level_select/docs/_multi_level_select_single_children_only.md +1 -0
  42. data/app/pb_kits/playbook/pb_multi_level_select/docs/example.yml +2 -0
  43. data/app/pb_kits/playbook/pb_multi_level_select/docs/index.js +1 -0
  44. data/app/pb_kits/playbook/pb_rich_text_editor/_rich_text_editor.tsx +10 -2
  45. data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +8 -4
  46. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.jsx +33 -0
  47. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_toolbar_disabled.md +3 -0
  48. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +1 -0
  49. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +2 -1
  50. data/app/pb_kits/playbook/pb_rich_text_editor/rich_text_editor_advanced.test.js +47 -0
  51. data/app/pb_kits/playbook/pb_table/docs/_table_header.html.erb +47 -31
  52. data/app/pb_kits/playbook/pb_table/docs/_table_header.md +5 -0
  53. data/app/pb_kits/playbook/pb_table/table_header.html.erb +1 -1
  54. data/dist/menu.yml +284 -110
  55. data/dist/playbook-rails.js +5 -5
  56. data/lib/playbook/pb_doc_helper.rb +12 -1
  57. data/lib/playbook/version.rb +2 -2
  58. metadata +36 -2
@@ -65,9 +65,7 @@
65
65
  .ProseMirror {
66
66
  background: $white;
67
67
  border: 1px solid $border_light;
68
- border-top-color: transparent;
69
- border-bottom-right-radius: $border_rad_heaviest;
70
- border-bottom-left-radius: $border_rad_heaviest;
68
+ border-radius: $border_rad_heaviest;
71
69
  height: 100%;
72
70
  padding: 1rem 1.5rem 1.5rem 1.5rem;
73
71
  line-height: $lh_loose;
@@ -127,7 +125,6 @@
127
125
  }
128
126
  &:focus-visible {
129
127
  outline: unset;
130
- border-top-color: $primary;
131
128
  @include transition_default;
132
129
  }
133
130
  h1 {
@@ -228,4 +225,11 @@
228
225
  border-radius: $border_rad_heaviest;
229
226
  transition: box-shadow 0.3s ease-in-out, border-radius 0.3s ease-in-out;
230
227
  }
228
+ &.toolbar-active {
229
+ .ProseMirror {
230
+ border-top: none;
231
+ border-top-left-radius: initial;
232
+ border-top-right-radius: initial;
233
+ }
234
+ }
231
235
  }
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import { useEditor, EditorContent } from "@tiptap/react";
3
+
4
+ import { RichTextEditor } from "../..";
5
+
6
+ import Document from "@tiptap/extension-document";
7
+ import Paragraph from "@tiptap/extension-paragraph";
8
+ import Text from "@tiptap/extension-text";
9
+
10
+ const RichTextEditorToolbarDisabled = (props) => {
11
+ const editor = useEditor({
12
+ extensions: [Document, Paragraph, Text],
13
+ content:
14
+ "Add your text here. You can format your text, add links, quotes, and bullets.",
15
+ });
16
+ if (!editor) {
17
+ return null;
18
+ }
19
+
20
+ return (
21
+ <div>
22
+ <RichTextEditor
23
+ advancedEditor={editor}
24
+ advancedEditorToolbar={false}
25
+ {...props}
26
+ >
27
+ <EditorContent editor={editor} />
28
+ </RichTextEditor>
29
+ </div>
30
+ );
31
+ };
32
+
33
+ export default RichTextEditorToolbarDisabled;
@@ -0,0 +1,3 @@
1
+ Because our default variant's toolbar requires [Tiptap's StarterKit](https://tiptap.dev/api/extensions/starter-kit) which may include features that are not relevant to your project or even block some custom extensions, optionally setting `advancedEditorToolbar` to `false` creates an editor without a toolbar, using only the minimum requirements.
2
+
3
+ __NOTE__: Omitting the Starter Kit requires that the editor’s default extensions (`document`, `paragraph`, and `text`) __must__ be imported directly from Tiptap or as a custom extensions.
@@ -15,6 +15,7 @@ examples:
15
15
  - rich_text_editor_default: Default
16
16
  - rich_text_editor_advanced_default: Advanced Default
17
17
  - rich_text_editor_more_extensions: Advanced (Extra Extensions)
18
+ - rich_text_editor_toolbar_disabled: Advanced (Toolbar disabled)
18
19
  - rich_text_editor_simple: Simple
19
20
  - rich_text_editor_attributes: Attributes
20
21
  - rich_text_editor_focus: Focus
@@ -8,4 +8,5 @@ export { default as RichTextEditorToolbarBottom } from './_rich_text_editor_tool
8
8
  export { default as RichTextEditorInline } from './_rich_text_editor_inline.jsx'
9
9
  export { default as RichTextEditorPreview } from './_rich_text_editor_preview.jsx'
10
10
  export { default as RichTextEditorAdvancedDefault } from './_rich_text_editor_advanced_default.jsx'
11
- export { default as RichTextEditorMoreExtensions } from './_rich_text_editor_more_extensions.jsx'
11
+ export { default as RichTextEditorMoreExtensions } from './_rich_text_editor_more_extensions.jsx'
12
+ export { default as RichTextEditorToolbarDisabled } from './_rich_text_editor_toolbar_disabled.jsx'
@@ -0,0 +1,47 @@
1
+ import React from "react";
2
+ import { render } from "../utilities/test-utils";
3
+ import { useEditor, EditorContent } from "@tiptap/react";
4
+ import StarterKit from "@tiptap/starter-kit";
5
+ import Link from "@tiptap/extension-link";
6
+
7
+ import RichTextEditor from "./_rich_text_editor";
8
+
9
+ const kitClass = "pb_rich_text_editor_advanced_container";
10
+
11
+ const EditorTest = (props) => {
12
+ const editor = useEditor({
13
+ extensions: [StarterKit, Link],
14
+ content: "",
15
+ });
16
+
17
+ return (
18
+ <RichTextEditor
19
+ advancedEditor={editor}
20
+ {...props}
21
+ >
22
+ <EditorContent editor={editor} />
23
+ </RichTextEditor>
24
+ );
25
+ };
26
+
27
+ test("returns namespaced class name", () => {
28
+ const { container } = render(<EditorTest />);
29
+
30
+ expect(container.getElementsByClassName(kitClass).length).toBeGreaterThan(0);
31
+ });
32
+
33
+ test("returns toolbar class name", () => {
34
+ const { container } = render(<EditorTest />);
35
+
36
+ expect(
37
+ container.getElementsByClassName(`${kitClass} toolbar-active`).length
38
+ ).toBeGreaterThan(0);
39
+ });
40
+
41
+ test("doesn't returns toolbar class name", () => {
42
+ const { container } = render(<EditorTest advancedEditorToolbar={false} />);
43
+
44
+ expect(
45
+ container.getElementsByClassName(`${kitClass} toolbar-active`).length
46
+ ).toBe(0);
47
+ });
@@ -1,12 +1,37 @@
1
- <%= pb_rails("table", props: { size: "lg"} ) do %>
1
+ <%# Example data for demonstration purposes %>
2
+ <% data_rows = [
3
+ { 'territory' => 'North', 'firstname' => 'John', 'lastname' => 'Doe', 'age' => 30, 'job' => 'Engineer' },
4
+ { 'territory' => 'South', 'firstname' => 'Alice', 'lastname' => 'Smith', 'age' => 28, 'job' => 'Designer' },
5
+ { 'territory' => 'East', 'firstname' => 'Mike', 'lastname' => 'Johnson', 'age' => 35, 'job' => 'Manager' },
6
+ { 'territory' => 'West', 'firstname' => 'Sarah', 'lastname' => 'Brown', 'age' => 29, 'job' => 'Developer' },
7
+ { 'territory' => 'Central', 'firstname' => 'David', 'lastname' => 'Wilson', 'age' => 32, 'job' => 'Analyst' }
8
+ ]
9
+ %>
10
+
11
+ <%# Example sort method for demonstration purposes %>
12
+ <% if params["sort"] %>
13
+ <% sort_param = params["sort"].gsub(/_(asc|desc)\z/, "") %>
14
+ <% sort_direction = params["sort"].end_with?("_asc") ? 1 : -1 %>
15
+ <% data_rows.sort! do |a, b|
16
+ value_a = a[sort_param]
17
+ value_b = b[sort_param]
18
+
19
+ value_a = value_a.to_i if value_a.is_a?(String) && value_a.match?(/^\d+$/)
20
+ value_b = value_b.to_i if value_b.is_a?(String) && value_b.match?(/^\d+$/)
21
+
22
+ sort_direction * (value_a <=> value_b)
23
+ end %>
24
+ <% end %>
25
+
26
+ <%= pb_rails("table", props: { data_table: true, vertical_border: true, id: "table-header" } ) do %>
2
27
  <thead>
3
28
  <tr>
4
29
  <%= pb_rails("table/table_header", props: {
5
30
  text: "Territory",
6
31
  id: "territory",
7
32
  sort_menu: [
8
- { item: "Territory", link: "?sort=territory_desc", active: params["sort"] == "territory_desc", direction: "desc" },
9
- { item: "Territory", link: "?sort=territory_asc", active: params["sort"] == "territory_asc", direction: "asc" }
33
+ { item: "Territory", link: "?sort=territory_asc#table-header", active: params["sort"] == "territory_asc", direction: "asc" },
34
+ { item: "Territory", link: "?sort=territory_desc#table-header", active: params["sort"] == "territory_desc", direction: "desc" }
10
35
  ],
11
36
  }) %>
12
37
  <%= pb_rails("table/table_header", props: {
@@ -14,45 +39,36 @@
14
39
  text: "Full Name",
15
40
  colspan: 2,
16
41
  sort_menu: [
17
- { item: "First Name Descending", link: "?sort=firstname_desc", active: params["sort"] == "firstname_desc", direction: "desc" },
18
- { item: "First Name Ascending", link: "?sort=firstname_asc", active: params["sort"] == "firstname_asc", direction: "asc" },
19
- { item: "Last Name Descending", link: "?sort=lastname_desc", active: params["sort"] == "lastname_desc", direction: "desc" },
20
- { item: "Last Name Ascending", link: "?sort=lastname_asc", active: params["sort"] == "lastname_asc", direction: "asc" }
42
+ { item: "First Name Descending", link: "?sort=firstname_desc#table-header", active: params["sort"] == "firstname_desc", direction: "desc" },
43
+ { item: "First Name Ascending", link: "?sort=firstname_asc#table-header", active: params["sort"] == "firstname_asc", direction: "asc" },
44
+ { item: "Last Name Descending", link: "?sort=lastname_desc#table-header", active: params["sort"] == "lastname_desc", direction: "desc" },
45
+ { item: "Last Name Ascending", link: "?sort=lastname_asc#table-header", active: params["sort"] == "lastname_asc", direction: "asc" }
21
46
  ],
22
47
  }) %>
23
48
  <%= pb_rails("table/table_header", props: {
24
49
  text: "Age",
25
50
  id: "age",
26
- sort_dropdown: true,
27
51
  sort_menu: [
28
- { item: "Age Descending", link: "?sort=age_desc", active: params["sort"] == "age_desc", direction: "desc" },
29
- { item: "Age Ascending", link: "?sort=age_asc", active: params["sort"] == "age_asc", direction: "asc" }
52
+ { item: "Age Descending", link: "?sort=age_desc#table-header", active: params["sort"] == "age_desc", direction: "desc" },
53
+ { item: "Age Ascending", link: "?sort=age_asc#table-header", active: params["sort"] == "age_asc", direction: "asc" }
30
54
  ],
31
55
  }) %>
32
56
  <%= pb_rails("table/table_header", props: { text: "Job Title" }) %>
33
57
  </tr>
34
58
  </thead>
35
59
  <tbody>
36
- <tr>
37
- <td>Ter 1</td>
38
- <td>First Name 1</td>
39
- <td>Last Name 1</td>
40
- <td>Age 1</td>
41
- <td>Job 1</td>
42
- </tr>
43
- <tr>
44
- <td>Ter 2</td>
45
- <td>First Name 2</td>
46
- <td>Last Name 2</td>
47
- <td>Age 2</td>
48
- <td>Job 2</td>
49
- </tr>
50
- <tr>
51
- <td>Ter 3</td>
52
- <td>First Name 3</td>
53
- <td>Last Name 3</td>
54
- <td>Age 3</td>
55
- <td>Job 3</td>
56
- </tr>
60
+ <% data_rows.each do |row| %>
61
+ <tr>
62
+ <% row.each do |key, value| %>
63
+ <%= pb_rails("background", props: {
64
+ background_color: (params["sort"] && params["sort"].start_with?(key) ? "info_subtle" : "card_light"),
65
+ text_align: (value.is_a?(Integer) ? "right" : ""),
66
+ tag: "td"
67
+ }) do %>
68
+ <%= value %>
69
+ <% end %>
70
+ <% end %>
71
+ </tr>
72
+ <% end %>
57
73
  </tbody>
58
74
  <% end %>
@@ -6,3 +6,8 @@ presence of `sort_menu` enables the sort link within the header
6
6
  * `sort_dropdown` (boolean) optionally declares that (true) clicking a header's sort link opens a dropdown of sort options, or (false) each sort link click cycles through available sort_menu items in the order they are passed
7
7
  * passing a valid `colspan` will render sort options within a dropdown by default, without requiring `sort_dropdown` explicitly. Alternatively, the default sort dropdown can be prevented on headers with `colspan` by setting `sort_dropdown: false`, which reverts the column to sorting to multi-click default (each click of the sort link cycles through the available sort_menu items in the order they are passed)
8
8
  * `id` (string) is required for headers that have a dropdown (for popover reference); otherwise they are optional
9
+
10
+ </br>
11
+ <div class="pb_pill_kit_warning"><div class="pb_title_kit_size_4 pb_pill_text">Disclaimer</div></div>
12
+
13
+ This example uses a custom sort method that may need to be modified or replaced within your project.
@@ -3,7 +3,7 @@
3
3
  aria: object.aria,
4
4
  class: object.classname,
5
5
  data: object.data,
6
- id: "pb-th#{object.id}") do %>
6
+ id: "pb-th#{object.id}" ) do %>
7
7
  <% unless sorting_style? %>
8
8
  <%= pb_rails("flex", props:{ align: object.align_content, justify: object.justify_sort_icon, classname: "pb_th_nolink" }) do %>
9
9
  <%= content.presence || object.text %>
data/dist/menu.yml CHANGED
@@ -1,111 +1,285 @@
1
+ web: &web ["rails", "react"]
2
+ all: &all ["rails", "react", "swift"]
3
+ rails_swift: &rails_swift ["rails", "swift"]
4
+ react_swift: &react_swift ["swift", "react"]
5
+ rails_only: &rails_only ["rails"]
6
+ react_only: &react_only ["react"]
7
+ swift_only: &swift_only ["swift"]
8
+
1
9
  kits:
2
- - avatars:
3
- - avatar
4
- - avatar_action_button
5
- - multiple_users
6
- - multiple_users_stacked
7
- - user
8
- - background
9
- - bread_crumbs
10
- - buttons:
11
- - button
12
- - button_toolbar
13
- - circle_icon_button
14
- - card
15
- - collapsible
16
- - charts_and_graphs:
17
- - bar_graph
18
- - circle_chart
19
- - distribution_bar
20
- - gauge
21
- - legend
22
- - line_graph
23
- - treemap_chart
24
- - dialog
25
- - filter
26
- - fixed_confirmation_toast
27
- - forms:
28
- - checkbox
29
- - date_picker
30
- - file_upload
31
- - form
32
- - form_group
33
- - form_pill
34
- - multi_level_select
35
- - passphrase
36
- - phone_number_input
37
- - radio
38
- - rich_text_editor
39
- - select
40
- - selectable_card
41
- - selectable_card_icon
42
- - selectable_icon
43
- - selectable_list
44
- - text_input
45
- - textarea
46
- - toggle
47
- - typeahead
48
- - highlight
49
- - icon
50
- - icon_circle
51
- - icon_stat_value
52
- - icon_value
53
- - image
54
- - layouts:
55
- - flex
56
- - layout
57
- - lightbox
58
- - list
59
- - loading_inline
60
- - map
61
- - nav
62
- - tags:
63
- - badge
64
- - hashtag
65
- - pill
66
- - pagination
67
- - popover
68
- - progress:
69
- - progress_pills
70
- - progress_simple
71
- - progress_step
72
- - section_separator
73
- - star_rating
74
- - table
75
- - timeline
76
- - time_and_date:
77
- - date
78
- - date_range_inline
79
- - date_range_stacked
80
- - date_stacked
81
- - date_time
82
- - date_time_stacked
83
- - date_year_stacked
84
- - time
85
- - time_range_inline
86
- - time_stacked
87
- - timestamp
88
- - weekday_stacked
89
- - tooltip
90
- - typography:
91
- - body
92
- - caption
93
- - detail
94
- - title
95
- - typography_patterns:
96
- - contact
97
- - currency
98
- - dashboard_value
99
- - home_address_street
100
- - label_pill
101
- - label_value
102
- - message
103
- - person
104
- - person_contact
105
- - source
106
- - stat_change
107
- - stat_value
108
- - title_count
109
- - title_detail
110
- - user_badge
111
- - walkthrough
10
+ - name: "avatars"
11
+ components:
12
+ - name: "avatar"
13
+ platforms: *all
14
+ - name: "avatar_action_button"
15
+ platforms: *web
16
+ - name: "multiple_users"
17
+ platforms: *web
18
+ - name: "multiple_users_stacked"
19
+ platforms: *web
20
+ - name: "user"
21
+ platforms: *web
22
+ - name: "background"
23
+ components:
24
+ - name: "background"
25
+ platforms: *web
26
+ - name: "bread_crumbs"
27
+ components:
28
+ - name: "bread_crumbs"
29
+ platforms: *web
30
+ - name: "buttons"
31
+ components:
32
+ - name: "button"
33
+ platforms: *web
34
+ - name: "button_toolbar"
35
+ platforms: *web
36
+ - name: "circle_icon_button"
37
+ platforms: *web
38
+ - name: "card"
39
+ components:
40
+ - name: "card"
41
+ platforms: *all
42
+ - name: "collapsible"
43
+ components:
44
+ - name: "collapsible"
45
+ platforms: *web
46
+ - name: "charts_and_graphs"
47
+ components:
48
+ - name: "bar_graph"
49
+ platforms: *web
50
+ - name: "circle_chart"
51
+ platforms: *web
52
+ - name: "distribution_bar"
53
+ platforms: *web
54
+ - name: "gauge"
55
+ platforms: *web
56
+ - name: "legend"
57
+ platforms: *web
58
+ - name: "line_graph"
59
+ platforms: *web
60
+ - name: "treemap_chart"
61
+ platforms: *web
62
+ - name: "dialog"
63
+ components:
64
+ - name: "dialog"
65
+ platforms: *web
66
+ - name: "filter"
67
+ components:
68
+ - name: "filter"
69
+ platforms: *web
70
+ - name: "fixed_confirmation_toast"
71
+ components:
72
+ - name: "fixed_confirmation_toast"
73
+ platforms: *web
74
+ - name: "forms"
75
+ components:
76
+ - name: "checkbox"
77
+ platforms: *web
78
+ - name: "date_picker"
79
+ platforms: *web
80
+ - name: "file_upload"
81
+ platforms: *web
82
+ - name: "form"
83
+ platforms: *rails_only
84
+ - name: "form_group"
85
+ platforms: *web
86
+ - name: "form_pill"
87
+ platforms: *web
88
+ - name: "multi_level_select"
89
+ platforms: *web
90
+ - name: "passphrase"
91
+ platforms: *web
92
+ - name: "phone_number_input"
93
+ platforms: *web
94
+ - name: "radio"
95
+ platforms: *all
96
+ - name: "rich_text_editor"
97
+ platforms: *web
98
+ - name: "select"
99
+ platforms: *web
100
+ - name: "selectable_card"
101
+ platforms: *web
102
+ - name: "selectable_card_icon"
103
+ platforms: *web
104
+ - name: "selectable_icon"
105
+ platforms: *web
106
+ - name: "selectable_list"
107
+ platforms: *web
108
+ - name: "text_input"
109
+ platforms: *web
110
+ - name: "textarea"
111
+ platforms: *web
112
+ - name: "toggle"
113
+ platforms: *web
114
+ - name: "typeahead"
115
+ platforms: *web
116
+ - name: "highlight"
117
+ components:
118
+ - name: "highlight"
119
+ platforms: *web
120
+ - name: "icon"
121
+ components:
122
+ - name: "icon"
123
+ platforms: *web
124
+ - name: "icon_circle"
125
+ components:
126
+ - name: "icon_circle"
127
+ platforms: *web
128
+ - name: "icon_stat_value"
129
+ components:
130
+ - name: "icon_stat_value"
131
+ platforms: *web
132
+ - name: "icon_value"
133
+ components:
134
+ - name: "icon_value"
135
+ platforms: *web
136
+ - name: "image"
137
+ components:
138
+ - name: "image"
139
+ platforms: *web
140
+ - name: "layouts"
141
+ components:
142
+ - name: "flex"
143
+ platforms: *web
144
+ - name: "layout"
145
+ platforms: *web
146
+ - name: "lightbox"
147
+ components:
148
+ - name: "lightbox"
149
+ platforms: *react_only
150
+ - name: "list"
151
+ components:
152
+ - name: "list"
153
+ platforms: *web
154
+ - name: "loading_inline"
155
+ components:
156
+ - name: "loading_inline"
157
+ platforms: *web
158
+ - name: "map"
159
+ components:
160
+ - name: "map"
161
+ platforms: *react_only
162
+ - name: "nav"
163
+ components:
164
+ - name: "nav"
165
+ platforms: *web
166
+ - name: "pagination"
167
+ components:
168
+ - name: "pagination"
169
+ platforms: *rails_only
170
+ - name: "popover"
171
+ components:
172
+ - name: "popover"
173
+ platforms: *web
174
+ - name: "progress"
175
+ components:
176
+ - name: "progress_pills"
177
+ platforms: *web
178
+ - name: "progress_simple"
179
+ platforms: *web
180
+ - name: "progress_step"
181
+ platforms: *web
182
+ - name: "section_separator"
183
+ components:
184
+ - name: "section_separator"
185
+ platforms: *web
186
+ - name: "star_rating"
187
+ components:
188
+ - name: "star_rating"
189
+ platforms: *web
190
+ - name: "table"
191
+ components:
192
+ - name: "table"
193
+ platforms: *web
194
+ - name: "tags"
195
+ components:
196
+ - name: "tags"
197
+ platforms: *web
198
+ - name: "badge"
199
+ platforms: *web
200
+ - name: "hashtag"
201
+ platforms: *web
202
+ - name: "pill"
203
+ platforms: *all
204
+ - name: "timeline"
205
+ components:
206
+ - name: "timeline"
207
+ platforms: *web
208
+ - name: "time_and_date"
209
+ components:
210
+ - name: "date"
211
+ platforms: *web
212
+ - name: "date_range_inline"
213
+ platforms: *web
214
+ - name: "date_range_stacked"
215
+ platforms: *web
216
+ - name: "date_stacked"
217
+ platforms: *web
218
+ - name: "date_time"
219
+ platforms: *web
220
+ - name: "date_time_stacked"
221
+ platforms: *web
222
+ - name: "date_year_stacked"
223
+ platforms: *web
224
+ - name: "time"
225
+ platforms: *web
226
+ - name: "time_range_inline"
227
+ platforms: *web
228
+ - name: "time_stacked"
229
+ platforms: *web
230
+ - name: "timestamp"
231
+ platforms: *all
232
+ - name: "weekday_stacked"
233
+ platforms: *web
234
+ - name: "tooltip"
235
+ components:
236
+ - name: "tooltip"
237
+ platforms: *web
238
+ - name: "typography"
239
+ components:
240
+ - name: "body"
241
+ platforms: *web
242
+ - name: "caption"
243
+ platforms: *web
244
+ - name: "detail"
245
+ platforms: *web
246
+ - name: "title"
247
+ platforms: *web
248
+ - name: "typography_patterns"
249
+ components:
250
+ - name: "contact"
251
+ platforms: *web
252
+ - name: "currency"
253
+ platforms: *web
254
+ - name: "dashboard_value"
255
+ platforms: *web
256
+ - name: "home_address_street"
257
+ platforms: *web
258
+ - name: "label_pill"
259
+ platforms: *web
260
+ - name: "label_value"
261
+ platforms: *web
262
+ - name: "message"
263
+ platforms: *web
264
+ - name: "person"
265
+ platforms: *web
266
+ - name: "person_contact"
267
+ platforms: *web
268
+ - name: "source"
269
+ platforms: *web
270
+ - name: "stat_change"
271
+ platforms: *web
272
+ - name: "stat_value"
273
+ platforms: *web
274
+ - name: "title_count"
275
+ platforms: *web
276
+ - name: "title_detail"
277
+ platforms: *web
278
+ - name: "user_badge"
279
+ components:
280
+ - name: "user_badge"
281
+ platforms: *web
282
+ - name: "walkthrough"
283
+ components:
284
+ - name: "walkthrough"
285
+ platforms: *web