primer_view_components 0.0.122 → 0.1.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/app/assets/javascripts/primer_view_components.js +1 -1
  4. data/app/assets/javascripts/primer_view_components.js.map +1 -1
  5. data/app/assets/styles/primer_view_components.css +2 -2
  6. data/app/assets/styles/primer_view_components.css.map +1 -1
  7. data/app/components/primer/alpha/action_list/item.rb +11 -0
  8. data/app/components/primer/alpha/action_list.css.json +41 -0
  9. data/app/components/primer/alpha/auto_complete.css.json +11 -0
  10. data/app/components/primer/alpha/banner.css.json +14 -0
  11. data/app/components/primer/alpha/button_marketing.css.json +10 -0
  12. data/app/components/primer/alpha/dialog.css.json +63 -0
  13. data/app/components/primer/alpha/dropdown.css.json +21 -0
  14. data/app/components/primer/alpha/layout.css.json +27 -0
  15. data/app/components/primer/alpha/menu.css.json +11 -0
  16. data/app/components/primer/alpha/nav_list/item.rb +7 -1
  17. data/app/components/primer/alpha/nav_list/section.rb +5 -5
  18. data/app/components/primer/alpha/nav_list.d.ts +6 -3
  19. data/app/components/primer/alpha/nav_list.js +98 -6
  20. data/app/components/primer/alpha/nav_list.rb +7 -2
  21. data/app/components/primer/alpha/nav_list.ts +109 -3
  22. data/app/components/primer/alpha/overlay/body.rb +26 -0
  23. data/app/components/primer/alpha/overlay/footer.rb +41 -0
  24. data/app/components/primer/alpha/overlay/header.html.erb +15 -0
  25. data/app/components/primer/alpha/overlay/header.rb +47 -0
  26. data/app/components/primer/alpha/overlay.css +1 -0
  27. data/app/components/primer/alpha/overlay.css.json +11 -0
  28. data/app/components/primer/alpha/overlay.css.map +1 -0
  29. data/app/components/primer/alpha/overlay.html.erb +11 -0
  30. data/app/components/primer/alpha/overlay.pcss +14 -0
  31. data/app/components/primer/alpha/overlay.rb +194 -0
  32. data/app/components/primer/alpha/segmented_control.css.json +15 -0
  33. data/app/components/primer/alpha/tab_nav.css.json +10 -0
  34. data/app/components/primer/alpha/text_field.css.json +38 -0
  35. data/app/components/primer/alpha/toggle_switch.css.json +16 -0
  36. data/app/components/primer/alpha/underline_nav.css.json +13 -0
  37. data/app/components/primer/anchored_position.d.ts +27 -0
  38. data/app/components/primer/anchored_position.js +149 -0
  39. data/app/components/primer/anchored_position.ts +167 -0
  40. data/app/components/primer/beta/avatar.css.json +14 -0
  41. data/app/components/primer/beta/avatar_stack.css.json +9 -0
  42. data/app/components/primer/beta/blankslate.css.json +12 -0
  43. data/app/components/primer/beta/border_box.css.json +32 -0
  44. data/app/components/primer/beta/breadcrumbs.css.json +4 -0
  45. data/app/components/primer/beta/button.css.json +22 -0
  46. data/app/components/primer/beta/counter.css.json +6 -0
  47. data/app/components/primer/beta/flash.css.json +15 -0
  48. data/app/components/primer/beta/flash.html.erb +1 -2
  49. data/app/components/primer/beta/label.css.json +20 -0
  50. data/app/components/primer/beta/link.css.json +8 -0
  51. data/app/components/primer/beta/popover.css.json +18 -0
  52. data/app/components/primer/beta/progress_bar.css.json +6 -0
  53. data/app/components/primer/beta/state.css.json +10 -0
  54. data/app/components/primer/beta/subhead.css.json +8 -0
  55. data/app/components/primer/beta/timeline_item.css.json +9 -0
  56. data/app/components/primer/beta/truncate.css.json +6 -0
  57. data/app/components/primer/component.rb +1 -1
  58. data/app/components/primer/primer.d.ts +2 -0
  59. data/app/components/primer/primer.js +2 -0
  60. data/app/components/primer/primer.pcss +3 -0
  61. data/app/components/primer/primer.ts +2 -0
  62. data/app/components/primer/truncate.css.json +7 -0
  63. data/app/lib/primer/css/layout.css.json +263 -0
  64. data/app/lib/primer/css/utilities.css.json +1636 -0
  65. data/lib/primer/view_components/linters/base_linter.rb +1 -1
  66. data/lib/primer/view_components/linters/disallow_component_css_counter.rb +30 -0
  67. data/lib/primer/view_components/version.rb +2 -2
  68. data/lib/primer/yard/component_manifest.rb +1 -0
  69. data/previews/primer/alpha/overlay_preview/middle_of_page.html.erb +17 -0
  70. data/previews/primer/alpha/overlay_preview.rb +107 -0
  71. data/static/arguments.json +104 -0
  72. data/static/audited_at.json +4 -0
  73. data/static/classes.json +311 -0
  74. data/static/constants.json +102 -0
  75. data/static/previews.json +21 -0
  76. data/static/statuses.json +4 -0
  77. metadata +19 -2
@@ -0,0 +1,149 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
+ if (kind === "m") throw new TypeError("Private method is not writable");
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
+ };
12
+ var _AnchoredPositionElement_anchorElement, _AnchoredPositionElement_animationFrame;
13
+ import { getAnchoredPosition } from '@primer/behaviors';
14
+ const updateWhenVisible = (() => {
15
+ const anchors = new Set();
16
+ let intersectionObserver = null;
17
+ let resizeObserver = null;
18
+ function updateVisibleAnchors() {
19
+ for (const anchor of anchors) {
20
+ anchor.update();
21
+ }
22
+ }
23
+ return (el) => {
24
+ // eslint-disable-next-line github/prefer-observers
25
+ window.addEventListener('resize', updateVisibleAnchors);
26
+ intersectionObserver || (intersectionObserver = new IntersectionObserver(entries => {
27
+ for (const entry of entries) {
28
+ const target = entry.target;
29
+ if (entry.isIntersecting) {
30
+ target.update();
31
+ anchors.add(target);
32
+ }
33
+ else {
34
+ anchors.delete(target);
35
+ }
36
+ }
37
+ }));
38
+ resizeObserver || (resizeObserver = new ResizeObserver(() => {
39
+ for (const anchor of anchors) {
40
+ anchor.update();
41
+ }
42
+ }));
43
+ resizeObserver.observe(el.ownerDocument.documentElement);
44
+ intersectionObserver.observe(el);
45
+ };
46
+ })();
47
+ export default class AnchoredPositionElement extends HTMLElement {
48
+ constructor() {
49
+ super(...arguments);
50
+ _AnchoredPositionElement_anchorElement.set(this, null);
51
+ _AnchoredPositionElement_animationFrame.set(this, void 0);
52
+ }
53
+ get align() {
54
+ const value = this.getAttribute('align');
55
+ if (value === 'center' || value === 'end')
56
+ return value;
57
+ return 'start';
58
+ }
59
+ set align(value) {
60
+ this.setAttribute('align', `${value}`);
61
+ }
62
+ get side() {
63
+ const value = this.getAttribute('side');
64
+ if (value === 'inside-top' ||
65
+ value === 'inside-bottom' ||
66
+ value === 'inside-left' ||
67
+ value === 'inside-right' ||
68
+ value === 'inside-center' ||
69
+ value === 'outside-top' ||
70
+ value === 'outside-left' ||
71
+ value === 'outside-right') {
72
+ return value;
73
+ }
74
+ return 'outside-bottom';
75
+ }
76
+ set side(value) {
77
+ this.setAttribute('side', `${value}`);
78
+ }
79
+ get anchorOffset() {
80
+ const alias = this.getAttribute('anchor-offset');
81
+ if (alias === 'spacious' || alias === '8')
82
+ return 8;
83
+ return 4;
84
+ }
85
+ set anchorOffset(value) {
86
+ this.setAttribute('anchor-offset', `${value}`);
87
+ }
88
+ get anchor() {
89
+ return this.getAttribute('anchor') || '';
90
+ }
91
+ set anchor(value) {
92
+ this.setAttribute('anchor', `${value}`);
93
+ }
94
+ get anchorElement() {
95
+ if (__classPrivateFieldGet(this, _AnchoredPositionElement_anchorElement, "f"))
96
+ return __classPrivateFieldGet(this, _AnchoredPositionElement_anchorElement, "f");
97
+ const idRef = this.anchor;
98
+ if (!idRef)
99
+ return null;
100
+ return this.ownerDocument.getElementById(idRef);
101
+ }
102
+ set anchorElement(value) {
103
+ __classPrivateFieldSet(this, _AnchoredPositionElement_anchorElement, value, "f");
104
+ if (!__classPrivateFieldGet(this, _AnchoredPositionElement_anchorElement, "f")) {
105
+ this.removeAttribute('anchor');
106
+ }
107
+ }
108
+ get alignmentOffset() {
109
+ return Number(this.getAttribute('alignment-offset'));
110
+ }
111
+ set alignmentOffset(value) {
112
+ this.setAttribute('alignment-offset', `${value}`);
113
+ }
114
+ get allowOutOfBounds() {
115
+ return this.hasAttribute('allow-out-of-bounds');
116
+ }
117
+ set allowOutOfBounds(value) {
118
+ this.toggleAttribute('allow-out-of-bounds', value);
119
+ }
120
+ connectedCallback() {
121
+ this.update();
122
+ this.addEventListener('beforetoggle', () => this.update());
123
+ updateWhenVisible(this);
124
+ }
125
+ attributeChangedCallback() {
126
+ this.update();
127
+ }
128
+ update() {
129
+ if (!this.isConnected)
130
+ return;
131
+ cancelAnimationFrame(__classPrivateFieldGet(this, _AnchoredPositionElement_animationFrame, "f"));
132
+ __classPrivateFieldSet(this, _AnchoredPositionElement_animationFrame, requestAnimationFrame(() => {
133
+ const anchor = this.anchorElement;
134
+ if (!anchor)
135
+ return;
136
+ const { left, top, anchorSide, anchorAlign } = getAnchoredPosition(this, anchor, this);
137
+ this.style.top = `${top}px`;
138
+ this.style.left = `${left}px`;
139
+ this.classList.remove('Overlay--anchorAlign-start', 'Overlay--anchorAlign-center', 'Overlay--anchorAlign-end', 'Overlay--anchorSide-insideTop', 'Overlay--anchorSide-insideBottom', 'Overlay--anchorSide-insideLeft', 'Overlay--anchorSide-insideRight', 'Overlay--anchorSide-insideCenter', 'Overlay--anchorSide-outsideTop', 'Overlay--anchorSide-outsideLeft', 'Overlay--anchorSide-outsideRight');
140
+ this.classList.add(`Overlay--anchorAlign-${anchorAlign}`, `Overlay--anchorSide-${anchorSide}`);
141
+ }), "f");
142
+ }
143
+ }
144
+ _AnchoredPositionElement_anchorElement = new WeakMap(), _AnchoredPositionElement_animationFrame = new WeakMap();
145
+ AnchoredPositionElement.observedAttributes = ['align', 'side', 'anchor', 'alignment-offset', 'allow-out-of-bounds'];
146
+ if (!customElements.get('anchored-position')) {
147
+ window.AnchoredPositionElement = AnchoredPositionElement;
148
+ customElements.define('anchored-position', AnchoredPositionElement);
149
+ }
@@ -0,0 +1,167 @@
1
+ import type {AnchorAlignment, AnchorSide, PositionSettings} from '@primer/behaviors'
2
+ import {getAnchoredPosition} from '@primer/behaviors'
3
+
4
+ const updateWhenVisible = (() => {
5
+ const anchors = new Set<AnchoredPositionElement>()
6
+ let intersectionObserver: IntersectionObserver | null = null
7
+ let resizeObserver: ResizeObserver | null = null
8
+ function updateVisibleAnchors() {
9
+ for (const anchor of anchors) {
10
+ anchor.update()
11
+ }
12
+ }
13
+ return (el: AnchoredPositionElement) => {
14
+ // eslint-disable-next-line github/prefer-observers
15
+ window.addEventListener('resize', updateVisibleAnchors)
16
+ intersectionObserver ||= new IntersectionObserver(entries => {
17
+ for (const entry of entries) {
18
+ const target = entry.target as AnchoredPositionElement
19
+ if (entry.isIntersecting) {
20
+ target.update()
21
+ anchors.add(target)
22
+ } else {
23
+ anchors.delete(target)
24
+ }
25
+ }
26
+ })
27
+ resizeObserver ||= new ResizeObserver(() => {
28
+ for (const anchor of anchors) {
29
+ anchor.update()
30
+ }
31
+ })
32
+ resizeObserver.observe(el.ownerDocument.documentElement)
33
+ intersectionObserver.observe(el)
34
+ }
35
+ })()
36
+
37
+ export default class AnchoredPositionElement extends HTMLElement implements PositionSettings {
38
+ get align(): AnchorAlignment {
39
+ const value = this.getAttribute('align')
40
+ if (value === 'center' || value === 'end') return value
41
+ return 'start'
42
+ }
43
+
44
+ set align(value: AnchorAlignment) {
45
+ this.setAttribute('align', `${value}`)
46
+ }
47
+
48
+ get side(): AnchorSide {
49
+ const value = this.getAttribute('side')
50
+ if (
51
+ value === 'inside-top' ||
52
+ value === 'inside-bottom' ||
53
+ value === 'inside-left' ||
54
+ value === 'inside-right' ||
55
+ value === 'inside-center' ||
56
+ value === 'outside-top' ||
57
+ value === 'outside-left' ||
58
+ value === 'outside-right'
59
+ ) {
60
+ return value
61
+ }
62
+ return 'outside-bottom'
63
+ }
64
+
65
+ set side(value: AnchorSide) {
66
+ this.setAttribute('side', `${value}`)
67
+ }
68
+
69
+ get anchorOffset(): number {
70
+ const alias = this.getAttribute('anchor-offset')
71
+ if (alias === 'spacious' || alias === '8') return 8
72
+ return 4
73
+ }
74
+
75
+ set anchorOffset(value: number | 'normal' | 'spacious') {
76
+ this.setAttribute('anchor-offset', `${value}`)
77
+ }
78
+
79
+ get anchor() {
80
+ return this.getAttribute('anchor') || ''
81
+ }
82
+
83
+ set anchor(value: string) {
84
+ this.setAttribute('anchor', `${value}`)
85
+ }
86
+
87
+ #anchorElement: HTMLElement | null = null
88
+ get anchorElement(): HTMLElement | null {
89
+ if (this.#anchorElement) return this.#anchorElement
90
+ const idRef = this.anchor
91
+ if (!idRef) return null
92
+ return this.ownerDocument.getElementById(idRef)
93
+ }
94
+
95
+ set anchorElement(value: HTMLElement | null) {
96
+ this.#anchorElement = value
97
+ if (!this.#anchorElement) {
98
+ this.removeAttribute('anchor')
99
+ }
100
+ }
101
+
102
+ get alignmentOffset(): number {
103
+ return Number(this.getAttribute('alignment-offset'))
104
+ }
105
+
106
+ set alignmentOffset(value: number) {
107
+ this.setAttribute('alignment-offset', `${value}`)
108
+ }
109
+
110
+ get allowOutOfBounds() {
111
+ return this.hasAttribute('allow-out-of-bounds')
112
+ }
113
+
114
+ set allowOutOfBounds(value: boolean) {
115
+ this.toggleAttribute('allow-out-of-bounds', value)
116
+ }
117
+
118
+ connectedCallback() {
119
+ this.update()
120
+ this.addEventListener('beforetoggle', () => this.update())
121
+ updateWhenVisible(this)
122
+ }
123
+
124
+ static observedAttributes = ['align', 'side', 'anchor', 'alignment-offset', 'allow-out-of-bounds']
125
+ attributeChangedCallback() {
126
+ this.update()
127
+ }
128
+
129
+ #animationFrame: ReturnType<typeof requestAnimationFrame>
130
+ update() {
131
+ if (!this.isConnected) return
132
+ cancelAnimationFrame(this.#animationFrame)
133
+
134
+ this.#animationFrame = requestAnimationFrame(() => {
135
+ const anchor = this.anchorElement
136
+ if (!anchor) return
137
+ const {left, top, anchorSide, anchorAlign} = getAnchoredPosition(this, anchor, this)
138
+ this.style.top = `${top}px`
139
+ this.style.left = `${left}px`
140
+ this.classList.remove(
141
+ 'Overlay--anchorAlign-start',
142
+ 'Overlay--anchorAlign-center',
143
+ 'Overlay--anchorAlign-end',
144
+ 'Overlay--anchorSide-insideTop',
145
+ 'Overlay--anchorSide-insideBottom',
146
+ 'Overlay--anchorSide-insideLeft',
147
+ 'Overlay--anchorSide-insideRight',
148
+ 'Overlay--anchorSide-insideCenter',
149
+ 'Overlay--anchorSide-outsideTop',
150
+ 'Overlay--anchorSide-outsideLeft',
151
+ 'Overlay--anchorSide-outsideRight'
152
+ )
153
+ this.classList.add(`Overlay--anchorAlign-${anchorAlign}`, `Overlay--anchorSide-${anchorSide}`)
154
+ })
155
+ }
156
+ }
157
+
158
+ if (!customElements.get('anchored-position')) {
159
+ window.AnchoredPositionElement = AnchoredPositionElement
160
+ customElements.define('anchored-position', AnchoredPositionElement)
161
+ }
162
+
163
+ declare global {
164
+ interface Window {
165
+ AnchoredPositionElement: typeof AnchoredPositionElement
166
+ }
167
+ }
@@ -13,5 +13,19 @@
13
13
  ".avatar-6",
14
14
  ".avatar-7",
15
15
  ".avatar-8"
16
+ ],
17
+ "classes": [
18
+ "avatar",
19
+ "avatar-link",
20
+ "avatar-group-item",
21
+ "avatar-1",
22
+ "avatar-2",
23
+ "avatar-small",
24
+ "avatar-3",
25
+ "avatar-4",
26
+ "avatar-5",
27
+ "avatar-6",
28
+ "avatar-7",
29
+ "avatar-8"
16
30
  ]
17
31
  }
@@ -24,5 +24,14 @@
24
24
  ".AvatarStack--right .avatar.avatar-more:before",
25
25
  ".AvatarStack--right .avatar.avatar-more:after",
26
26
  ".AvatarStack--right .avatar"
27
+ ],
28
+ "classes": [
29
+ "AvatarStack",
30
+ "AvatarStack-body",
31
+ "AvatarStack--two",
32
+ "AvatarStack--three-plus",
33
+ "avatar",
34
+ "avatar-more",
35
+ "AvatarStack--right"
27
36
  ]
28
37
  }
@@ -18,5 +18,17 @@
18
18
  ".blankslate-large h3",
19
19
  ".blankslate-large p",
20
20
  ".blankslate-clean-background"
21
+ ],
22
+ "classes": [
23
+ "blankslate",
24
+ "blankslate-icon",
25
+ "blankslate-image",
26
+ "blankslate-heading",
27
+ "blankslate-action",
28
+ "blankslate-capped",
29
+ "blankslate-spacious",
30
+ "blankslate-narrow",
31
+ "blankslate-large",
32
+ "blankslate-clean-background"
21
33
  ]
22
34
  }
@@ -50,5 +50,37 @@
50
50
  ".Box-row--blue",
51
51
  ".Box-row--gray",
52
52
  ".Box-btn-octicon.btn-octicon"
53
+ ],
54
+ "classes": [
55
+ "Box",
56
+ "Box--condensed",
57
+ "Box-body",
58
+ "Box-footer",
59
+ "Box-header",
60
+ "Box-btn-octicon",
61
+ "btn-octicon",
62
+ "Box-row",
63
+ "Box--spacious",
64
+ "Box-title",
65
+ "Box-row--unread",
66
+ "unread",
67
+ "navigation-focus",
68
+ "Box-row--drag-button",
69
+ "is-dragging",
70
+ "sortable-chosen",
71
+ "sortable-ghost",
72
+ "Box-row--drag-hide",
73
+ "Box-row--focus-gray",
74
+ "Box-row--focus-blue",
75
+ "Box-row--hover-gray",
76
+ "Box-row--hover-blue",
77
+ "Box-row-link",
78
+ "Box--scrollable",
79
+ "Box--blue",
80
+ "Box--danger",
81
+ "Box-header--blue",
82
+ "Box-row--yellow",
83
+ "Box-row--blue",
84
+ "Box-row--gray"
53
85
  ]
54
86
  }
@@ -7,5 +7,9 @@
7
7
  ".breadcrumb-item-selected:after",
8
8
  ".breadcrumb-item[aria-current]:not([aria-current=false]):after",
9
9
  ".breadcrumb-item-selected a"
10
+ ],
11
+ "classes": [
12
+ "breadcrumb-item",
13
+ "breadcrumb-item-selected"
10
14
  ]
11
15
  }
@@ -67,5 +67,27 @@
67
67
  ".Button--iconOnly",
68
68
  ".Button--iconOnly.Button--small",
69
69
  ".Button--iconOnly.Button--large"
70
+ ],
71
+ "classes": [
72
+ "Button",
73
+ "Button-withTooltip",
74
+ "Button-content",
75
+ "Button-content--alignStart",
76
+ "Button-visual",
77
+ "Counter",
78
+ "Button-label",
79
+ "Button-leadingVisual",
80
+ "Button-trailingVisual",
81
+ "Button-trailingAction",
82
+ "Button--small",
83
+ "Button--large",
84
+ "Button--fullWidth",
85
+ "Button--primary",
86
+ "Button--secondary",
87
+ "Button--invisible",
88
+ "Button--invisible-noVisuals",
89
+ "Button--link",
90
+ "Button--danger",
91
+ "Button--iconOnly"
70
92
  ]
71
93
  }
@@ -6,5 +6,11 @@
6
6
  ".Counter .octicon",
7
7
  ".Counter--primary",
8
8
  ".Counter--secondary"
9
+ ],
10
+ "classes": [
11
+ "Counter",
12
+ "octicon",
13
+ "Counter--primary",
14
+ "Counter--secondary"
9
15
  ]
10
16
  }
@@ -23,5 +23,20 @@
23
23
  ".flash-banner",
24
24
  ".flash-full",
25
25
  ".warning"
26
+ ],
27
+ "classes": [
28
+ "flash",
29
+ "octicon",
30
+ "flash-messages",
31
+ "flash-close",
32
+ "flash-action",
33
+ "btn",
34
+ "btn-primary",
35
+ "flash-warn",
36
+ "flash-error",
37
+ "flash-success",
38
+ "flash-full",
39
+ "flash-banner",
40
+ "warning"
26
41
  ]
27
42
  }
@@ -1,6 +1,5 @@
1
1
  <%= render Primer::BaseComponent.new(**@system_arguments) do %>
2
- <%= primer_octicon @icon if @icon %>
3
- <%= content %>
2
+ <%= primer_octicon @icon if @icon %><%= content %>
4
3
  <% if @dismissible %>
5
4
  <button class="flash-close js-flash-close" type="button" aria-label="Close">
6
5
  <%= primer_octicon "x" %>
@@ -21,5 +21,25 @@
21
21
  ".Label--closed",
22
22
  ".Label--done",
23
23
  ".Label--sponsors"
24
+ ],
25
+ "classes": [
26
+ "labels",
27
+ "Label",
28
+ "label",
29
+ "Label--large",
30
+ "Label--inline",
31
+ "Label--primary",
32
+ "Label--secondary",
33
+ "Label--accent",
34
+ "Label--info",
35
+ "Label--success",
36
+ "Label--attention",
37
+ "Label--warning",
38
+ "Label--severe",
39
+ "Label--danger",
40
+ "Label--open",
41
+ "Label--closed",
42
+ "Label--done",
43
+ "Label--sponsors"
24
44
  ]
25
45
  }
@@ -15,5 +15,13 @@
15
15
  ".Link--muted:hover [class*=color-fg]",
16
16
  ".Link--primary:hover [class*=color-fg]",
17
17
  ".Link--secondary:hover [class*=color-fg]"
18
+ ],
19
+ "classes": [
20
+ "Link",
21
+ "Link--primary",
22
+ "Link--secondary",
23
+ "Link--muted",
24
+ "Link--onHover",
25
+ "color-fg"
18
26
  ]
19
27
  }
@@ -35,5 +35,23 @@
35
35
  ".Popover-message--right:before",
36
36
  ".Popover-message--large",
37
37
  ".Popover-message>.btn-octicon"
38
+ ],
39
+ "classes": [
40
+ "Popover",
41
+ "Popover-message",
42
+ "Popover-message--no-caret",
43
+ "Popover-message--bottom-left",
44
+ "Popover-message--bottom-right",
45
+ "Popover-message--bottom",
46
+ "Popover-message--top-right",
47
+ "Popover-message--top-left",
48
+ "Popover-message--left-bottom",
49
+ "Popover-message--left-top",
50
+ "Popover-message--left",
51
+ "Popover-message--right-bottom",
52
+ "Popover-message--right-top",
53
+ "Popover-message--right",
54
+ "Popover-message--large",
55
+ "btn-octicon"
38
56
  ]
39
57
  }
@@ -6,5 +6,11 @@
6
6
  ".Progress--small",
7
7
  ".Progress-item",
8
8
  ".Progress-item+.Progress-item"
9
+ ],
10
+ "classes": [
11
+ "Progress",
12
+ "Progress--large",
13
+ "Progress--small",
14
+ "Progress-item"
9
15
  ]
10
16
  }
@@ -9,5 +9,15 @@
9
9
  ".State--closed",
10
10
  ".State--small",
11
11
  ".State--small .octicon"
12
+ ],
13
+ "classes": [
14
+ "State",
15
+ "state",
16
+ "State--draft",
17
+ "State--open",
18
+ "State--merged",
19
+ "State--closed",
20
+ "State--small",
21
+ "octicon"
12
22
  ]
13
23
  }
@@ -8,5 +8,13 @@
8
8
  ".Subhead-description",
9
9
  ".Subhead-actions",
10
10
  ".Subhead-actions+.Subhead-description"
11
+ ],
12
+ "classes": [
13
+ "Subhead",
14
+ "Subhead--spacious",
15
+ "Subhead-heading",
16
+ "Subhead-heading--danger",
17
+ "Subhead-description",
18
+ "Subhead-actions"
11
19
  ]
12
20
  }
@@ -12,5 +12,14 @@
12
12
  ".TimelineItem--condensed",
13
13
  ".TimelineItem--condensed:last-child",
14
14
  ".TimelineItem--condensed .TimelineItem-badge"
15
+ ],
16
+ "classes": [
17
+ "TimelineItem",
18
+ "TimelineItem-badge",
19
+ "TimelineItem-badge--success",
20
+ "TimelineItem-body",
21
+ "TimelineItem-avatar",
22
+ "TimelineItem-break",
23
+ "TimelineItem--condensed"
15
24
  ]
16
25
  }
@@ -8,5 +8,11 @@
8
8
  ".Truncate>.Truncate-text.Truncate-text--expandable:active",
9
9
  ".Truncate>.Truncate-text.Truncate-text--expandable:focus",
10
10
  ".Truncate>.Truncate-text.Truncate-text--expandable:hover"
11
+ ],
12
+ "classes": [
13
+ "Truncate",
14
+ "Truncate-text",
15
+ "Truncate-text--primary",
16
+ "Truncate-text--expandable"
11
17
  ]
12
18
  }
@@ -12,7 +12,7 @@ module Primer
12
12
  end
13
13
 
14
14
  if Module.const_defined?("ViewComponent::PolymorphicSlots") &&
15
- ViewComponent::Base < ViewComponent::PolymorphicSlots
15
+ !(ViewComponent::Base < ViewComponent::PolymorphicSlots)
16
16
  include ViewComponent::PolymorphicSlots
17
17
  end
18
18
 
@@ -1,4 +1,6 @@
1
+ import '@oddbird/popover-polyfill';
1
2
  import './alpha/dropdown';
3
+ import './anchored_position';
2
4
  import './alpha/image_crop';
3
5
  import './alpha/modal_dialog';
4
6
  import './alpha/nav_list';
@@ -1,4 +1,6 @@
1
+ import '@oddbird/popover-polyfill';
1
2
  import './alpha/dropdown';
3
+ import './anchored_position';
2
4
  import './alpha/image_crop';
3
5
  import './alpha/modal_dialog';
4
6
  import './alpha/nav_list';
@@ -1,3 +1,5 @@
1
+ @import "@oddbird/popover-polyfill/dist/popover.css";
2
+
1
3
  /* CSS component styles here */
2
4
 
3
5
  /* alpha */
@@ -20,6 +22,7 @@
20
22
  @import "./beta/avatar_stack.pcss";
21
23
  @import "./beta/border_box.pcss";
22
24
  @import "./beta/blankslate.pcss";
25
+ @import "./alpha/overlay.pcss";
23
26
  @import "./beta/breadcrumbs.pcss";
24
27
  @import "./beta/button.pcss";
25
28
  @import "./beta/counter.pcss";
@@ -1,4 +1,6 @@
1
+ import '@oddbird/popover-polyfill'
1
2
  import './alpha/dropdown'
3
+ import './anchored_position'
2
4
  import './alpha/image_crop'
3
5
  import './alpha/modal_dialog'
4
6
  import './alpha/nav_list'