playbook_ui 14.1.0 → 14.2.0.pre.alpha.PLAY15063619

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/_playbook.scss +2 -0
  3. data/app/pb_kits/playbook/pb_advanced_table/_advanced_table.scss +3 -3
  4. data/app/pb_kits/playbook/pb_advanced_table/advanced_table.html.erb +1 -1
  5. data/app/pb_kits/playbook/pb_avatar_action_button/_avatar_action_button.scss +2 -2
  6. data/app/pb_kits/playbook/pb_badge/_badge.scss +9 -0
  7. data/app/pb_kits/playbook/pb_badge/_badge.tsx +8 -3
  8. data/app/pb_kits/playbook/pb_badge/badge.rb +1 -1
  9. data/app/pb_kits/playbook/pb_badge/badge.test.js +17 -11
  10. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.html.erb +13 -0
  11. data/app/pb_kits/playbook/pb_badge/docs/_badge_notification.jsx +31 -12
  12. data/app/pb_kits/playbook/pb_button/_button.tsx +4 -1
  13. data/app/pb_kits/playbook/pb_button/button.html.erb +1 -1
  14. data/app/pb_kits/playbook/pb_button/button.rb +4 -0
  15. data/app/pb_kits/playbook/pb_date_time/dateTime.test.js +2 -2
  16. data/app/pb_kits/playbook/pb_dialog/_close_icon.tsx +5 -1
  17. data/app/pb_kits/playbook/pb_dialog/_dialog.tsx +3 -1
  18. data/app/pb_kits/playbook/pb_dialog/dialog.test.jsx +20 -1
  19. data/app/pb_kits/playbook/pb_dialog/dialog_header.html.erb +1 -1
  20. data/app/pb_kits/playbook/pb_dialog/dialog_header.rb +4 -0
  21. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_default.jsx +1 -5
  22. data/app/pb_kits/playbook/pb_dialog/docs/_dialog_loading.jsx +46 -0
  23. data/app/pb_kits/playbook/pb_dialog/docs/example.yml +1 -0
  24. data/app/pb_kits/playbook/pb_dialog/docs/index.js +1 -0
  25. data/app/pb_kits/playbook/pb_filter/filter.rb +1 -1
  26. data/app/pb_kits/playbook/pb_form/docs/_form_form_with_validate.html.erb +1 -0
  27. data/app/pb_kits/playbook/pb_form_pill/_form_pill.scss +43 -25
  28. data/app/pb_kits/playbook/pb_form_pill/_form_pill.tsx +6 -2
  29. data/app/pb_kits/playbook/pb_form_pill/docs/example.yml +2 -2
  30. data/app/pb_kits/playbook/pb_form_pill/form_pill.html.erb +4 -4
  31. data/app/pb_kits/playbook/pb_form_pill/form_pill.rb +4 -0
  32. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.scss +3 -0
  33. data/app/pb_kits/playbook/pb_gantt_chart/_gantt_chart.tsx +72 -0
  34. data/app/pb_kits/playbook/pb_gantt_chart/docs/_gantt_chart_default.jsx +53 -0
  35. data/app/pb_kits/playbook/pb_gantt_chart/docs/example.yml +7 -0
  36. data/app/pb_kits/playbook/pb_gantt_chart/docs/index.js +1 -0
  37. data/app/pb_kits/playbook/pb_gantt_chart/gantt_chart.test.jsx +19 -0
  38. data/app/pb_kits/playbook/pb_icon/_icon.tsx +1 -1
  39. data/app/pb_kits/playbook/pb_multi_level_select/_multi_level_select.tsx +0 -2
  40. data/app/pb_kits/playbook/pb_pagination/_pagination.scss +49 -13
  41. data/app/pb_kits/playbook/pb_pagination/_pagination.tsx +164 -0
  42. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default.jsx +19 -0
  43. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_default_react.md +1 -0
  44. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_page_change.jsx +62 -0
  45. data/app/pb_kits/playbook/pb_pagination/docs/_pagination_page_change_react.md +1 -0
  46. data/app/pb_kits/playbook/pb_pagination/docs/data.js +23 -0
  47. data/app/pb_kits/playbook/pb_pagination/docs/example.yml +3 -1
  48. data/app/pb_kits/playbook/pb_pagination/docs/index.js +2 -0
  49. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.scss +0 -7
  50. data/app/pb_kits/playbook/pb_popover/_popover.tsx +10 -5
  51. data/app/pb_kits/playbook/pb_rich_text_editor/_previewer_mixin.scss +132 -0
  52. data/app/pb_kits/playbook/pb_rich_text_editor/_tiptap_styles.scss +50 -76
  53. data/app/pb_kits/playbook/pb_rich_text_editor/docs/_rich_text_editor_advanced_preview.jsx +73 -0
  54. data/app/pb_kits/playbook/pb_rich_text_editor/docs/example.yml +1 -0
  55. data/app/pb_kits/playbook/pb_rich_text_editor/docs/index.js +2 -1
  56. data/app/pb_kits/playbook/pb_star_rating/index.js +78 -41
  57. data/app/pb_kits/playbook/pb_star_rating/star_rating.html.erb +4 -2
  58. data/app/pb_kits/playbook/pb_star_rating/star_rating.rb +17 -0
  59. data/app/pb_kits/playbook/pb_star_rating/subcomponents/_star_rating_display.tsx +0 -2
  60. data/app/pb_kits/playbook/pb_star_rating/subcomponents/_star_rating_interactive.tsx +0 -1
  61. data/app/pb_kits/playbook/pb_time/_time.tsx +12 -8
  62. data/app/pb_kits/playbook/pb_time/time.html.erb +3 -3
  63. data/app/pb_kits/playbook/pb_time/time.rb +4 -0
  64. data/app/pb_kits/playbook/tokens/_container.scss +21 -0
  65. data/app/pb_kits/playbook/utilities/_min_width.scss +45 -0
  66. data/app/pb_kits/playbook/utilities/globalPropNames.mjs +1 -0
  67. data/app/pb_kits/playbook/utilities/globalProps.ts +20 -3
  68. data/app/pb_kits/playbook/utilities/icons/allicons.tsx +59 -0
  69. data/app/pb_kits/playbook/utilities/icons/clock.svg +9 -0
  70. data/app/pb_kits/playbook/utilities/icons/spinner.svg +3 -0
  71. data/app/pb_kits/playbook/utilities/icons/times.svg +3 -0
  72. data/dist/chunks/_typeahead-Cq7RLPBA.js +22 -0
  73. data/dist/chunks/_weekday_stacked-Cykj5kLZ.js +45 -0
  74. data/dist/chunks/lazysizes-B7xYodB-.js +1 -0
  75. data/dist/chunks/{lib-BE0Z3F7x.js → lib-DErGXNy3.js} +2 -2
  76. data/dist/chunks/{pb_form_validation-TzZQ0Flx.js → pb_form_validation-BC6kh7Hu.js} +1 -1
  77. data/dist/chunks/vendor.js +1 -1
  78. data/dist/menu.yml +4 -0
  79. data/dist/playbook-doc.js +1 -1
  80. data/dist/playbook-rails-react-bindings.js +1 -1
  81. data/dist/playbook-rails.js +1 -1
  82. data/dist/playbook.css +1 -1
  83. data/lib/playbook/classnames.rb +1 -0
  84. data/lib/playbook/spacing.rb +31 -2
  85. data/lib/playbook/version.rb +2 -2
  86. metadata +35 -13
  87. data/dist/chunks/_typeahead-D6PRvP-1.js +0 -22
  88. data/dist/chunks/_weekday_stacked-DbdEuIzh.js +0 -45
  89. data/dist/chunks/lazysizes-DHz07jlL.js +0 -1
  90. /data/app/pb_kits/playbook/pb_pagination/docs/{_pagination_default.md → _pagination_default_rails.md} +0 -0
@@ -0,0 +1,164 @@
1
+ import React, { useState } from "react";
2
+ import classnames from 'classnames'
3
+ import { globalProps } from '../utilities/globalProps'
4
+ import { buildAriaProps, buildCss, buildDataProps, buildHtmlProps } from '../utilities/props'
5
+ import Icon from '../pb_icon/_icon';
6
+
7
+ type PaginationProps = {
8
+ aria?: { [key: string]: string },
9
+ className?: string,
10
+ data?: { [key: string]: string },
11
+ htmlOptions?: {[key: string]: string | number | boolean | (() => void)},
12
+ id?: string,
13
+ current?: number;
14
+ onChange?: (pageNumber: number) => void;
15
+ range?: number;
16
+ total?: number;
17
+ };
18
+
19
+ const Pagination = ( props: PaginationProps) => {
20
+ const {
21
+ aria = {},
22
+ className,
23
+ data = {},
24
+ htmlOptions = {},
25
+ id,
26
+ current = 1,
27
+ onChange,
28
+ range = 5,
29
+ total = 1,
30
+ } = props
31
+ const [currentPage, setCurrentPage] = useState(current);
32
+
33
+ const handlePageChange = (pageNumber: number) => {
34
+ if (pageNumber >= 1 && pageNumber <= total) {
35
+ setCurrentPage(pageNumber);
36
+ if (onChange) {
37
+ onChange(pageNumber);
38
+ }
39
+ }
40
+ };
41
+
42
+ const renderPageButtons = (): JSX.Element[] => {
43
+ const buttons: JSX.Element[] = [];
44
+
45
+ // Calculate pagination range with let
46
+ let rangeStart = Math.max(1, currentPage - Math.floor(range / 2));
47
+ let rangeEnd = Math.min(total, rangeStart + range - 1);
48
+
49
+ // Adjust range if it's too short to fit the range
50
+ if (rangeEnd - rangeStart + 1 < range) {
51
+ if (rangeStart > 1) {
52
+ rangeStart = Math.max(1, rangeEnd - range + 1);
53
+ } else {
54
+ rangeEnd = Math.min(total, rangeStart + range - 1);
55
+ }
56
+ }
57
+
58
+ // Always display the first page button
59
+ if (rangeStart > 1) {
60
+ buttons.push(
61
+ <li
62
+ className="pagination-number"
63
+ key={1}
64
+ onClick={() => handlePageChange(1)}
65
+ >
66
+ 1
67
+ </li>
68
+ );
69
+ }
70
+
71
+ // Always display the second page button
72
+ if (rangeStart > 2) {
73
+ buttons.push(
74
+ <li
75
+ className="pagination-number"
76
+ key={2}
77
+ onClick={() => handlePageChange(2)}
78
+ >
79
+ 2
80
+ </li>
81
+ );
82
+ }
83
+
84
+ // Display page buttons within the calculated range
85
+ for (let i = rangeStart; i <= rangeEnd; i++) {
86
+ buttons.push(
87
+ <li
88
+ className={`pagination-number ${i === currentPage ? "active" : ""}`}
89
+ key={i}
90
+ onClick={() => handlePageChange(i)}
91
+ >
92
+ {i}
93
+ </li>
94
+ );
95
+ }
96
+
97
+ // Always display the second-to-last page button
98
+ if (rangeEnd < total - 1) {
99
+ buttons.push(
100
+ <li
101
+ className={`pagination-number ${total - 1 === currentPage ? "active" : ""}`}
102
+ key={total - 1}
103
+ onClick={() => handlePageChange(total - 1)}
104
+ >
105
+ {total - 1}
106
+ </li>
107
+ );
108
+ }
109
+
110
+ // Always display the last page button
111
+ if (rangeEnd < total) {
112
+ buttons.push(
113
+ <li
114
+ className={`pagination-number ${total === currentPage ? "active" : ""}`}
115
+ key={total}
116
+ onClick={() => handlePageChange(total)}
117
+ >
118
+ {total}
119
+ </li>
120
+ );
121
+ }
122
+
123
+
124
+ return buttons;
125
+ };
126
+
127
+
128
+ const ariaProps = buildAriaProps(aria)
129
+ const dataProps = buildDataProps(data)
130
+ const htmlProps = buildHtmlProps(htmlOptions)
131
+ const classes = classnames(
132
+ buildCss('pb_paginate'),
133
+ globalProps(props),
134
+ className
135
+ )
136
+
137
+ return (
138
+ <div
139
+ {...ariaProps}
140
+ {...dataProps}
141
+ {...htmlProps}
142
+ className={classes}
143
+ id={id}
144
+ >
145
+ <div className="pb_pagination">
146
+ <li
147
+ className={`pagination-left ${currentPage === 1 ? 'disabled' : ''}`}
148
+ onClick={() => handlePageChange(currentPage - 1)}
149
+ >
150
+ <Icon icon="chevron-left" />
151
+ </li>
152
+ {renderPageButtons()}
153
+ <li
154
+ className={`pagination-right ${currentPage === total ? 'disabled' : ''}`}
155
+ onClick={() => handlePageChange(currentPage + 1)}
156
+ >
157
+ <Icon icon="chevron-right" />
158
+ </li>
159
+ </div>
160
+ </div>
161
+ );
162
+ };
163
+
164
+ export default Pagination;
@@ -0,0 +1,19 @@
1
+ import React from 'react'
2
+
3
+ import Pagination from '../_pagination'
4
+
5
+ const PaginationDefault = (props) => {
6
+
7
+ return (
8
+ <>
9
+ <Pagination
10
+ current={1}
11
+ range={5}
12
+ total={10}
13
+ {...props}
14
+ />
15
+ </>
16
+ )
17
+ }
18
+
19
+ export default PaginationDefault
@@ -0,0 +1 @@
1
+ The `range` prop determines how many pages to display in the Pagination component. Regardless of this value, the first two and last two pages are always visible to facilitate navigation to the beginning and end of the pagination. If these always-visible pages fall within the specified range, they are included in the display. If they fall outside the range, the pagination will show additional pages up to the number defined by the `range` prop.
@@ -0,0 +1,62 @@
1
+ import React, { useState } from "react";
2
+ import { Table, Pagination } from 'playbook-ui'
3
+
4
+
5
+ import { data } from "./data";
6
+
7
+ const PaginationPageChange = (props) => {
8
+
9
+ const [activePage, setActivePage] = useState(1);
10
+ const rowsPerPage = 3;
11
+ const totalPages = Math.ceil(data.length / rowsPerPage);
12
+
13
+ const onPageChange = (pageNumber) => {
14
+ setActivePage(pageNumber);
15
+ };
16
+
17
+ const currentData = data.slice(
18
+ (activePage - 1) * rowsPerPage,
19
+ activePage * rowsPerPage
20
+ );
21
+
22
+
23
+ return (
24
+ <div className="App">
25
+ <Table
26
+ marginBottom="xs"
27
+ responsive="none"
28
+ size="sm"
29
+ {...props}
30
+ >
31
+ <Table.Head>
32
+ <Table.Row>
33
+ <Table.Header>{"Column 1"}</Table.Header>
34
+ <Table.Header>{"Column 2"}</Table.Header>
35
+ <Table.Header>{"Column 3"}</Table.Header>
36
+ <Table.Header>{"Column 4"}</Table.Header>
37
+ <Table.Header>{"Column 5"}</Table.Header>
38
+ </Table.Row>
39
+ </Table.Head>
40
+ <Table.Body>
41
+ {currentData.map((row, index) => (
42
+ <Table.Row key={index}>
43
+ {row.map((cell, cellIndex) => (
44
+ <Table.Cell key={cellIndex}>{cell}</Table.Cell>
45
+ ))}
46
+ </Table.Row>
47
+ ))}
48
+ </Table.Body>
49
+ </Table>
50
+
51
+ <Pagination
52
+ current={1}
53
+ onChange={onPageChange}
54
+ range={5}
55
+ total={totalPages}
56
+ {...props}
57
+ />
58
+ </div>
59
+ )
60
+ }
61
+
62
+ export default PaginationPageChange
@@ -0,0 +1 @@
1
+ You can use the `onChange` prop to control the data of your table. This prop is callback function that will allow you control the state.
@@ -0,0 +1,23 @@
1
+ export const data = [
2
+ ["Value 1", "Value 2", "Value 3", "Value 4", "Value 5"],
3
+ ["Value 6", "Value 7", "Value 8", "Value 9", "Value 10"],
4
+ ["Value 11", "Value 12", "Value 13", "Value 14", "Value 15"],
5
+ ["Value 16", "Value 17", "Value 18", "Value 19", "Value 20"],
6
+ ["Value 21", "Value 22", "Value 23", "Value 24", "Value 25"],
7
+ ["Value 26", "Value 27", "Value 28", "Value 29", "Value 30"],
8
+ ["Value 31", "Value 32", "Value 33", "Value 34", "Value 35"],
9
+ ["Value 36", "Value 37", "Value 38", "Value 39", "Value 40"],
10
+ ["Value 41", "Value 42", "Value 43", "Value 44", "Value 45"],
11
+ ["Value 46", "Value 47", "Value 48", "Value 49", "Value 50"],
12
+ ["Value 51", "Value 52", "Value 53", "Value 54", "Value 55"],
13
+ ["Value 56", "Value 57", "Value 58", "Value 59", "Value 60"],
14
+ ["Value 61", "Value 62", "Value 63", "Value 64", "Value 65"],
15
+ ["Value 66", "Value 67", "Value 68", "Value 69", "Value 70"],
16
+ ["Value 71", "Value 72", "Value 73", "Value 74", "Value 75"],
17
+ ["Value 76", "Value 77", "Value 78", "Value 79", "Value 80"],
18
+ ["Value 81", "Value 82", "Value 83", "Value 84", "Value 85"],
19
+ ["Value 86", "Value 87", "Value 88", "Value 89", "Value 90"],
20
+ ["Value 91", "Value 92", "Value 93", "Value 94", "Value 95"],
21
+ ["Value 96", "Value 97", "Value 98", "Value 99", "Value 100"],
22
+ ];
23
+
@@ -3,4 +3,6 @@ examples:
3
3
  rails:
4
4
  - pagination_default: Default
5
5
 
6
-
6
+ react:
7
+ - pagination_default: Default
8
+ - pagination_page_change: Page Change
@@ -0,0 +1,2 @@
1
+ export { default as PaginationDefault } from './_pagination_default.jsx'
2
+ export { default as PaginationPageChange } from './_pagination_page_change.jsx'
@@ -60,7 +60,6 @@ $flag-min-resolution: 192dpi;
60
60
  }
61
61
 
62
62
  .iti__flag {
63
- background-image: url("https://intl-tel-input.com/intl-tel-input/img/flags.png");
64
63
  border-radius: 1px;
65
64
  }
66
65
 
@@ -197,10 +196,4 @@ $flag-min-resolution: 192dpi;
197
196
  }
198
197
  }
199
198
  }
200
-
201
- @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: $flag-min-resolution) {
202
- .iti__flag {
203
- background-image: url("https://intl-tel-input.com/intl-tel-input/img/flags.png");
204
- }
205
- }
206
199
  }
@@ -21,6 +21,8 @@ import classnames from "classnames";
21
21
  import { globalProps, GlobalProps } from "../utilities/globalProps";
22
22
  import { uniqueId } from 'lodash';
23
23
 
24
+ type ModifiedGlobalProps = Omit<GlobalProps, 'minWidth'>
25
+
24
26
  type PbPopoverProps = {
25
27
  aria?: { [key: string]: string };
26
28
  className?: string;
@@ -32,7 +34,7 @@ type PbPopoverProps = {
32
34
  reference: PopperReference & any;
33
35
  show?: boolean;
34
36
  shouldClosePopover?: (arg0: boolean) => void;
35
- } & GlobalProps & Omit<PopperProps<any>, 'children'>
37
+ } & ModifiedGlobalProps & Omit<PopperProps<any>, 'children'>
36
38
  & { children?: React.ReactChild[] | React.ReactChild }
37
39
 
38
40
  // Prop enabled default modifiers here
@@ -80,10 +82,13 @@ const Popover = (props: PbPopoverProps) => {
80
82
  targetId,
81
83
  } = props;
82
84
 
85
+ const items = globalProps(props).split(' ')
86
+ const filteredItems = items.filter(item => !item.includes('min_width'))
87
+ const filteredGlobalProps = filteredItems.join(' ')
83
88
  const popoverSpacing =
84
- globalProps(props).includes("dark") || !globalProps(props)
89
+ filteredGlobalProps.includes("dark") || !filteredGlobalProps
85
90
  ? "p_sm"
86
- : globalProps(props);
91
+ : filteredGlobalProps
87
92
  const overflowHandling = maxHeight || maxWidth ? "overflow_handling" : "";
88
93
  const zIndexStyle = zIndex ? { zIndex: zIndex } : {};
89
94
  const widthHeightStyles = () => {
@@ -100,7 +105,7 @@ const Popover = (props: PbPopoverProps) => {
100
105
  const htmlProps = buildHtmlProps(htmlOptions);
101
106
  const classes = classnames(
102
107
  buildCss("pb_popover_kit"),
103
- globalProps(props),
108
+ filteredGlobalProps,
104
109
  className
105
110
  );
106
111
 
@@ -250,4 +255,4 @@ const PbReactPopover = (props: PbPopoverProps): React.ReactElement => {
250
255
  );
251
256
  };
252
257
 
253
- export default PbReactPopover;
258
+ export default PbReactPopover;
@@ -0,0 +1,132 @@
1
+ @import "../tokens/border_radius";
2
+ @import "../tokens/colors";
3
+ @import "../tokens/spacing";
4
+ @import "../tokens/typography";
5
+
6
+ @mixin preview_first_child {
7
+ :first-child {
8
+ margin-top: 0;
9
+ }
10
+ }
11
+
12
+ @mixin preview_p {
13
+ margin: 1rem 0 0 0;
14
+ min-height: 1rem;
15
+ }
16
+
17
+ @mixin preview_code {
18
+ font-family: monospace;
19
+ background: $bg_light;
20
+ padding: 0.1rem 0.3rem;
21
+ box-shadow: 0 2px 10px $shadow;
22
+ border-radius: 0.25rem;
23
+ overflow: hidden;
24
+ }
25
+
26
+ @mixin preview_pre_codeblock {
27
+ display: inline-block;
28
+ width: 100%;
29
+ vertical-align: top;
30
+ font-family: monospace;
31
+ font-size: 0.9em;
32
+ padding: 0.5em;
33
+ overflow-x: auto;
34
+ background: $bg_dark;
35
+ padding: $space_sm;
36
+ border-radius: $border_rad_heaviest;
37
+ margin: 1.5rem 0 2rem 0;
38
+
39
+ code {
40
+ background: transparent !important;
41
+ box-shadow: none;
42
+ border: 0;
43
+ color: #faf6e4;
44
+ }
45
+ }
46
+
47
+ @mixin preview_a {
48
+ color: $primary;
49
+ border-bottom: 1px solid $primary;
50
+ &:hover {
51
+ color: $text_lt_default;
52
+ border-bottom: 1px solid $text_lt_default;
53
+ }
54
+ }
55
+
56
+ @mixin preview_blockquote {
57
+ font-size: $font_larger;
58
+ padding: $space_sm $space_md;
59
+ font-style: italic;
60
+ margin: 1rem 0 0 0;
61
+ p {
62
+ margin: 0;
63
+ }
64
+ }
65
+
66
+ @mixin preview_h1 {
67
+ font-size: $text_largest;
68
+ line-height: $text_larger;
69
+ font-weight: $bolder;
70
+ letter-spacing: $lspace_tight;
71
+ margin: 2.1rem 0 0 0;
72
+ }
73
+
74
+ @mixin preview_h2 {
75
+ font-size: $text_larger;
76
+ line-height: $text_larger;
77
+ font-weight: $bolder;
78
+ letter-spacing: $lspace_tight;
79
+ margin: 1.9rem 0 0 0;
80
+ }
81
+
82
+ @mixin preview_h3 {
83
+ font-size: $text_large;
84
+ line-height: $text_large;
85
+ font-weight: $bolder;
86
+ letter-spacing: $lspace_tight;
87
+ margin: 1.7rem 0 0 0;
88
+ }
89
+
90
+ @mixin preview_smaller_headings {
91
+ font-size: $text_base;
92
+ line-height: $text_base;
93
+ letter-spacing: $lspace_tight;
94
+ font-weight: $bolder;
95
+ margin: 1rem 0 0 0;
96
+ }
97
+
98
+ @mixin preview_hr {
99
+ margin: 2.2rem 0;
100
+ box-sizing: content-box;
101
+ overflow: hidden;
102
+ background: transparent;
103
+ border-bottom: 1px solid $transparent;
104
+ height: 1px;
105
+ padding: 0;
106
+ background-color: $border_light;
107
+ border: 0;
108
+ }
109
+
110
+ @mixin preview_ol {
111
+ margin: 1rem 0 0 0;
112
+ padding-left: $space_md;
113
+ list-style: decimal;
114
+ li {
115
+ margin: 2px 0;
116
+ p {
117
+ margin: 0;
118
+ }
119
+ }
120
+ }
121
+
122
+ @mixin preview_ul {
123
+ list-style-position: disc;
124
+ margin: 1rem 0 0 0;
125
+ padding-left: $space_md;
126
+ li {
127
+ margin: 2px 0;
128
+ p {
129
+ margin: 0;
130
+ }
131
+ }
132
+ }
@@ -6,6 +6,7 @@
6
6
  @import "../tokens/typography";
7
7
  @import "../tokens/shadows";
8
8
  @import "../tokens/transition";
9
+ @import "previewer_mixin";
9
10
 
10
11
  [class^="pb_rich_text_editor_kit"] {
11
12
  .toolbar_button {
@@ -85,109 +86,44 @@
85
86
  }
86
87
 
87
88
  code {
88
- font-family: monospace;
89
- background: $bg_light;
90
- padding: 0.1rem 0.3rem;
91
- margin: 0 5px;
92
- box-shadow: 0 2px 10px $shadow;
93
- border-radius: 0.25rem;
94
- overflow: hidden;
95
- font-size: ($text_small - 1px);
89
+ @include preview_code;
96
90
  }
97
91
 
98
92
  pre {
99
- background: $bg_dark;
100
- padding: $space_sm;
101
- border-radius: $border_rad_heaviest;
102
- margin: 1.5rem 0 2rem 0;
103
- code {
104
- background: transparent;
105
- box-shadow: none;
106
- border: 0;
107
- color: #faf6e4;
108
- }
93
+ @include preview_pre_codeblock;
109
94
  }
110
95
  a {
111
- color: $primary;
112
- border-bottom: 1px solid $primary;
113
- &:hover {
114
- color: $text_lt_default;
115
- border-bottom: 1px solid $text_lt_default;
116
- }
96
+ @include preview_a;
117
97
  }
118
98
  blockquote {
119
- font-size: $font_larger;
120
- padding: $space_sm $space_md;
121
- font-style: italic;
122
- p {
123
- margin: 0;
124
- }
99
+ @include preview_blockquote;
125
100
  }
126
101
  &:focus-visible {
127
102
  outline: unset;
128
103
  @include transition_default;
129
104
  }
130
105
  h1 {
131
- font-size: $text_largest;
132
- line-height: $text_larger;
133
- font-weight: $bolder;
134
- letter-spacing: $lspace_tight;
135
- margin: 2.1rem 0 0 0;
106
+ @include preview_h1;
136
107
  }
137
108
  h2 {
138
- font-size: $text_larger;
139
- line-height: $text_larger;
140
- font-weight: $bolder;
141
- letter-spacing: $lspace_tight;
142
- margin: 1.9rem 0 0 0;
109
+ @include preview_h2;
143
110
  }
144
111
  h3 {
145
- font-size: $text_large;
146
- line-height: $text_large;
147
- font-weight: $bolder;
148
- letter-spacing: $lspace_tight;
149
- margin: 1.7rem 0 0 0;
112
+ @include preview_h3;
150
113
  }
151
114
  h4,
152
115
  h5,
153
116
  h6 {
154
- font-size: $text_base;
155
- line-height: $text_base;
156
- letter-spacing: $lspace_tight;
157
- font-weight: $bolder;
117
+ @include preview_smaller_headings;
158
118
  }
159
119
  hr {
160
- margin: 2.2rem 0;
161
- box-sizing: content-box;
162
- overflow: hidden;
163
- background: transparent;
164
- border-bottom: 1px solid $transparent;
165
- height: 1px;
166
- padding: 0;
167
- background-color: $border_light;
168
- border: 0;
120
+ @include preview_hr;
169
121
  }
170
122
  ol {
171
- margin: 1rem 0 0 0;
172
- padding-left: $space_md;
173
- list-style: decimal;
174
- li {
175
- margin: 2px 0;
176
- p {
177
- margin: 0;
178
- }
179
- }
123
+ @include preview_ol;
180
124
  }
181
125
  ul {
182
- list-style-position: disc;
183
- margin: 1rem 0 0 0;
184
- padding-left: $space_md;
185
- li {
186
- margin: 2px 0;
187
- p {
188
- margin: 0;
189
- }
190
- }
126
+ @include preview_ul;
191
127
  }
192
128
  }
193
129
  }
@@ -233,3 +169,41 @@
233
169
  }
234
170
  }
235
171
  }
172
+ .tiptap-content {
173
+ @include preview_first_child;
174
+ a {
175
+ @include preview_a;
176
+ }
177
+ blockquote {
178
+ @include preview_blockquote;
179
+ }
180
+ h1 {
181
+ @include preview_h1;
182
+ }
183
+ h2 {
184
+ @include preview_h2;
185
+ }
186
+ h3 {
187
+ @include preview_h3;
188
+ }
189
+ h4,
190
+ h5,
191
+ h6 {
192
+ @include preview_smaller_headings;
193
+ }
194
+ hr {
195
+ @include preview_hr;
196
+ }
197
+ ol {
198
+ @include preview_ol;
199
+ }
200
+ p {
201
+ @include preview_p;
202
+ }
203
+ pre {
204
+ @include preview_pre_codeblock;
205
+ }
206
+ ul {
207
+ @include preview_ul;
208
+ }
209
+ }