├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── actions │ └── setup-node │ │ └── action.yml └── workflows │ ├── docs.yml │ ├── lint.yml │ ├── size-limit.yml │ └── unit.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .prettierignore ├── .prettierrc ├── .stylelintignore ├── .stylelintrc.json ├── .vscode └── settings.json ├── CHANGELOG.md ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── assetsTransformer.js ├── docs ├── 404 │ └── index.html ├── .gitkeep ├── 404.html ├── 52f69097f3fcafa8a849090151da600d450c45f5-6668d442dc03e8321a05.js ├── 52f69097f3fcafa8a849090151da600d450c45f5-6668d442dc03e8321a05.js.LICENSE.txt ├── 52f69097f3fcafa8a849090151da600d450c45f5-6668d442dc03e8321a05.js.map ├── 52f69097f3fcafa8a849090151da600d450c45f5-6fdcd0e906cb68a57829.js ├── 52f69097f3fcafa8a849090151da600d450c45f5-6fdcd0e906cb68a57829.js.LICENSE.txt ├── 52f69097f3fcafa8a849090151da600d450c45f5-6fdcd0e906cb68a57829.js.map ├── 52f69097f3fcafa8a849090151da600d450c45f5-ab53e0c70918faff93e2.js ├── 52f69097f3fcafa8a849090151da600d450c45f5-ab53e0c70918faff93e2.js.LICENSE.txt ├── 52f69097f3fcafa8a849090151da600d450c45f5-ab53e0c70918faff93e2.js.map ├── 52f69097f3fcafa8a849090151da600d450c45f5-b736f64021a03981fcfb.js ├── 52f69097f3fcafa8a849090151da600d450c45f5-b736f64021a03981fcfb.js.LICENSE.txt ├── 52f69097f3fcafa8a849090151da600d450c45f5-b736f64021a03981fcfb.js.map ├── 52f69097f3fcafa8a849090151da600d450c45f5-d3f694a4a99f993985a3.js ├── 52f69097f3fcafa8a849090151da600d450c45f5-d3f694a4a99f993985a3.js.LICENSE.txt ├── 52f69097f3fcafa8a849090151da600d450c45f5-d3f694a4a99f993985a3.js.map ├── app-2dc5c1363dd503a49421.js ├── app-2dc5c1363dd503a49421.js.LICENSE.txt ├── app-2dc5c1363dd503a49421.js.map ├── app-41b10397009f5f5e63e9.js ├── app-41b10397009f5f5e63e9.js.LICENSE.txt ├── app-41b10397009f5f5e63e9.js.map ├── app-4e42536b6e9db1a785af.js ├── app-4e42536b6e9db1a785af.js.LICENSE.txt ├── app-4e42536b6e9db1a785af.js.map ├── app-58265263fd0a575e2730.js ├── app-58265263fd0a575e2730.js.LICENSE.txt ├── app-58265263fd0a575e2730.js.map ├── app-58bcd32d0d2ea18b1375.js ├── app-58bcd32d0d2ea18b1375.js.LICENSE.txt ├── app-58bcd32d0d2ea18b1375.js.map ├── app-602b7540288ce1319690.js ├── app-602b7540288ce1319690.js.LICENSE.txt ├── app-602b7540288ce1319690.js.map ├── app-73cc45169b6b556051bb.js ├── app-73cc45169b6b556051bb.js.LICENSE.txt ├── app-73cc45169b6b556051bb.js.map ├── app-8107aa72ce634c8e08d6.js ├── app-8107aa72ce634c8e08d6.js.LICENSE.txt ├── app-8107aa72ce634c8e08d6.js.map ├── app-9397f579363a09cd0a29.js ├── app-9397f579363a09cd0a29.js.LICENSE.txt ├── app-9397f579363a09cd0a29.js.map ├── app-b0899ca3d796dbb25690.js ├── app-b0899ca3d796dbb25690.js.LICENSE.txt ├── app-b0899ca3d796dbb25690.js.map ├── app-c70348cd55b3cbba5a51.js ├── app-c70348cd55b3cbba5a51.js.LICENSE.txt ├── app-c70348cd55b3cbba5a51.js.map ├── app-c862e168855ec3a4186d.js ├── app-c862e168855ec3a4186d.js.LICENSE.txt ├── app-c862e168855ec3a4186d.js.map ├── app-fd0cedf56fa7f854f0d4.js ├── app-fd0cedf56fa7f854f0d4.js.LICENSE.txt ├── app-fd0cedf56fa7f854f0d4.js.map ├── bac1b955-b711947e81fae9e9bc2c.js ├── bac1b955-b711947e81fae9e9bc2c.js.map ├── chunk-map.json ├── component---example-readme-md-30b124c665ea8309a495.js ├── component---example-readme-md-30b124c665ea8309a495.js.map ├── component---example-readme-md-ef85eec0f6c3d1af1d00.js ├── component---example-readme-md-ef85eec0f6c3d1af1d00.js.map ├── component---src-components-activity-mdx-214563f4b75c544f3765.js ├── component---src-components-activity-mdx-214563f4b75c544f3765.js.map ├── component---src-components-activity-mdx-d7e7428d9326988a111b.js ├── component---src-components-activity-mdx-d7e7428d9326988a111b.js.map ├── component---src-components-attached-activity-mdx-672b5b57eee9a8e73c32.js ├── component---src-components-attached-activity-mdx-672b5b57eee9a8e73c32.js.map ├── component---src-components-attached-activity-mdx-d08c27ad3868e6e48cbc.js ├── component---src-components-attached-activity-mdx-d08c27ad3868e6e48cbc.js.map ├── component---src-components-audio-mdx-545c694169086829d3aa.js ├── component---src-components-audio-mdx-545c694169086829d3aa.js.map ├── component---src-components-audio-mdx-b302db610cab22305e6d.js ├── component---src-components-audio-mdx-b302db610cab22305e6d.js.map ├── component---src-components-avatar-group-mdx-103a78ddb23f7f9d4258.js ├── component---src-components-avatar-group-mdx-103a78ddb23f7f9d4258.js.map ├── component---src-components-avatar-group-mdx-50d0759ee018fddfaabe.js ├── component---src-components-avatar-group-mdx-50d0759ee018fddfaabe.js.map ├── component---src-components-avatar-mdx-6d72903680c16d8deb37.js ├── component---src-components-avatar-mdx-6d72903680c16d8deb37.js.map ├── component---src-components-avatar-mdx-d30a7d8270d7c0ac2f51.js ├── component---src-components-avatar-mdx-d30a7d8270d7c0ac2f51.js.map ├── component---src-components-button-mdx-77a73cd0fa772ff82dd4.js ├── component---src-components-button-mdx-77a73cd0fa772ff82dd4.js.map ├── component---src-components-button-mdx-f37117549e1e72ea7a33.js ├── component---src-components-button-mdx-f37117549e1e72ea7a33.js.map ├── component---src-components-card-mdx-9242540a4da78ef2cf0b.js ├── component---src-components-card-mdx-9242540a4da78ef2cf0b.js.map ├── component---src-components-card-mdx-d29a4f04950f8c14656a.js ├── component---src-components-card-mdx-d29a4f04950f8c14656a.js.map ├── component---src-components-comment-field-mdx-2bc186d30a805db49d00.js ├── component---src-components-comment-field-mdx-2bc186d30a805db49d00.js.map ├── component---src-components-comment-field-mdx-b79f74d0d18958f960c4.js ├── component---src-components-comment-field-mdx-b79f74d0d18958f960c4.js.map ├── component---src-components-comment-item-mdx-47199da416acf66434a5.js ├── component---src-components-comment-item-mdx-47199da416acf66434a5.js.map ├── component---src-components-comment-item-mdx-90b73e85e9a5f47bc541.js ├── component---src-components-comment-item-mdx-90b73e85e9a5f47bc541.js.map ├── component---src-components-comment-list-mdx-177c666dd43f711f1ebf.js ├── component---src-components-comment-list-mdx-177c666dd43f711f1ebf.js.map ├── component---src-components-comment-list-mdx-460faffb4a4e135462ff.js ├── component---src-components-comment-list-mdx-460faffb4a4e135462ff.js.map ├── component---src-components-data-label-mdx-1856a550f4c9c8c7d146.js ├── component---src-components-data-label-mdx-1856a550f4c9c8c7d146.js.map ├── component---src-components-data-label-mdx-32c61aae9c9eec71ae19.js ├── component---src-components-data-label-mdx-32c61aae9c9eec71ae19.js.map ├── component---src-components-dropdown-mdx-5ec4ca678d76baeef0e6.js ├── component---src-components-dropdown-mdx-5ec4ca678d76baeef0e6.js.map ├── component---src-components-dropdown-mdx-fce603a1e8352861f06b.js ├── component---src-components-dropdown-mdx-fce603a1e8352861f06b.js.map ├── component---src-components-dropdown-panel-mdx-0e6d8be9bf316bb8bb80.js ├── component---src-components-dropdown-panel-mdx-0e6d8be9bf316bb8bb80.js.map ├── component---src-components-dropdown-panel-mdx-844bb5c79b8e1d345431.js ├── component---src-components-dropdown-panel-mdx-844bb5c79b8e1d345431.js.map ├── component---src-components-emoji-picker-mdx-7c2c12f1927b614a7a1a.js ├── component---src-components-emoji-picker-mdx-7c2c12f1927b614a7a1a.js.map ├── component---src-components-emoji-picker-mdx-9dacb5073b2e1193f395.js ├── component---src-components-emoji-picker-mdx-9dacb5073b2e1193f395.js.map ├── component---src-components-flat-feed-mdx-048d0a6710c08038b08d.js ├── component---src-components-flat-feed-mdx-048d0a6710c08038b08d.js.map ├── component---src-components-flat-feed-mdx-5da8602ef66e94fe71f8.js ├── component---src-components-flat-feed-mdx-5da8602ef66e94fe71f8.js.map ├── component---src-components-flex-mdx-a75095138c55135f92aa.js ├── component---src-components-flex-mdx-a75095138c55135f92aa.js.map ├── component---src-components-flex-mdx-c901d25ddad53886ed8f.js ├── component---src-components-flex-mdx-c901d25ddad53886ed8f.js.map ├── component---src-components-follow-button-mdx-4c8bd11ec875348a0f3f.js ├── component---src-components-follow-button-mdx-4c8bd11ec875348a0f3f.js.map ├── component---src-components-follow-button-mdx-c98cccdc805587af905b.js ├── component---src-components-follow-button-mdx-c98cccdc805587af905b.js.map ├── component---src-components-gallery-mdx-3a50de28d09997930ab3.js ├── component---src-components-gallery-mdx-3a50de28d09997930ab3.js.map ├── component---src-components-gallery-mdx-4da830ec1cc297a0bff5.js ├── component---src-components-gallery-mdx-4da830ec1cc297a0bff5.js.map ├── component---src-components-icon-badge-mdx-cb469927a0455fab66a8.js ├── component---src-components-icon-badge-mdx-cb469927a0455fab66a8.js.map ├── component---src-components-icon-badge-mdx-f5d0444183d945100e34.js ├── component---src-components-icon-badge-mdx-f5d0444183d945100e34.js.map ├── component---src-components-icons-mdx-b9f32c05e8f81429f33b.js ├── component---src-components-icons-mdx-b9f32c05e8f81429f33b.js.map ├── component---src-components-icons-mdx-c64261d083dd742b1f67.js ├── component---src-components-icons-mdx-c64261d083dd742b1f67.js.map ├── component---src-components-icons-mdx-e8863d0e3375af9e3a2b.js ├── component---src-components-icons-mdx-e8863d0e3375af9e3a2b.js.map ├── component---src-components-infinite-scroll-mdx-5d399dbf4bce6e8169cd.js ├── component---src-components-infinite-scroll-mdx-5d399dbf4bce6e8169cd.js.map ├── component---src-components-infinite-scroll-mdx-8f6d02924334b0da7194.js ├── component---src-components-infinite-scroll-mdx-8f6d02924334b0da7194.js.map ├── component---src-components-infinite-scroll-mdx-dc40a26117bd990d68a7.js ├── component---src-components-infinite-scroll-mdx-dc40a26117bd990d68a7.js.map ├── component---src-components-like-button-mdx-c51f6ef55123246ee043.js ├── component---src-components-like-button-mdx-c51f6ef55123246ee043.js.map ├── component---src-components-like-button-mdx-d230638527a8bb858bd9.js ├── component---src-components-like-button-mdx-d230638527a8bb858bd9.js.map ├── component---src-components-link-mdx-696ffcd0b4ce069a7914.js ├── component---src-components-link-mdx-696ffcd0b4ce069a7914.js.map ├── component---src-components-link-mdx-7cd92f4e85075e9526bd.js ├── component---src-components-link-mdx-7cd92f4e85075e9526bd.js.map ├── component---src-components-load-more-button-mdx-02ed968492810191a7a3.js ├── component---src-components-load-more-button-mdx-02ed968492810191a7a3.js.map ├── component---src-components-load-more-button-mdx-ce4cf59e6e646be25c25.js ├── component---src-components-load-more-button-mdx-ce4cf59e6e646be25c25.js.map ├── component---src-components-load-more-paginator-mdx-063cfbc214a527153976.js ├── component---src-components-load-more-paginator-mdx-063cfbc214a527153976.js.map ├── component---src-components-load-more-paginator-mdx-d9f564b225e4ebbadba9.js ├── component---src-components-load-more-paginator-mdx-d9f564b225e4ebbadba9.js.map ├── component---src-components-new-activities-notification-mdx-0c43fe4c10f63fa35600.js ├── component---src-components-new-activities-notification-mdx-0c43fe4c10f63fa35600.js.map ├── component---src-components-new-activities-notification-mdx-25c30e6c3742c4de0bd8.js ├── component---src-components-new-activities-notification-mdx-25c30e6c3742c4de0bd8.js.map ├── component---src-components-notification-dropdown-mdx-7f0b376d4605d317f4f6.js ├── component---src-components-notification-dropdown-mdx-7f0b376d4605d317f4f6.js.map ├── component---src-components-notification-dropdown-mdx-a0a68b8f5d03f1b1fcc3.js ├── component---src-components-notification-dropdown-mdx-a0a68b8f5d03f1b1fcc3.js.map ├── component---src-components-notification-feed-mdx-507bc4a223c2eb2651fc.js ├── component---src-components-notification-feed-mdx-507bc4a223c2eb2651fc.js.map ├── component---src-components-notification-feed-mdx-83cdc8c0606ba4a9d294.js ├── component---src-components-notification-feed-mdx-83cdc8c0606ba4a9d294.js.map ├── component---src-components-notification-mdx-2867ce3090b6ca30e1ba.js ├── component---src-components-notification-mdx-2867ce3090b6ca30e1ba.js.map ├── component---src-components-notification-mdx-da623a0f4db0418a4a82.js ├── component---src-components-notification-mdx-da623a0f4db0418a4a82.js.map ├── component---src-components-panel-mdx-11f6da2e8c88b00cdbae.js ├── component---src-components-panel-mdx-11f6da2e8c88b00cdbae.js.map ├── component---src-components-panel-mdx-ef2a829fcef8fdb51bc1.js ├── component---src-components-panel-mdx-ef2a829fcef8fdb51bc1.js.map ├── component---src-components-reaction-icon-mdx-19826b19d41eb0157c6f.js ├── component---src-components-reaction-icon-mdx-19826b19d41eb0157c6f.js.map ├── component---src-components-reaction-icon-mdx-4d32dac8bd56b428f6a9.js ├── component---src-components-reaction-icon-mdx-4d32dac8bd56b428f6a9.js.map ├── component---src-components-reaction-icon-mdx-c45abf50284a46689754.js ├── component---src-components-reaction-icon-mdx-c45abf50284a46689754.js.map ├── component---src-components-reaction-list-mdx-06446292fc2328b6b114.js ├── component---src-components-reaction-list-mdx-06446292fc2328b6b114.js.map ├── component---src-components-reaction-list-mdx-77600e625a0f7e0c01a1.js ├── component---src-components-reaction-list-mdx-77600e625a0f7e0c01a1.js.map ├── component---src-components-reaction-toggle-icon-mdx-0f9ecca753d2a4f388a3.js ├── component---src-components-reaction-toggle-icon-mdx-0f9ecca753d2a4f388a3.js.map ├── component---src-components-reaction-toggle-icon-mdx-4e769636e1feb1d19b88.js ├── component---src-components-reaction-toggle-icon-mdx-4e769636e1feb1d19b88.js.map ├── component---src-components-reaction-toggle-icon-mdx-61e5b076f21bda4b6158.js ├── component---src-components-reaction-toggle-icon-mdx-61e5b076f21bda4b6158.js.map ├── component---src-components-repost-button-mdx-07865837ba002d982493.js ├── component---src-components-repost-button-mdx-07865837ba002d982493.js.map ├── component---src-components-repost-button-mdx-a8e884aad207992333e6.js ├── component---src-components-repost-button-mdx-a8e884aad207992333e6.js.map ├── component---src-components-single-post-mdx-c701f44d1be5ba961022.js ├── component---src-components-single-post-mdx-c701f44d1be5ba961022.js.map ├── component---src-components-single-post-mdx-e07ef020918a56e50fd0.js ├── component---src-components-single-post-mdx-e07ef020918a56e50fd0.js.map ├── component---src-components-status-update-form-status-update-form-mdx-991c77232704ebabb633.js ├── component---src-components-status-update-form-status-update-form-mdx-991c77232704ebabb633.js.map ├── component---src-components-status-update-form-status-update-form-mdx-e5a16a8f2ba373d14385.js ├── component---src-components-status-update-form-status-update-form-mdx-e5a16a8f2ba373d14385.js.map ├── component---src-components-textarea-mdx-577f6dc9cb4742b9e055.js ├── component---src-components-textarea-mdx-577f6dc9cb4742b9e055.js.map ├── component---src-components-textarea-mdx-f8a33ba538c4f7dee9ed.js ├── component---src-components-textarea-mdx-f8a33ba538c4f7dee9ed.js.map ├── component---src-components-time-header-mdx-c46557032c2eff920e8c.js ├── component---src-components-time-header-mdx-c46557032c2eff920e8c.js.map ├── component---src-components-time-header-mdx-d5c185edbfc9b50ffdae.js ├── component---src-components-time-header-mdx-d5c185edbfc9b50ffdae.js.map ├── component---src-components-title-mdx-08e901c4dd11fc88dad4.js ├── component---src-components-title-mdx-08e901c4dd11fc88dad4.js.map ├── component---src-components-title-mdx-0d612f39b1ef3e0a1ea3.js ├── component---src-components-title-mdx-0d612f39b1ef3e0a1ea3.js.map ├── component---src-components-user-bar-mdx-38899e474353c538f838.js ├── component---src-components-user-bar-mdx-38899e474353c538f838.js.map ├── component---src-components-user-bar-mdx-dbd76712f9a45d5f4c22.js ├── component---src-components-user-bar-mdx-dbd76712f9a45d5f4c22.js.map ├── component---src-components-video-mdx-4c651b18357b4e240a71.js ├── component---src-components-video-mdx-4c651b18357b4e240a71.js.map ├── component---src-components-video-mdx-f512a4630036ffc64df3.js ├── component---src-components-video-mdx-f512a4630036ffc64df3.js.map ├── component---src-i-18-n-streami-18-n-mdx-062e56188d7a81cef2b2.js ├── component---src-i-18-n-streami-18-n-mdx-062e56188d7a81cef2b2.js.map ├── component---src-i-18-n-streami-18-n-mdx-73d8d7839abbceda957a.js ├── component---src-i-18-n-streami-18-n-mdx-73d8d7839abbceda957a.js.map ├── component---src-introduction-mdx-2095c1dca23cab4bb0a5.js ├── component---src-introduction-mdx-2095c1dca23cab4bb0a5.js.map ├── component---src-introduction-mdx-a52c2fee097a02287afc.js ├── component---src-introduction-mdx-a52c2fee097a02287afc.js.map ├── component---src-pages-404-js-8733212268c907542d0e.js ├── component---src-pages-404-js-8733212268c907542d0e.js.map ├── components │ ├── activity │ │ └── index.html │ ├── attached-activity │ │ └── index.html │ ├── audio │ │ └── index.html │ ├── avatar-group │ │ └── index.html │ ├── avatar │ │ └── index.html │ ├── button │ │ └── index.html │ ├── card │ │ └── index.html │ ├── comment-field │ │ └── index.html │ ├── comment-item │ │ └── index.html │ ├── comment-list │ │ └── index.html │ ├── data-label │ │ └── index.html │ ├── dropdown-panel │ │ └── index.html │ ├── dropdown │ │ └── index.html │ ├── emoji-picker │ │ └── index.html │ ├── flat-feed │ │ └── index.html │ ├── flex │ │ └── index.html │ ├── follow-button │ │ └── index.html │ ├── gallery │ │ └── index.html │ ├── icon-badge │ │ └── index.html │ ├── icons │ │ └── index.html │ ├── infinite-scroll │ │ └── index.html │ ├── like-button │ │ └── index.html │ ├── link │ │ └── index.html │ ├── load-more-button │ │ └── index.html │ ├── load-more-paginator │ │ └── index.html │ ├── new-activities-notification │ │ └── index.html │ ├── notification-dropdown │ │ └── index.html │ ├── notification-feed │ │ └── index.html │ ├── notification │ │ └── index.html │ ├── panel │ │ └── index.html │ ├── reaction-icon │ │ └── index.html │ ├── reaction-list │ │ └── index.html │ ├── reaction-toggle-icon │ │ └── index.html │ ├── repost-button │ │ └── index.html │ ├── single-post │ │ └── index.html │ ├── status-update-form │ │ └── index.html │ ├── textarea │ │ └── index.html │ ├── time-header │ │ └── index.html │ ├── title │ │ └── index.html │ ├── user-bar │ │ └── index.html │ └── video │ │ └── index.html ├── eeefbe53-be14390c118ab8f8b391.js ├── eeefbe53-be14390c118ab8f8b391.js.map ├── example-readme │ └── index.html ├── framework-8a0382f24301116011f9.js ├── framework-8a0382f24301116011f9.js.LICENSE.txt ├── framework-8a0382f24301116011f9.js.map ├── i18n │ └── index.html ├── index.html ├── page-data │ ├── 404 │ │ └── page-data.json │ ├── 404.html │ │ └── page-data.json │ ├── app-data.json │ ├── components │ │ ├── activity │ │ │ └── page-data.json │ │ ├── attached-activity │ │ │ └── page-data.json │ │ ├── audio │ │ │ └── page-data.json │ │ ├── avatar-group │ │ │ └── page-data.json │ │ ├── avatar │ │ │ └── page-data.json │ │ ├── button │ │ │ └── page-data.json │ │ ├── card │ │ │ └── page-data.json │ │ ├── comment-field │ │ │ └── page-data.json │ │ ├── comment-item │ │ │ └── page-data.json │ │ ├── comment-list │ │ │ └── page-data.json │ │ ├── data-label │ │ │ └── page-data.json │ │ ├── dropdown-panel │ │ │ └── page-data.json │ │ ├── dropdown │ │ │ └── page-data.json │ │ ├── emoji-picker │ │ │ └── page-data.json │ │ ├── flat-feed │ │ │ └── page-data.json │ │ ├── flex │ │ │ └── page-data.json │ │ ├── follow-button │ │ │ └── page-data.json │ │ ├── gallery │ │ │ └── page-data.json │ │ ├── icon-badge │ │ │ └── page-data.json │ │ ├── icons │ │ │ └── page-data.json │ │ ├── infinite-scroll │ │ │ └── page-data.json │ │ ├── like-button │ │ │ └── page-data.json │ │ ├── link │ │ │ └── page-data.json │ │ ├── load-more-button │ │ │ └── page-data.json │ │ ├── load-more-paginator │ │ │ └── page-data.json │ │ ├── new-activities-notification │ │ │ └── page-data.json │ │ ├── notification-dropdown │ │ │ └── page-data.json │ │ ├── notification-feed │ │ │ └── page-data.json │ │ ├── notification │ │ │ └── page-data.json │ │ ├── panel │ │ │ └── page-data.json │ │ ├── reaction-icon │ │ │ └── page-data.json │ │ ├── reaction-list │ │ │ └── page-data.json │ │ ├── reaction-toggle-icon │ │ │ └── page-data.json │ │ ├── repost-button │ │ │ └── page-data.json │ │ ├── single-post │ │ │ └── page-data.json │ │ ├── status-update-form │ │ │ └── page-data.json │ │ ├── textarea │ │ │ └── page-data.json │ │ ├── time-header │ │ │ └── page-data.json │ │ ├── title │ │ │ └── page-data.json │ │ ├── user-bar │ │ │ └── page-data.json │ │ └── video │ │ │ └── page-data.json │ ├── example-readme │ │ └── page-data.json │ ├── i18n │ │ └── page-data.json │ ├── index │ │ └── page-data.json │ └── sq │ │ └── d │ │ └── 1635659820.json ├── polyfill-33dfc264b3d10eec570f.js ├── polyfill-33dfc264b3d10eec570f.js.map ├── styles-82aa8ab9b6cf4d871cb3.js ├── styles-82aa8ab9b6cf4d871cb3.js.map ├── styles.00ee7ee3b3e5bca616c7.css ├── styles.1bdd4c1e9f9b777cee66.css ├── styles.2543ff947a193d7f33b1.css ├── styles.e90be18b83c5f50b8c4a.css ├── webpack-runtime-09d728da473241244905.js ├── webpack-runtime-09d728da473241244905.js.map ├── webpack-runtime-179b7356f7cd2290cdd0.js ├── webpack-runtime-179b7356f7cd2290cdd0.js.map ├── webpack-runtime-518745fc077d8122b304.js ├── webpack-runtime-518745fc077d8122b304.js.map ├── webpack-runtime-5f2aea1a41f7b271d2d6.js ├── webpack-runtime-5f2aea1a41f7b271d2d6.js.map ├── webpack-runtime-840aae085d880984e932.js ├── webpack-runtime-840aae085d880984e932.js.map ├── webpack-runtime-b0b877a4d3c40707c47a.js ├── webpack-runtime-b0b877a4d3c40707c47a.js.map ├── webpack-runtime-c25d93fbaf7ea1d8bdd5.js ├── webpack-runtime-c25d93fbaf7ea1d8bdd5.js.map ├── webpack-runtime-eea6c677dda23a97d65b.js ├── webpack-runtime-eea6c677dda23a97d65b.js.map └── webpack.stats.json ├── doczrc.js ├── example ├── .gitignore ├── README.md ├── full-browser-build.html ├── package.json ├── public │ ├── index.html │ └── manifest.json ├── src │ ├── App.tsx │ ├── app.css │ ├── index.tsx │ ├── react-app-env.d.ts │ └── reportWebVitals.ts ├── tsconfig.json └── yarn.lock ├── jest.config.js ├── package.json ├── rollup.config.js ├── scripts ├── init_data.js └── validate-translations.js ├── src ├── Introduction.mdx ├── components │ ├── Activity.mdx │ ├── Activity.test.tsx │ ├── Activity.tsx │ ├── ActivityContent.tsx │ ├── ActivityFooter.tsx │ ├── ActivityHeader.tsx │ ├── AttachedActivity.mdx │ ├── AttachedActivity.test.tsx │ ├── AttachedActivity.tsx │ ├── Audio.mdx │ ├── Audio.test.tsx │ ├── Audio.tsx │ ├── Avatar.mdx │ ├── Avatar.test.tsx │ ├── Avatar.tsx │ ├── AvatarGroup.mdx │ ├── AvatarGroup.test.tsx │ ├── AvatarGroup.tsx │ ├── Button.mdx │ ├── Button.test.tsx │ ├── Button.tsx │ ├── Card.mdx │ ├── Card.test.tsx │ ├── Card.tsx │ ├── CommentField.mdx │ ├── CommentField.test.tsx │ ├── CommentField.tsx │ ├── CommentItem.mdx │ ├── CommentItem.test.tsx │ ├── CommentItem.tsx │ ├── CommentList.mdx │ ├── CommentList.tsx │ ├── DataLabel.mdx │ ├── DataLabel.test.tsx │ ├── DataLabel.tsx │ ├── Dropdown.mdx │ ├── Dropdown.test.tsx │ ├── Dropdown.tsx │ ├── DropdownPanel.mdx │ ├── DropdownPanel.test.tsx │ ├── DropdownPanel.tsx │ ├── EmojiPicker.mdx │ ├── EmojiPicker.test.tsx │ ├── EmojiPicker.tsx │ ├── FeedPlaceholder.test.tsx │ ├── FeedPlaceholder.tsx │ ├── FlatFeed.mdx │ ├── FlatFeed.tsx │ ├── Flex.mdx │ ├── Flex.test.tsx │ ├── Flex.tsx │ ├── FollowButton.mdx │ ├── FollowButton.test.tsx │ ├── FollowButton.tsx │ ├── Gallery.mdx │ ├── Gallery.test.tsx │ ├── Gallery.tsx │ ├── IconBadge.mdx │ ├── IconBadge.test.tsx │ ├── IconBadge.tsx │ ├── Icons.mdx │ ├── Icons.tsx │ ├── InfiniteScroll.mdx │ ├── InfiniteScroll.tsx │ ├── InfiniteScrollPaginator.tsx │ ├── LikeButton.mdx │ ├── LikeButton.test.tsx │ ├── LikeButton.tsx │ ├── Link.mdx │ ├── Link.test.tsx │ ├── Link.tsx │ ├── LoadMoreButton.mdx │ ├── LoadMoreButton.test.tsx │ ├── LoadMoreButton.tsx │ ├── LoadMorePaginator.mdx │ ├── LoadMorePaginator.test.tsx │ ├── LoadMorePaginator.tsx │ ├── NewActivitiesNotification.mdx │ ├── NewActivitiesNotification.test.tsx │ ├── NewActivitiesNotification.tsx │ ├── Notification.mdx │ ├── Notification.test.tsx │ ├── Notification.tsx │ ├── NotificationDropdown.mdx │ ├── NotificationDropdown.tsx │ ├── NotificationFeed.mdx │ ├── NotificationFeed.tsx │ ├── Panel.mdx │ ├── Panel.test.tsx │ ├── Panel.tsx │ ├── ReactionIcon.mdx │ ├── ReactionIcon.test.tsx │ ├── ReactionIcon.tsx │ ├── ReactionList.mdx │ ├── ReactionList.tsx │ ├── ReactionToggleIcon.mdx │ ├── ReactionToggleIcon.tsx │ ├── RepostButton.mdx │ ├── RepostButton.test.tsx │ ├── RepostButton.tsx │ ├── SinglePost.mdx │ ├── SinglePost.tsx │ ├── StatusUpdateForm │ │ ├── StatusUpdateForm.mdx │ │ ├── StatusUpdateForm.test.tsx │ │ ├── StatusUpdateForm.tsx │ │ ├── index.tsx │ │ └── useStatusUpdateForm.ts │ ├── Textarea.mdx │ ├── Textarea.test.tsx │ ├── Textarea.tsx │ ├── TimeHeader.mdx │ ├── TimeHeader.test.tsx │ ├── TimeHeader.tsx │ ├── Title.mdx │ ├── Title.test.tsx │ ├── Title.tsx │ ├── UserBar.mdx │ ├── UserBar.test.tsx │ ├── UserBar.tsx │ ├── Video.mdx │ ├── Video.test.tsx │ ├── Video.tsx │ └── docz.tsx ├── context │ ├── Feed.tsx │ ├── FeedManager.tsx │ ├── StreamApp.test.tsx │ ├── StreamApp.tsx │ ├── TranslationContext.tsx │ └── index.tsx ├── gatsby-theme-docz │ ├── components │ │ └── Props │ │ │ ├── index.js │ │ │ └── styles.js │ └── index.css ├── hooks │ └── useOnClickOutside.ts ├── i18n │ ├── Streami18n.mdx │ ├── Streami18n.ts │ ├── en.json │ ├── es.json │ ├── fr.json │ ├── hi.json │ ├── it.json │ ├── locales.ts │ ├── nl.json │ ├── ru.json │ └── tr.json ├── index.tsx ├── styles │ ├── components │ │ ├── Activity.scss │ │ ├── ActivityFooter.scss │ │ ├── AttachedActivity.scss │ │ ├── Audio.scss │ │ ├── Avatar.scss │ │ ├── AvatarGroup.scss │ │ ├── B2BTimeline.scss │ │ ├── Button.scss │ │ ├── Card.scss │ │ ├── CloseButton.scss │ │ ├── CommentField.scss │ │ ├── CommentItem.scss │ │ ├── DataLabel.scss │ │ ├── Dropdown.scss │ │ ├── DropdownPanel.scss │ │ ├── EmojiPicker.scss │ │ ├── FeedPlaceholder.scss │ │ ├── Flex.scss │ │ ├── FollowButton.scss │ │ ├── Gallery.scss │ │ ├── IconBadge.scss │ │ ├── Link.scss │ │ ├── LoadMoreButton.scss │ │ ├── LoadingIndicator.scss │ │ ├── Modal.scss │ │ ├── NewActivitiesNotification.scss │ │ ├── Notification.scss │ │ ├── Panel.scss │ │ ├── PanelContent.scss │ │ ├── PanelFooter.scss │ │ ├── PanelHeader.scss │ │ ├── ReactionIcon.scss │ │ ├── StatusUpdateForm.scss │ │ ├── Textarea.scss │ │ ├── Thumbnail.scss │ │ ├── ThumbnailPlaceholder.scss │ │ ├── TimeHeader.scss │ │ ├── Title.scss │ │ ├── UserBar.scss │ │ └── Video.scss │ ├── functions.scss │ ├── index.scss │ └── variables.scss └── utils │ ├── __snapshots__ │ └── textRenderer.test.tsx.snap │ ├── emojiData.ts │ ├── errors.ts │ ├── index.test.tsx │ ├── index.ts │ ├── smartRender.test.tsx │ ├── smartRender.tsx │ ├── textRenderer.test.tsx │ └── textRenderer.tsx ├── test-browser-bundle ├── index.js └── karma.config.js ├── tsconfig.json └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env", "@babel/preset-typescript", "@babel/preset-react"], 3 | "plugins": [ 4 | [ 5 | "i18next-extract", 6 | { 7 | "contextSeparator": "__", 8 | "defaultContexts": [""], 9 | "defaultNS": "en", 10 | "locales": ["nl", "en", "it", "tr", "fr", "hi", "ru", "es"], 11 | "jsonSpace": 2, 12 | "keySeparator": null, 13 | "nsSeparator": null, 14 | "keyAsDefaultValue": ["en"], 15 | "keyAsDefaultValueForDerivedKeys": false, 16 | "outputPath": "src/i18n/{{locale}}.json", 17 | "discardOldKeys": false 18 | } 19 | ], 20 | "@babel/plugin-proposal-class-properties", 21 | "@babel/plugin-transform-runtime" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/*{.,-}min.js 2 | node_modules/ 3 | /example/build/ 4 | /lib/ 5 | /dist/ 6 | /docs/ 7 | /.git/ 8 | **/*.sh 9 | vendor/ 10 | *.md 11 | .docz -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: 'bug:' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | 12 | A clear and concise description of what the bug is. 13 | 14 | **To Reproduce** 15 | 16 | Steps to reproduce the behavior: 17 | 1. Go to '...' 18 | 2. Click on '....' 19 | 3. Scroll down to '....' 20 | 4. See error 21 | 22 | **Expected behavior** 23 | 24 | A clear and concise description of what you expected to happen. 25 | 26 | **Screenshots** 27 | 28 | If applicable, add screenshots to help explain your problem. 29 | 30 | **Desktop (please complete the following information):** 31 | 32 | - OS: [e.g. iOS] 33 | - Browser [e.g. chrome, safari] 34 | - Version [e.g. 22] 35 | 36 | **Smartphone (please complete the following information):** 37 | 38 | - Device: [e.g. iPhone6] 39 | - OS: [e.g. iOS8.1] 40 | - Browser [e.g. stock browser, safari] 41 | - Version [e.g. 22] 42 | 43 | **Additional context** 44 | 45 | Add any other context about the problem here. 46 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: 'feature:' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Problem / Motivation** 11 | 12 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 13 | 14 | **Proposed solution** 15 | 16 | A clear and concise description of what you want to happen. 17 | 18 | **Describe alternatives you've considered** 19 | 20 | A clear and concise description of any alternative solutions or features you've considered. 21 | 22 | **Additional context** 23 | 24 | Add any other context or screenshots about the feature request here. 25 | -------------------------------------------------------------------------------- /.github/actions/setup-node/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup 2 | description: Sets up Node and Build SDK 3 | 4 | inputs: 5 | node-version: 6 | required: false 7 | default: '16' 8 | 9 | runs: 10 | using: 'composite' 11 | steps: 12 | - name: Setup Node 13 | uses: actions/setup-node@v2 14 | with: 15 | node-version: ${{ inputs.node-version }} 16 | - name: Cache Dependencies 17 | uses: actions/cache@v2 18 | with: 19 | path: ./node_modules 20 | key: ${{ runner.os }}-${{ inputs.node-version }}-modules-${{ hashFiles('**/yarn.lock') }} 21 | restore-keys: ${{ runner.os }}-${{ inputs.node-version }}-modules- 22 | - name: Install Dependencies & Build 23 | run: yarn install --frozen-lockfile --ignore-engines 24 | shell: bash 25 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Docs 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | pull_request: 8 | 9 | concurrency: 10 | group: ${{ github.ref }}-${{ github.workflow }} 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | build-docs: 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: actions/checkout@v2 18 | - uses: ./.github/actions/setup-node 19 | - name: Cache .docz folder 20 | uses: actions/cache@v2 21 | with: 22 | path: ./.docz 23 | key: docz-${{ matrix.node }}-gatsby-v1-${{ github.run_id }} 24 | restore-keys: docz-${{ matrix.node }}-gatsby-v1- 25 | - name: Build Docs 26 | run: yarn run docs-build 27 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | 3 | on: [push] 4 | 5 | concurrency: 6 | group: ${{ github.ref }}-${{ github.workflow }} 7 | cancel-in-progress: true 8 | 9 | jobs: 10 | lint: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: ./.github/actions/setup-node 15 | - name: Lint 16 | run: yarn run lint 17 | -------------------------------------------------------------------------------- /.github/workflows/size-limit.yml: -------------------------------------------------------------------------------- 1 | name: size 2 | on: 3 | pull_request: 4 | branches: 5 | - main 6 | - dev 7 | paths-ignore: 8 | - '**.test.**' 9 | - '**.md' 10 | - '**.mdx' 11 | 12 | concurrency: 13 | group: ${{ github.ref }}-${{ github.workflow }} 14 | cancel-in-progress: true 15 | 16 | jobs: 17 | size: 18 | runs-on: ubuntu-latest 19 | env: 20 | CI_JOB_NUMBER: 1 21 | steps: 22 | - uses: actions/checkout@v2 23 | - uses: ./.github/actions/setup-node 24 | with: 25 | node-version: 12 26 | - uses: andresz1/size-limit-action@v1 27 | with: 28 | github_token: ${{ secrets.GITHUB_TOKEN }} 29 | skip_step: install 30 | build_script: noop 31 | -------------------------------------------------------------------------------- /.github/workflows/unit.yml: -------------------------------------------------------------------------------- 1 | name: Unit Test 2 | 3 | on: [push] 4 | 5 | concurrency: 6 | group: ${{ github.ref }}-${{ github.workflow }} 7 | cancel-in-progress: true 8 | 9 | jobs: 10 | unit: 11 | runs-on: ubuntu-latest 12 | strategy: 13 | matrix: 14 | node: [12, 14, 16, 17] 15 | steps: 16 | - uses: actions/checkout@v2 17 | - uses: ./.github/actions/setup-node 18 | with: 19 | node-version: ${{ matrix.node }} 20 | - name: Test unit 21 | run: yarn test 22 | - name: Validate Browser Bundle 23 | run: yarn run test-browser-build 24 | - name: Validate translation 25 | run: yarn validate-translations 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # See https://help.github.com/ignore-files/ for more about ignoring files. 3 | 4 | # dependencies 5 | node_modules 6 | 7 | # builds 8 | /example/build 9 | dist 10 | lib 11 | .docz 12 | 13 | # misc 14 | .DS_Store 15 | .env 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | .tern-port 21 | .vscode/ 22 | .idea/ 23 | 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn run lint 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .eslintignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "arrowParens": "always", 5 | "printWidth": 120, 6 | "tabWidth": 2 7 | } 8 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | .eslintignore -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["stylelint-scss"], 3 | "extends": ["stylelint-config-standard"], 4 | "rules": { 5 | "at-rule-no-unknown": null, 6 | "scss/at-rule-no-unknown": true, 7 | "no-descending-specificity": null, 8 | "no-duplicate-selectors": null, 9 | "block-no-empty": null, 10 | "declaration-block-no-duplicate-properties": null 11 | }, 12 | "syntax": "scss", 13 | "formatter": "verbose" 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib" 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-2021, Stream.io Inc, and individual contributors. 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without modification, are permitted 6 | provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this list of 9 | conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of 12 | conditions and the following disclaimer in the documentation and/or other materials 13 | provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its contributors may 16 | be used to endorse or promote products derived from this software without specific prior 17 | written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR 20 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 21 | AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 22 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26 | OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 | POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### 🎯 Goal 2 | 3 | _Describe why we are making this change_ 4 | 5 | ### 🛠 Implementation details 6 | 7 | _Provide a description of the implementation_ 8 | 9 | ### 🎨 UI Changes 10 | 11 | _Add relevant screenshots_ 12 | -------------------------------------------------------------------------------- /assetsTransformer.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | const path = require('path'); 3 | 4 | module.exports = { 5 | process(src, filename) { 6 | return `module.exports = ${JSON.stringify(path.basename(filename))};`; 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /docs/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/52f69097f3fcafa8a849090151da600d450c45f5-6668d442dc03e8321a05.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * The buffer module from node.js, for the browser. 3 | * 4 | * @author Feross Aboukhadijeh 5 | * @license MIT 6 | */ 7 | 8 | /*! 9 | * regjsgen 0.5.2 10 | * Copyright 2014-2020 Benjamin Tan 11 | * Available under the MIT license 12 | */ 13 | 14 | /*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */ 15 | 16 | /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ 17 | -------------------------------------------------------------------------------- /docs/52f69097f3fcafa8a849090151da600d450c45f5-6fdcd0e906cb68a57829.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * The buffer module from node.js, for the browser. 3 | * 4 | * @author Feross Aboukhadijeh 5 | * @license MIT 6 | */ 7 | 8 | /*! 9 | * regjsgen 0.5.2 10 | * Copyright 2014-2020 Benjamin Tan 11 | * Available under the MIT license 12 | */ 13 | 14 | /*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */ 15 | 16 | /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ 17 | -------------------------------------------------------------------------------- /docs/52f69097f3fcafa8a849090151da600d450c45f5-ab53e0c70918faff93e2.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * The buffer module from node.js, for the browser. 3 | * 4 | * @author Feross Aboukhadijeh 5 | * @license MIT 6 | */ 7 | 8 | /*! 9 | * regjsgen 0.5.2 10 | * Copyright 2014-2020 Benjamin Tan 11 | * Available under the MIT license 12 | */ 13 | 14 | /*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */ 15 | 16 | /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ 17 | -------------------------------------------------------------------------------- /docs/52f69097f3fcafa8a849090151da600d450c45f5-b736f64021a03981fcfb.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * The buffer module from node.js, for the browser. 3 | * 4 | * @author Feross Aboukhadijeh 5 | * @license MIT 6 | */ 7 | 8 | /*! 9 | * regjsgen 0.5.2 10 | * Copyright 2014-2020 Benjamin Tan 11 | * Available under the MIT license 12 | */ 13 | 14 | /*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */ 15 | 16 | /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ 17 | -------------------------------------------------------------------------------- /docs/52f69097f3fcafa8a849090151da600d450c45f5-d3f694a4a99f993985a3.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * The buffer module from node.js, for the browser. 3 | * 4 | * @author Feross Aboukhadijeh 5 | * @license MIT 6 | */ 7 | 8 | /*! 9 | * regjsgen 0.5.2 10 | * Copyright 2014-2020 Benjamin Tan 11 | * Available under the MIT license 12 | */ 13 | 14 | /*! https://mths.be/regenerate v1.4.2 by @mathias | MIT license */ 15 | 16 | /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ 17 | -------------------------------------------------------------------------------- /docs/app-2dc5c1363dd503a49421.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-41b10397009f5f5e63e9.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | * Adapted from jQuery UI core 9 | * 10 | * http://jqueryui.com 11 | * 12 | * Copyright 2014 jQuery Foundation and other contributors 13 | * Released under the MIT license. 14 | * http://jquery.org/license 15 | * 16 | * http://api.jqueryui.com/category/ui-core/ 17 | */ 18 | 19 | /*! 20 | * array-sort 21 | * 22 | * Copyright (c) 2015-2017, Jon Schlinkert. 23 | * Released under the MIT License. 24 | */ 25 | 26 | /*! 27 | * domready (c) Dustin Diaz 2014 - License MIT 28 | * ie10 fix - Mikael Kristiansson 2019 29 | */ 30 | 31 | /*! 32 | * get-value 33 | * 34 | * Copyright (c) 2014-2015, Jon Schlinkert. 35 | * Licensed under the MIT License. 36 | */ 37 | 38 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 39 | -------------------------------------------------------------------------------- /docs/app-4e42536b6e9db1a785af.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | * Adapted from jQuery UI core 9 | * 10 | * http://jqueryui.com 11 | * 12 | * Copyright 2014 jQuery Foundation and other contributors 13 | * Released under the MIT license. 14 | * http://jquery.org/license 15 | * 16 | * http://api.jqueryui.com/category/ui-core/ 17 | */ 18 | 19 | /*! 20 | * array-sort 21 | * 22 | * Copyright (c) 2015-2017, Jon Schlinkert. 23 | * Released under the MIT License. 24 | */ 25 | 26 | /*! 27 | * domready (c) Dustin Diaz 2014 - License MIT 28 | * ie10 fix - Mikael Kristiansson 2019 29 | */ 30 | 31 | /*! 32 | * get-value 33 | * 34 | * Copyright (c) 2014-2015, Jon Schlinkert. 35 | * Licensed under the MIT License. 36 | */ 37 | 38 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 39 | -------------------------------------------------------------------------------- /docs/app-58265263fd0a575e2730.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-58bcd32d0d2ea18b1375.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-602b7540288ce1319690.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | * Adapted from jQuery UI core 9 | * 10 | * http://jqueryui.com 11 | * 12 | * Copyright 2014 jQuery Foundation and other contributors 13 | * Released under the MIT license. 14 | * http://jquery.org/license 15 | * 16 | * http://api.jqueryui.com/category/ui-core/ 17 | */ 18 | 19 | /*! 20 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 21 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 22 | */ 23 | 24 | /*! 25 | * array-sort 26 | * 27 | * Copyright (c) 2015-2017, Jon Schlinkert. 28 | * Released under the MIT License. 29 | */ 30 | 31 | /*! 32 | * domready (c) Dustin Diaz 2014 - License MIT 33 | * ie10 fix - Mikael Kristiansson 2019 34 | */ 35 | 36 | /*! 37 | * get-value 38 | * 39 | * Copyright (c) 2014-2015, Jon Schlinkert. 40 | * Licensed under the MIT License. 41 | */ 42 | 43 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 44 | 45 | /** @license React v16.14.0 46 | * react.production.min.js 47 | * 48 | * Copyright (c) Facebook, Inc. and its affiliates. 49 | * 50 | * This source code is licensed under the MIT license found in the 51 | * LICENSE file in the root directory of this source tree. 52 | */ 53 | -------------------------------------------------------------------------------- /docs/app-73cc45169b6b556051bb.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-8107aa72ce634c8e08d6.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | * Adapted from jQuery UI core 9 | * 10 | * http://jqueryui.com 11 | * 12 | * Copyright 2014 jQuery Foundation and other contributors 13 | * Released under the MIT license. 14 | * http://jquery.org/license 15 | * 16 | * http://api.jqueryui.com/category/ui-core/ 17 | */ 18 | 19 | /*! 20 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 21 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 22 | */ 23 | 24 | /*! 25 | * array-sort 26 | * 27 | * Copyright (c) 2015-2017, Jon Schlinkert. 28 | * Released under the MIT License. 29 | */ 30 | 31 | /*! 32 | * domready (c) Dustin Diaz 2014 - License MIT 33 | * ie10 fix - Mikael Kristiansson 2019 34 | */ 35 | 36 | /*! 37 | * get-value 38 | * 39 | * Copyright (c) 2014-2015, Jon Schlinkert. 40 | * Licensed under the MIT License. 41 | */ 42 | 43 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 44 | 45 | /** @license React v16.14.0 46 | * react.production.min.js 47 | * 48 | * Copyright (c) Facebook, Inc. and its affiliates. 49 | * 50 | * This source code is licensed under the MIT license found in the 51 | * LICENSE file in the root directory of this source tree. 52 | */ 53 | -------------------------------------------------------------------------------- /docs/app-9397f579363a09cd0a29.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | * Adapted from jQuery UI core 9 | * 10 | * http://jqueryui.com 11 | * 12 | * Copyright 2014 jQuery Foundation and other contributors 13 | * Released under the MIT license. 14 | * http://jquery.org/license 15 | * 16 | * http://api.jqueryui.com/category/ui-core/ 17 | */ 18 | 19 | /*! 20 | * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com 21 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 22 | */ 23 | 24 | /*! 25 | * array-sort 26 | * 27 | * Copyright (c) 2015-2017, Jon Schlinkert. 28 | * Released under the MIT License. 29 | */ 30 | 31 | /*! 32 | * domready (c) Dustin Diaz 2014 - License MIT 33 | * ie10 fix - Mikael Kristiansson 2019 34 | */ 35 | 36 | /*! 37 | * get-value 38 | * 39 | * Copyright (c) 2014-2015, Jon Schlinkert. 40 | * Licensed under the MIT License. 41 | */ 42 | 43 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 44 | 45 | /** @license React v16.14.0 46 | * react.production.min.js 47 | * 48 | * Copyright (c) Facebook, Inc. and its affiliates. 49 | * 50 | * This source code is licensed under the MIT license found in the 51 | * LICENSE file in the root directory of this source tree. 52 | */ 53 | -------------------------------------------------------------------------------- /docs/app-b0899ca3d796dbb25690.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-c70348cd55b3cbba5a51.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-c862e168855ec3a4186d.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/app-fd0cedf56fa7f854f0d4.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | Copyright (c) 2015 Jed Watson. 3 | Based on code that is Copyright 2013-2015, Facebook, Inc. 4 | All rights reserved. 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2018 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Adapted from jQuery UI core 15 | * 16 | * http://jqueryui.com 17 | * 18 | * Copyright 2014 jQuery Foundation and other contributors 19 | * Released under the MIT license. 20 | * http://jquery.org/license 21 | * 22 | * http://api.jqueryui.com/category/ui-core/ 23 | */ 24 | 25 | /*! 26 | * array-sort 27 | * 28 | * Copyright (c) 2015-2017, Jon Schlinkert. 29 | * Released under the MIT License. 30 | */ 31 | 32 | /*! 33 | * domready (c) Dustin Diaz 2014 - License MIT 34 | * ie10 fix - Mikael Kristiansson 2019 35 | */ 36 | 37 | /*! 38 | * get-value 39 | * 40 | * Copyright (c) 2014-2015, Jon Schlinkert. 41 | * Licensed under the MIT License. 42 | */ 43 | 44 | /*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 45 | -------------------------------------------------------------------------------- /docs/component---example-readme-md-30b124c665ea8309a495.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[4],{qTe4:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return i})),n.d(t,"default",(function(){return p}));var a=n("k0FJ"),r=n("oedh"),o=(n("mXGw"),n("/FXl")),c=n("TjRS"),i=(n("aD51"),{});void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!i.hasOwnProperty("__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"example/README.md"}});var m={_frontmatter:i},b=c.a;function p(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)(b,Object(a.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"example-project"},"Example project"),Object(o.b)("h2",{id:"how-to-run"},"How to run"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/GetStream/react-activity-feed\ncd react-activity-feed\nyarn\ncd example\nyarn\nyarn start\n")))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"example/README.md"}}),p.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---example-readme-md-30b124c665ea8309a495.js.map -------------------------------------------------------------------------------- /docs/component---example-readme-md-30b124c665ea8309a495.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///../example/README.md"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"mappings":"uPAQaA,G,UAAe,S,mMAC5B,IAAMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAG5E,kBACE,GAAM,mBADR,mBAGA,kBACE,GAAM,cADR,cAGA,uBAAK,oBAAMC,WAAW,MAClB,UAAa,iBADZ,mI,iMAaTJ,EAAWK,gBAAiB","file":"component---example-readme-md-30b124c665ea8309a495.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/amin/Stream/react-activity-feed/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

{`Example project`}

\n

{`How to run`}

\n
{`git clone https://github.com/GetStream/react-activity-feed\ncd react-activity-feed\nyarn\ncd example\nyarn\nyarn start\n`}
\n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/component---example-readme-md-ef85eec0f6c3d1af1d00.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[4],{qTe4:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return i})),n.d(t,"default",(function(){return p}));var a=n("k0FJ"),r=n("oedh"),o=(n("mXGw"),n("/FXl")),c=n("TjRS"),i=(n("aD51"),{});void 0!==i&&i&&i===Object(i)&&Object.isExtensible(i)&&!i.hasOwnProperty("__filemeta")&&Object.defineProperty(i,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"example/README.md"}});var m={_frontmatter:i},b=c.a;function p(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)(b,Object(a.a)({},m,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"example-project"},"Example project"),Object(o.b)("h2",{id:"how-to-run"},"How to run"),Object(o.b)("pre",null,Object(o.b)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/GetStream/react-activity-feed\ncd react-activity-feed\nyarn\ncd example\nyarn\nyarn start\n")))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"example/README.md"}}),p.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---example-readme-md-ef85eec0f6c3d1af1d00.js.map -------------------------------------------------------------------------------- /docs/component---example-readme-md-ef85eec0f6c3d1af1d00.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///../example/README.md"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"mappings":"uPAQaA,G,UAAe,S,mMAC5B,IAAMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAG5E,kBACE,GAAM,mBADR,mBAGA,kBACE,GAAM,cADR,cAGA,uBAAK,oBAAMC,WAAW,MAClB,UAAa,iBADZ,mI,iMAaTJ,EAAWK,gBAAiB","file":"component---example-readme-md-ef85eec0f6c3d1af1d00.js","sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/home/martin/Work/stream/feed/SDK/react-activity-feed/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

{`Example project`}

\n

{`How to run`}

\n
{`git clone https://github.com/GetStream/react-activity-feed\ncd react-activity-feed\nyarn\ncd example\nyarn\nyarn start\n`}
\n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/component---src-components-dropdown-mdx-5ec4ca678d76baeef0e6.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[16],{"+pzG":function(n,e,t){"use strict";t.r(e),t.d(e,"_frontmatter",(function(){return p})),t.d(e,"default",(function(){return u}));var o=t("k0FJ"),a=t("oedh"),i=(t("mXGw"),t("/FXl")),r=t("TjRS"),c=t("ZFoC"),l=t("bafw"),b=t("wlos"),p=(t("aD51"),{});void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/Dropdown.mdx"}});var d={_frontmatter:p},s=r.a;function u(n){var e,t=n.components,u=Object(a.a)(n,["components"]);return Object(i.b)(s,Object(o.a)({},d,u,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"dropdown"},"Dropdown"),Object(i.b)("h2",{id:"basic-usage"},"Basic usage"),Object(i.b)(c.c,{__position:0,__code:"\n
    \n
  • \n This link\n
  • \n
  • \n That link\n
  • \n
\n
",__scope:(e={props:u,DefaultLayout:r.a,Playground:c.c,Dropdown:l.a,Link:b.a},e.DefaultLayout=r.a,e._frontmatter=p,e),mdxType:"Playground"},Object(i.b)(l.a,{mdxType:"Dropdown"},Object(i.b)("ul",null,Object(i.b)("li",null,Object(i.b)(b.a,{mdxType:"Link"},"This link")),Object(i.b)("li",null,Object(i.b)(b.a,{mdxType:"Link"},"That link"))))))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!u.hasOwnProperty("__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/Dropdown.mdx"}}),u.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-dropdown-mdx-5ec4ca678d76baeef0e6.js.map -------------------------------------------------------------------------------- /docs/component---src-components-dropdown-mdx-fce603a1e8352861f06b.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[16],{"+pzG":function(n,e,t){"use strict";t.r(e),t.d(e,"_frontmatter",(function(){return p})),t.d(e,"default",(function(){return u}));var o=t("k0FJ"),a=t("oedh"),i=(t("mXGw"),t("/FXl")),r=t("TjRS"),c=t("ZFoC"),l=t("bafw"),b=t("wlos"),p=(t("aD51"),{});void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/Dropdown.mdx"}});var d={_frontmatter:p},s=r.a;function u(n){var e,t=n.components,u=Object(a.a)(n,["components"]);return Object(i.b)(s,Object(o.a)({},d,u,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"dropdown"},"Dropdown"),Object(i.b)("h2",{id:"basic-usage"},"Basic usage"),Object(i.b)(c.c,{__position:0,__code:"\n
    \n
  • \n This link\n
  • \n
  • \n That link\n
  • \n
\n
",__scope:(e={props:u,DefaultLayout:r.a,Playground:c.c,Dropdown:l.a,Link:b.a},e.DefaultLayout=r.a,e._frontmatter=p,e),mdxType:"Playground"},Object(i.b)(l.a,{mdxType:"Dropdown"},Object(i.b)("ul",null,Object(i.b)("li",null,Object(i.b)(b.a,{mdxType:"Link"},"This link")),Object(i.b)("li",null,Object(i.b)(b.a,{mdxType:"Link"},"That link"))))))}void 0!==u&&u&&u===Object(u)&&Object.isExtensible(u)&&!u.hasOwnProperty("__filemeta")&&Object.defineProperty(u,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/Dropdown.mdx"}}),u.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-dropdown-mdx-fce603a1e8352861f06b.js.map -------------------------------------------------------------------------------- /docs/component---src-components-emoji-picker-mdx-7c2c12f1927b614a7a1a.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[18],{h5Hr:function(e,o,t){"use strict";t.r(o),t.d(o,"_frontmatter",(function(){return s})),t.d(o,"default",(function(){return d}));var n=t("k0FJ"),c=t("oedh"),i=(t("mXGw"),t("/FXl")),r=t("TjRS"),a=t("ZFoC"),m=t("L/xi"),s=(t("aD51"),{});void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/EmojiPicker.mdx"}});var b={_frontmatter:s},p=r.a;function d(e){var o,t=e.components,d=Object(c.a)(e,["components"]);return Object(i.b)(p,Object(n.a)({},b,d,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"emojipicker"},"EmojiPicker"),Object(i.b)("h2",{id:"properties"},"Properties"),Object(i.b)(a.d,{of:m.a,mdxType:"Props"}),Object(i.b)("h2",{id:"basic-usage"},"Basic usage"),Object(i.b)(a.c,{__position:1,__code:"",__scope:(o={props:d,DefaultLayout:r.a,Playground:a.c,Props:a.d,EmojiPicker:m.a},o.DefaultLayout=r.a,o._frontmatter=s,o),mdxType:"Playground"},Object(i.b)(m.a,{onSelect:console.log,mdxType:"EmojiPicker"})))}void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!d.hasOwnProperty("__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/EmojiPicker.mdx"}}),d.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-emoji-picker-mdx-7c2c12f1927b614a7a1a.js.map -------------------------------------------------------------------------------- /docs/component---src-components-emoji-picker-mdx-9dacb5073b2e1193f395.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[18],{h5Hr:function(e,o,t){"use strict";t.r(o),t.d(o,"_frontmatter",(function(){return s})),t.d(o,"default",(function(){return d}));var n=t("k0FJ"),c=t("oedh"),i=(t("mXGw"),t("/FXl")),r=t("TjRS"),a=t("ZFoC"),m=t("L/xi"),s=(t("aD51"),{});void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/EmojiPicker.mdx"}});var b={_frontmatter:s},p=r.a;function d(e){var o,t=e.components,d=Object(c.a)(e,["components"]);return Object(i.b)(p,Object(n.a)({},b,d,{components:t,mdxType:"MDXLayout"}),Object(i.b)("h1",{id:"emojipicker"},"EmojiPicker"),Object(i.b)("h2",{id:"properties"},"Properties"),Object(i.b)(a.d,{of:m.a,mdxType:"Props"}),Object(i.b)("h2",{id:"basic-usage"},"Basic usage"),Object(i.b)(a.c,{__position:1,__code:"",__scope:(o={props:d,DefaultLayout:r.a,Playground:a.c,Props:a.d,EmojiPicker:m.a},o.DefaultLayout=r.a,o._frontmatter=s,o),mdxType:"Playground"},Object(i.b)(m.a,{onSelect:console.log,mdxType:"EmojiPicker"})))}void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!d.hasOwnProperty("__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/EmojiPicker.mdx"}}),d.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-emoji-picker-mdx-9dacb5073b2e1193f395.js.map -------------------------------------------------------------------------------- /docs/component---src-components-link-mdx-696ffcd0b4ce069a7914.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[27],{"2C6O":function(e,t,o){"use strict";o.r(t),o.d(t,"_frontmatter",(function(){return p})),o.d(t,"default",(function(){return d}));var n=o("k0FJ"),i=o("oedh"),a=(o("mXGw"),o("/FXl")),c=o("TjRS"),r=o("ZFoC"),s=o("wlos"),p=(o("aD51"),{});void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/Link.mdx"}});var b={_frontmatter:p},m=c.a;function d(e){var t,o=e.components,d=Object(i.a)(e,["components"]);return Object(a.b)(m,Object(n.a)({},b,d,{components:o,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"link"},"Link"),Object(a.b)("h2",{id:"properties"},"Properties"),Object(a.b)(r.d,{of:s.a,mdxType:"Props"}),Object(a.b)("h2",{id:"basic-usage"},"Basic usage"),Object(a.b)(r.c,{__position:1,__code:'\n Stream.IO Activity Feeds\n',__scope:(t={props:d,DefaultLayout:c.a,Playground:r.c,Props:r.d,Link:s.a},t.DefaultLayout=c.a,t._frontmatter=p,t),mdxType:"Playground"},Object(a.b)(s.a,{to:"https://getstream.io/activity-feeds",onClick:console.log,mdxType:"Link"},"Stream.IO Activity Feeds")))}void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!d.hasOwnProperty("__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/Link.mdx"}}),d.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-link-mdx-696ffcd0b4ce069a7914.js.map -------------------------------------------------------------------------------- /docs/component---src-components-link-mdx-7cd92f4e85075e9526bd.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[27],{"2C6O":function(e,t,o){"use strict";o.r(t),o.d(t,"_frontmatter",(function(){return p})),o.d(t,"default",(function(){return d}));var n=o("k0FJ"),i=o("oedh"),a=(o("mXGw"),o("/FXl")),c=o("TjRS"),r=o("ZFoC"),s=o("wlos"),p=(o("aD51"),{});void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/Link.mdx"}});var b={_frontmatter:p},m=c.a;function d(e){var t,o=e.components,d=Object(i.a)(e,["components"]);return Object(a.b)(m,Object(n.a)({},b,d,{components:o,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"link"},"Link"),Object(a.b)("h2",{id:"properties"},"Properties"),Object(a.b)(r.d,{of:s.a,mdxType:"Props"}),Object(a.b)("h2",{id:"basic-usage"},"Basic usage"),Object(a.b)(r.c,{__position:1,__code:'\n Stream.IO Activity Feeds\n',__scope:(t={props:d,DefaultLayout:c.a,Playground:r.c,Props:r.d,Link:s.a},t.DefaultLayout=c.a,t._frontmatter=p,t),mdxType:"Playground"},Object(a.b)(s.a,{to:"https://getstream.io/activity-feeds",onClick:console.log,mdxType:"Link"},"Stream.IO Activity Feeds")))}void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!d.hasOwnProperty("__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/Link.mdx"}}),d.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-link-mdx-7cd92f4e85075e9526bd.js.map -------------------------------------------------------------------------------- /docs/component---src-components-time-header-mdx-c46557032c2eff920e8c.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[42],{eMhV:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return d})),a.d(t,"default",(function(){return s}));var n=a("k0FJ"),r=a("oedh"),o=(a("mXGw"),a("/FXl")),i=a("TjRS"),m=a("ZFoC"),c=a("WmJE"),d=(a("aD51"),{});void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!d.hasOwnProperty("__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/TimeHeader.mdx"}});var b={_frontmatter:d},u=i.a;function s(e){var t,a=e.components,s=Object(r.a)(e,["components"]);return Object(o.b)(u,Object(n.a)({},b,s,{components:a,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"timeheader"},"TimeHeader"),Object(o.b)("h2",{id:"basic-usage"},"Basic usage"),Object(o.b)(m.c,{__position:0,__code:"June 2021\nAugust 2021\nSeptember 2021",__scope:(t={props:s,DefaultLayout:i.a,Playground:m.c,TimeHeader:c.a},t.DefaultLayout=i.a,t._frontmatter=d,t),mdxType:"Playground"},Object(o.b)(c.a,{mdxType:"TimeHeader"},"June 2021"),Object(o.b)(c.a,{mdxType:"TimeHeader"},"August 2021"),Object(o.b)(c.a,{mdxType:"TimeHeader"},"September 2021")))}void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/TimeHeader.mdx"}}),s.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-time-header-mdx-c46557032c2eff920e8c.js.map -------------------------------------------------------------------------------- /docs/component---src-components-time-header-mdx-d5c185edbfc9b50ffdae.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[42],{eMhV:function(e,t,a){"use strict";a.r(t),a.d(t,"_frontmatter",(function(){return d})),a.d(t,"default",(function(){return s}));var n=a("k0FJ"),r=a("oedh"),o=(a("mXGw"),a("/FXl")),i=a("TjRS"),m=a("ZFoC"),c=a("WmJE"),d=(a("aD51"),{});void 0!==d&&d&&d===Object(d)&&Object.isExtensible(d)&&!d.hasOwnProperty("__filemeta")&&Object.defineProperty(d,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/TimeHeader.mdx"}});var b={_frontmatter:d},u=i.a;function s(e){var t,a=e.components,s=Object(r.a)(e,["components"]);return Object(o.b)(u,Object(n.a)({},b,s,{components:a,mdxType:"MDXLayout"}),Object(o.b)("h1",{id:"timeheader"},"TimeHeader"),Object(o.b)("h2",{id:"basic-usage"},"Basic usage"),Object(o.b)(m.c,{__position:0,__code:"June 2021\nAugust 2021\nSeptember 2021",__scope:(t={props:s,DefaultLayout:i.a,Playground:m.c,TimeHeader:c.a},t.DefaultLayout=i.a,t._frontmatter=d,t),mdxType:"Playground"},Object(o.b)(c.a,{mdxType:"TimeHeader"},"June 2021"),Object(o.b)(c.a,{mdxType:"TimeHeader"},"August 2021"),Object(o.b)(c.a,{mdxType:"TimeHeader"},"September 2021")))}void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/TimeHeader.mdx"}}),s.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-time-header-mdx-d5c185edbfc9b50ffdae.js.map -------------------------------------------------------------------------------- /docs/component---src-components-title-mdx-08e901c4dd11fc88dad4.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[43],{cFvS:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return b})),n.d(t,"default",(function(){return m}));var o=n("k0FJ"),i=n("oedh"),a=(n("mXGw"),n("/FXl")),r=n("TjRS"),c=n("ZFoC"),s=n("KV5O"),b=(n("aD51"),{});void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!b.hasOwnProperty("__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/Title.mdx"}});var l={_frontmatter:b},p=r.a;function m(e){var t,n=e.components,m=Object(i.a)(e,["components"]);return Object(a.b)(p,Object(o.a)({},l,m,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"title"},"Title"),Object(a.b)("h2",{id:"properties"},"Properties"),Object(a.b)(c.d,{of:s.a,mdxType:"Props"}),Object(a.b)("h2",{id:"basic-usage"},"Basic usage"),Object(a.b)(c.c,{__position:1,__code:"An interesting title",__scope:(t={props:m,DefaultLayout:r.a,Playground:c.c,Props:c.d,Title:s.a},t.DefaultLayout=r.a,t._frontmatter=b,t),mdxType:"Playground"},Object(a.b)(s.a,{size:20,mdxType:"Title"},"An interesting title")))}void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!m.hasOwnProperty("__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/Title.mdx"}}),m.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-title-mdx-08e901c4dd11fc88dad4.js.map -------------------------------------------------------------------------------- /docs/component---src-components-title-mdx-0d612f39b1ef3e0a1ea3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[43],{cFvS:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return b})),n.d(t,"default",(function(){return m}));var o=n("k0FJ"),i=n("oedh"),a=(n("mXGw"),n("/FXl")),r=n("TjRS"),c=n("ZFoC"),s=n("KV5O"),b=(n("aD51"),{});void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!b.hasOwnProperty("__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/components/Title.mdx"}});var l={_frontmatter:b},p=r.a;function m(e){var t,n=e.components,m=Object(i.a)(e,["components"]);return Object(a.b)(p,Object(o.a)({},l,m,{components:n,mdxType:"MDXLayout"}),Object(a.b)("h1",{id:"title"},"Title"),Object(a.b)("h2",{id:"properties"},"Properties"),Object(a.b)(c.d,{of:s.a,mdxType:"Props"}),Object(a.b)("h2",{id:"basic-usage"},"Basic usage"),Object(a.b)(c.c,{__position:1,__code:"An interesting title",__scope:(t={props:m,DefaultLayout:r.a,Playground:c.c,Props:c.d,Title:s.a},t.DefaultLayout=r.a,t._frontmatter=b,t),mdxType:"Playground"},Object(a.b)(s.a,{size:20,mdxType:"Title"},"An interesting title")))}void 0!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!m.hasOwnProperty("__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/components/Title.mdx"}}),m.isMDXComponent=!0}}]); 2 | //# sourceMappingURL=component---src-components-title-mdx-0d612f39b1ef3e0a1ea3.js.map -------------------------------------------------------------------------------- /docs/component---src-pages-404-js-8733212268c907542d0e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[48],{w2l6:function(t,e,n){"use strict";n.r(e);var i=n("aD51");e.default=function(){return Object(i.c)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",fontSize:32}},"Not Found")}}}]); 2 | //# sourceMappingURL=component---src-pages-404-js-8733212268c907542d0e.js.map -------------------------------------------------------------------------------- /docs/component---src-pages-404-js-8733212268c907542d0e.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/pages/404.js"],"names":["style","display","alignItems","justifyContent","height","width","fontSize"],"mappings":"mHAeA,UAbiB,WAUf,OAAO,mBAAKA,MATE,CACZC,QADY,OAEZC,WAFY,SAGZC,eAHY,SAIZC,OAJY,QAKZC,MALY,QAMZC,SAAU,KAGZ","file":"component---src-pages-404-js-8733212268c907542d0e.js","sourcesContent":["import * as React from 'react'\n\nconst NotFound = () => {\n const style = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100vh',\n width: '100vw',\n fontSize: 32,\n }\n\n return
Not Found
\n}\n\nexport default NotFound\n"],"sourceRoot":""} -------------------------------------------------------------------------------- /docs/framework-8a0382f24301116011f9.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** @license React v0.20.2 2 | * scheduler.production.min.js 3 | * 4 | * Copyright (c) Facebook, Inc. and its affiliates. 5 | * 6 | * This source code is licensed under the MIT license found in the 7 | * LICENSE file in the root directory of this source tree. 8 | */ 9 | 10 | /** @license React v17.0.2 11 | * react-dom.production.min.js 12 | * 13 | * Copyright (c) Facebook, Inc. and its affiliates. 14 | * 15 | * This source code is licensed under the MIT license found in the 16 | * LICENSE file in the root directory of this source tree. 17 | */ 18 | 19 | /** @license React v17.0.2 20 | * react.production.min.js 21 | * 22 | * Copyright (c) Facebook, Inc. and its affiliates. 23 | * 24 | * This source code is licensed under the MIT license found in the 25 | * LICENSE file in the root directory of this source tree. 26 | */ 27 | -------------------------------------------------------------------------------- /docs/page-data/404.html/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-pages-404-js","path":"/404.html","result":{"pageContext":{}},"staticQueryHashes":[]} -------------------------------------------------------------------------------- /docs/page-data/404/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-pages-404-js","path":"/404/","result":{"pageContext":{}},"staticQueryHashes":[]} -------------------------------------------------------------------------------- /docs/page-data/app-data.json: -------------------------------------------------------------------------------- 1 | {"webpackCompilationHash":"0e4bd7baf15531970761"} 2 | -------------------------------------------------------------------------------- /docs/page-data/components/activity/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-activity-mdx","path":"/components/activity","result":{"pageContext":{"frontmatter":{"route":"/components/activity","menu":"Top Level Components"},"entry":{"id":"280ee5f120992079ead763642da310d2","filepath":"src/components/Activity.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Activity.mdx","route":"/components/activity","slug":"src-components-activity","name":"Activity","menu":"Top Level Components","headings":[{"slug":"activity","depth":1,"value":"Activity"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"activity-with-attached-image-and-hashtag","depth":2,"value":"Activity with attached image and hashtag"},{"slug":"activity-with-enriched-url","depth":2,"value":"Activity with enriched URL"},{"slug":"activity-with-custom-header-and-content-components","depth":2,"value":"Activity with custom header and content components"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/attached-activity/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-attached-activity-mdx","path":"/components/attached-activity","result":{"pageContext":{"frontmatter":{"route":"/components/attached-activity","menu":"UI Components"},"entry":{"id":"5bc7e1f93dda935d8cecadf4632dc78b","filepath":"src/components/AttachedActivity.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/AttachedActivity.mdx","route":"/components/attached-activity","slug":"src-components-attached-activity","name":"Attached activity","menu":"UI Components","headings":[{"slug":"attachedactivity","depth":1,"value":"AttachedActivity"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"without-images","depth":2,"value":"Without images"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/audio/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-audio-mdx","path":"/components/audio","result":{"pageContext":{"frontmatter":{"route":"/components/audio","menu":"UI Components"},"entry":{"id":"af42e97519b869833a171d9666366062","filepath":"src/components/Audio.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Audio.mdx","route":"/components/audio","slug":"src-components-audio","name":"Audio","menu":"UI Components","headings":[{"slug":"audio","depth":1,"value":"Audio"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/avatar-group/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-avatar-group-mdx","path":"/components/avatar-group","result":{"pageContext":{"frontmatter":{"route":"/components/avatar-group","menu":"UI Components"},"entry":{"id":"45b30b3a5dad9f37871c5450f225b433","filepath":"src/components/AvatarGroup.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/AvatarGroup.mdx","route":"/components/avatar-group","slug":"src-components-avatar-group","name":"Avatar group","menu":"UI Components","headings":[{"slug":"avatargroup","depth":1,"value":"AvatarGroup"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"rounded","depth":2,"value":"Rounded"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/avatar/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-avatar-mdx","path":"/components/avatar","result":{"pageContext":{"frontmatter":{"route":"/components/avatar","menu":"UI Components"},"entry":{"id":"077aeae1b002d455d727e703158327f8","filepath":"src/components/Avatar.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Avatar.mdx","route":"/components/avatar","slug":"src-components-avatar","name":"Avatar","menu":"UI Components","headings":[{"slug":"avatar","depth":1,"value":"Avatar"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"without-image-source","depth":2,"value":"Without Image source"},{"slug":"with-image-source","depth":2,"value":"With Image source"},{"slug":"circle","depth":2,"value":"Circle"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/button/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-button-mdx","path":"/components/button","result":{"pageContext":{"frontmatter":{"route":"/components/button","menu":"UI Components"},"entry":{"id":"94c04b4e4bd29ffbdeec8755c1a4c04f","filepath":"src/components/Button.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Button.mdx","route":"/components/button","slug":"src-components-button","name":"Button","menu":"UI Components","headings":[{"slug":"button","depth":1,"value":"Button"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"disabled-state","depth":2,"value":"Disabled state"},{"slug":"loading-state","depth":2,"value":"Loading state"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/card/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-card-mdx","path":"/components/card","result":{"pageContext":{"frontmatter":{"route":"/components/card","menu":"Composition Components"},"entry":{"id":"32865528793b856e164f6e0f8e9ee31b","filepath":"src/components/Card.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Card.mdx","route":"/components/card","slug":"src-components-card","name":"Card","menu":"Composition Components","headings":[{"slug":"card","depth":1,"value":"Card"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/comment-field/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-comment-field-mdx","path":"/components/comment-field","result":{"pageContext":{"frontmatter":{"route":"/components/comment-field","menu":"Composition Components"},"entry":{"id":"afb5193bbbada60b53458f215144ee21","filepath":"src/components/CommentField.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/CommentField.mdx","route":"/components/comment-field","slug":"src-components-comment-field","name":"Comment field","menu":"Composition Components","headings":[{"slug":"commentfield","depth":1,"value":"CommentField"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/comment-item/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-comment-item-mdx","path":"/components/comment-item","result":{"pageContext":{"frontmatter":{"route":"/components/comment-item","menu":"UI Components"},"entry":{"id":"4441b713f0549ed7b5a9bb44631fdd8f","filepath":"src/components/CommentItem.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/CommentItem.mdx","route":"/components/comment-item","slug":"src-components-comment-item","name":"Comment item","menu":"UI Components","headings":[{"slug":"commentitem","depth":1,"value":"CommentItem"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/comment-list/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-comment-list-mdx","path":"/components/comment-list","result":{"pageContext":{"frontmatter":{"route":"/components/comment-list","menu":"Composition Components"},"entry":{"id":"cb8f0fb660def63665135a324ed13d6b","filepath":"src/components/CommentList.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/CommentList.mdx","route":"/components/comment-list","slug":"src-components-comment-list","name":"Comment list","menu":"Composition Components","headings":[{"slug":"commentlist","depth":1,"value":"CommentList"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"custom-commentitem","depth":2,"value":"Custom CommentItem"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/data-label/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-data-label-mdx","path":"/components/data-label","result":{"pageContext":{"frontmatter":{"route":"/components/data-label","menu":"Composition Components"},"entry":{"id":"46be46b54f41e7c4162f0cae52413a2f","filepath":"src/components/DataLabel.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/DataLabel.mdx","route":"/components/data-label","slug":"src-components-data-label","name":"Data label","menu":"Composition Components","headings":[{"slug":"datalabel","depth":1,"value":"DataLabel"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/dropdown-panel/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-dropdown-panel-mdx","path":"/components/dropdown-panel","result":{"pageContext":{"frontmatter":{"route":"/components/dropdown-panel","menu":"Composition Components"},"entry":{"id":"2eb09acbd69543b1e64070e9103f2690","filepath":"src/components/DropdownPanel.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/DropdownPanel.mdx","route":"/components/dropdown-panel","slug":"src-components-dropdown-panel","name":"Dropdown panel","menu":"Composition Components","headings":[{"slug":"dropdownpanel","depth":1,"value":"DropdownPanel"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/dropdown/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-dropdown-mdx","path":"/components/dropdown","result":{"pageContext":{"frontmatter":{"route":"/components/dropdown","menu":"Composition Components"},"entry":{"id":"2506f2a21909d10cc3d2fbdff59bb96d","filepath":"src/components/Dropdown.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Dropdown.mdx","route":"/components/dropdown","slug":"src-components-dropdown","name":"Dropdown","menu":"Composition Components","headings":[{"slug":"dropdown","depth":1,"value":"Dropdown"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/emoji-picker/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-emoji-picker-mdx","path":"/components/emoji-picker","result":{"pageContext":{"frontmatter":{"route":"/components/emoji-picker","menu":"UI Components"},"entry":{"id":"4e313e7ae20381b12878b621a96db66b","filepath":"src/components/EmojiPicker.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/EmojiPicker.mdx","route":"/components/emoji-picker","slug":"src-components-emoji-picker","name":"Emoji picker","menu":"UI Components","headings":[{"slug":"emojipicker","depth":1,"value":"EmojiPicker"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/flat-feed/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-flat-feed-mdx","path":"/components/flat-feed","result":{"pageContext":{"frontmatter":{"route":"/components/flat-feed","menu":"Top Level Components"},"entry":{"id":"62f3c7a30a222358e9aabecc380d3260","filepath":"src/components/FlatFeed.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/FlatFeed.mdx","route":"/components/flat-feed","slug":"src-components-flat-feed","name":"Flat feed","menu":"Top Level Components","headings":[{"slug":"flatfeed","depth":1,"value":"FlatFeed"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"with-custom-activityfooter","depth":2,"value":"With custom ActivityFooter"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/flex/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-flex-mdx","path":"/components/flex","result":{"pageContext":{"frontmatter":{"route":"/components/flex","menu":"Composition Components"},"entry":{"id":"0028a85b8fad27495fd81d39db585b09","filepath":"src/components/Flex.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Flex.mdx","route":"/components/flex","slug":"src-components-flex","name":"Flex","menu":"Composition Components","headings":[{"slug":"flex","depth":1,"value":"Flex"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"with-custom-properties","depth":2,"value":"With custom properties"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/follow-button/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-follow-button-mdx","path":"/components/follow-button","result":{"pageContext":{"frontmatter":{"route":"/components/follow-button","menu":"Composition Components"},"entry":{"id":"ba9193a018c05302bcab4ab73635c079","filepath":"src/components/FollowButton.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/FollowButton.mdx","route":"/components/follow-button","slug":"src-components-follow-button","name":"Follow button","menu":"Composition Components","headings":[{"slug":"followbutton","depth":1,"value":"FollowButton"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"property-followed-set-to-true","depth":2,"value":"Property followed set to true"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/gallery/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-gallery-mdx","path":"/components/gallery","result":{"pageContext":{"frontmatter":{"route":"/components/gallery","menu":"UI Components"},"entry":{"id":"b4451ac2344262d7e047c98c73a9820e","filepath":"src/components/Gallery.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Gallery.mdx","route":"/components/gallery","slug":"src-components-gallery","name":"Gallery","menu":"UI Components","headings":[{"slug":"gallery","depth":1,"value":"Gallery"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"with-single-image","depth":2,"value":"With single image"},{"slug":"with-two-images","depth":2,"value":"With two images"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/icon-badge/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-icon-badge-mdx","path":"/components/icon-badge","result":{"pageContext":{"frontmatter":{"route":"/components/icon-badge","menu":"Composition Components"},"entry":{"id":"6c21c4b973960beee605626b91e1fa0e","filepath":"src/components/IconBadge.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/IconBadge.mdx","route":"/components/icon-badge","slug":"src-components-icon-badge","name":"Icon badge","menu":"Composition Components","headings":[{"slug":"iconbadge","depth":1,"value":"IconBadge"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"with-unseen","depth":2,"value":"With Unseen"},{"slug":"with-numbers","depth":2,"value":"With Numbers"},{"slug":"custom-icon","depth":2,"value":"Custom Icon"},{"slug":"hidden","depth":2,"value":"Hidden"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/icons/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-icons-mdx","path":"/components/icons","result":{"pageContext":{"frontmatter":{"route":"/components/icons","menu":"Composition Components"},"entry":{"id":"7af9d85f52bf11511d306a63e8a1fc50","filepath":"src/components/Icons.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Icons.mdx","route":"/components/icons","slug":"src-components-icons","name":"Icons","menu":"Composition Components","headings":[{"slug":"icons","depth":1,"value":"Icons"},{"slug":"avataricon","depth":2,"value":"AvatarIcon"},{"slug":"emojiicon","depth":2,"value":"EmojiIcon"},{"slug":"reposticon-active","depth":2,"value":"RepostIcon Active"},{"slug":"reposticon-inactive","depth":2,"value":"RepostIcon Inactive"},{"slug":"commenticon-active","depth":2,"value":"CommentIcon Active"},{"slug":"commenticon-inactive","depth":2,"value":"CommentIcon Inactive"},{"slug":"thumbsupicon-active","depth":2,"value":"ThumbsUpIcon Active"},{"slug":"thumbsupicon-inactive","depth":2,"value":"ThumbsUpIcon Inactive"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/infinite-scroll/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-infinite-scroll-mdx","path":"/components/infinite-scroll","result":{"pageContext":{"frontmatter":{"route":"/components/infinite-scroll","menu":"Composition Components"},"entry":{"id":"5a19292838cd5c0a7fcefb58df45a601","filepath":"src/components/InfiniteScroll.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/InfiniteScroll.mdx","route":"/components/infinite-scroll","slug":"src-components-infinite-scroll","name":"Infinite scroll","menu":"Composition Components","headings":[{"slug":"infinitescroll","depth":1,"value":"InfiniteScroll"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/like-button/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-like-button-mdx","path":"/components/like-button","result":{"pageContext":{"frontmatter":{"route":"/components/like-button","menu":"UI Components"},"entry":{"id":"f6af2d6249eb262efedec8bc13d18704","filepath":"src/components/LikeButton.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/LikeButton.mdx","route":"/components/like-button","slug":"src-components-like-button","name":"Like button","menu":"UI Components","headings":[{"slug":"likebutton","depth":1,"value":"LikeButton"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage-with-activity","depth":2,"value":"Basic usage with Activity"},{"slug":"basic-usage-with-reactioncomment","depth":2,"value":"Basic usage with Reaction(comment)"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/link/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-link-mdx","path":"/components/link","result":{"pageContext":{"frontmatter":{"route":"/components/link","menu":"Composition Components"},"entry":{"id":"57d08361e0d1727d294a52c5e5530c6e","filepath":"src/components/Link.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Link.mdx","route":"/components/link","slug":"src-components-link","name":"Link","menu":"Composition Components","headings":[{"slug":"link","depth":1,"value":"Link"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/load-more-button/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-load-more-button-mdx","path":"/components/load-more-button","result":{"pageContext":{"frontmatter":{"route":"/components/load-more-button","menu":"UI Components"},"entry":{"id":"ae57932161ea05450799907e8d6c3ec3","filepath":"src/components/LoadMoreButton.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/LoadMoreButton.mdx","route":"/components/load-more-button","slug":"src-components-load-more-button","name":"Load more button","menu":"UI Components","headings":[{"slug":"loadmorebutton","depth":1,"value":"LoadMoreButton"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"with-custom-text","depth":2,"value":"With custom text"},{"slug":"refreshing-state","depth":2,"value":"Refreshing state"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/load-more-paginator/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-load-more-paginator-mdx","path":"/components/load-more-paginator","result":{"pageContext":{"frontmatter":{"route":"/components/load-more-paginator","menu":"UI Components"},"entry":{"id":"9c00320b50c4dbfa6b1244dcfa698092","filepath":"src/components/LoadMorePaginator.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/LoadMorePaginator.mdx","route":"/components/load-more-paginator","slug":"src-components-load-more-paginator","name":"Load more paginator","menu":"UI Components","headings":[{"slug":"loadmorepaginator","depth":1,"value":"LoadMorePaginator"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"reverse","depth":2,"value":"Reverse"},{"slug":"refreshing-state","depth":2,"value":"Refreshing state"},{"slug":"last-page","depth":2,"value":"Last page"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/new-activities-notification/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-new-activities-notification-mdx","path":"/components/new-activities-notification","result":{"pageContext":{"frontmatter":{"route":"/components/new-activities-notification","menu":"UI Components"},"entry":{"id":"af326109d68ad0a47fc496245308c920","filepath":"src/components/NewActivitiesNotification.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/NewActivitiesNotification.mdx","route":"/components/new-activities-notification","slug":"src-components-new-activities-notification","name":"New activities notification","menu":"UI Components","headings":[{"slug":"newactivitiesnotification","depth":1,"value":"NewActivitiesNotification"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"custom-label-function","depth":2,"value":"Custom label function"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/notification-dropdown/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-notification-dropdown-mdx","path":"/components/notification-dropdown","result":{"pageContext":{"frontmatter":{"route":"/components/notification-dropdown","menu":"Top Level Components"},"entry":{"id":"573ae7494ff473d621c6cea999aea346","filepath":"src/components/NotificationDropdown.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/NotificationDropdown.mdx","route":"/components/notification-dropdown","slug":"src-components-notification-dropdown","name":"Notification dropdown","menu":"Top Level Components","headings":[{"slug":"notificationdropdown","depth":1,"value":"NotificationDropdown"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"with-custom-header-footer-icon-and-right-align","depth":2,"value":"With custom Header, Footer, Icon and right align"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/notification-feed/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-notification-feed-mdx","path":"/components/notification-feed","result":{"pageContext":{"frontmatter":{"route":"/components/notification-feed","menu":"Top Level Components"},"entry":{"id":"499408a4cc27c32f96f7ae1d2b5f4d0e","filepath":"src/components/NotificationFeed.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/NotificationFeed.mdx","route":"/components/notification-feed","slug":"src-components-notification-feed","name":"Notification feed","menu":"Top Level Components","headings":[{"slug":"notificationfeed","depth":1,"value":"NotificationFeed"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"customized-notification-ui","depth":2,"value":"Customized Notification UI"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/notification/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-notification-mdx","path":"/components/notification","result":{"pageContext":{"frontmatter":{"route":"/components/notification","menu":"Top Level Components"},"entry":{"id":"927f7e2711ee321142225f6dd9e7cbe8","filepath":"src/components/Notification.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Notification.mdx","route":"/components/notification","slug":"src-components-notification","name":"Notification","menu":"Top Level Components","headings":[{"slug":"notification","depth":1,"value":"Notification"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/panel/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-panel-mdx","path":"/components/panel","result":{"pageContext":{"frontmatter":{"route":"/components/panel","menu":"Composition Components"},"entry":{"id":"70b27674eb3303e99331de7807eef1d6","filepath":"src/components/Panel.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Panel.mdx","route":"/components/panel","slug":"src-components-panel","name":"Panel","menu":"Composition Components","headings":[{"slug":"panel","depth":1,"value":"Panel"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"panel-rounded-default","depth":2,"value":"Panel rounded (default)"},{"slug":"panel-squared","depth":2,"value":"Panel squared"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/reaction-icon/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-reaction-icon-mdx","path":"/components/reaction-icon","result":{"pageContext":{"frontmatter":{"route":"/components/reaction-icon","menu":"UI Components"},"entry":{"id":"f32be33406bdf28ebce4743606a7d849","filepath":"src/components/ReactionIcon.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/ReactionIcon.mdx","route":"/components/reaction-icon","slug":"src-components-reaction-icon","name":"Reaction icon","menu":"UI Components","headings":[{"slug":"reactionicon","depth":1,"value":"ReactionIcon"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"url-icon","depth":2,"value":"URL icon"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/reaction-list/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-reaction-list-mdx","path":"/components/reaction-list","result":{"pageContext":{"frontmatter":{"route":"/components/reaction-list","menu":"Composition Components"},"entry":{"id":"d952d73f20752374d4f6c2c9fde2c10f","filepath":"src/components/ReactionList.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/ReactionList.mdx","route":"/components/reaction-list","slug":"src-components-reaction-list","name":"Reaction list","menu":"Composition Components","headings":[{"slug":"reactionlist","depth":1,"value":"ReactionList"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"reverse-order","depth":2,"value":"Reverse order"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/reaction-toggle-icon/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-reaction-toggle-icon-mdx","path":"/components/reaction-toggle-icon","result":{"pageContext":{"frontmatter":{"route":"/components/reaction-toggle-icon","menu":"UI Components"},"entry":{"id":"3cf5031bff5d48c32947c04a08fe0eb0","filepath":"src/components/ReactionToggleIcon.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/ReactionToggleIcon.mdx","route":"/components/reaction-toggle-icon","slug":"src-components-reaction-toggle-icon","name":"Reaction toggle icon","menu":"UI Components","headings":[{"slug":"reactiontoggleicon","depth":1,"value":"ReactionToggleIcon"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/repost-button/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-repost-button-mdx","path":"/components/repost-button","result":{"pageContext":{"frontmatter":{"route":"/components/repost-button","menu":"UI Components"},"entry":{"id":"a00dd9ebda8ff5b306389c13e3a18b69","filepath":"src/components/RepostButton.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/RepostButton.mdx","route":"/components/repost-button","slug":"src-components-repost-button","name":"Repost button","menu":"UI Components","headings":[{"slug":"repostbutton","depth":1,"value":"RepostButton"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/single-post/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-single-post-mdx","path":"/components/single-post","result":{"pageContext":{"frontmatter":{"route":"/components/single-post","menu":"Top Level Components"},"entry":{"id":"ad3a73749f2c9aa1b467ac14be6e62ca","filepath":"src/components/SinglePost.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/SinglePost.mdx","route":"/components/single-post","slug":"src-components-single-post","name":"Single post","menu":"Top Level Components","headings":[{"slug":"singlepost","depth":1,"value":"SinglePost"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/status-update-form/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-status-update-form-status-update-form-mdx","path":"/components/status-update-form","result":{"pageContext":{"frontmatter":{"route":"/components/status-update-form","menu":"Top Level Components"},"entry":{"id":"c0d93fe5548b0d1a4c59cd4fc73d5469","filepath":"src/components/StatusUpdateForm/StatusUpdateForm.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/StatusUpdateForm/StatusUpdateForm.mdx","route":"/components/status-update-form","slug":"src-components-status-update-form-status-update-form","name":"Status update form","menu":"Top Level Components","headings":[{"slug":"statusupdateform","depth":1,"value":"StatusUpdateForm"},{"slug":"features","depth":3,"value":"Features:"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/textarea/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-textarea-mdx","path":"/components/textarea","result":{"pageContext":{"frontmatter":{"route":"/components/textarea","menu":"UI Components"},"entry":{"id":"2f3e58c6785ed658dd7312820959cbf5","filepath":"src/components/Textarea.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Textarea.mdx","route":"/components/textarea","slug":"src-components-textarea","name":"Textarea","menu":"UI Components","headings":[{"slug":"textarea","depth":1,"value":"Textarea"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"customized","depth":2,"value":"Customized"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/time-header/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-time-header-mdx","path":"/components/time-header","result":{"pageContext":{"frontmatter":{"route":"/components/time-header","menu":"Composition Components"},"entry":{"id":"67d6b2106d0ebca0e16660fee0bdff75","filepath":"src/components/TimeHeader.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/TimeHeader.mdx","route":"/components/time-header","slug":"src-components-time-header","name":"Time header","menu":"Composition Components","headings":[{"slug":"timeheader","depth":1,"value":"TimeHeader"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/title/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-title-mdx","path":"/components/title","result":{"pageContext":{"frontmatter":{"route":"/components/title","menu":"UI Components"},"entry":{"id":"d9ee959f4e1173ecc4257dff702fad31","filepath":"src/components/Title.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Title.mdx","route":"/components/title","slug":"src-components-title","name":"Title","menu":"UI Components","headings":[{"slug":"title","depth":1,"value":"Title"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/user-bar/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-user-bar-mdx","path":"/components/user-bar","result":{"pageContext":{"frontmatter":{"route":"/components/user-bar","menu":"UI Components"},"entry":{"id":"a301da2708acc49edac30f46e2c3990f","filepath":"src/components/UserBar.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/UserBar.mdx","route":"/components/user-bar","slug":"src-components-user-bar","name":"User bar","menu":"UI Components","headings":[{"slug":"userbar","depth":1,"value":"UserBar"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/components/video/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-components-video-mdx","path":"/components/video","result":{"pageContext":{"frontmatter":{"route":"/components/video","menu":"UI Components"},"entry":{"id":"5a504a2a792d7a3b2ca600fce313b4a7","filepath":"src/components/Video.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/components/Video.mdx","route":"/components/video","slug":"src-components-video","name":"Video","menu":"UI Components","headings":[{"slug":"video","depth":1,"value":"Video"},{"slug":"properties","depth":2,"value":"Properties"},{"slug":"basic-usage","depth":2,"value":"Basic usage"},{"slug":"mp4-video","depth":2,"value":"MP4 video"},{"slug":"mp4-video-as-gif","depth":2,"value":"MP4 video as GIF"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/example-readme/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---example-readme-md","path":"/example-readme","result":{"pageContext":{"frontmatter":{},"entry":{"id":"20bfc3ff6a860483887b93bf9cf0d135","filepath":"example/README.md","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/example/README.md","route":"/example-readme","slug":"example-readme","name":"Readme","menu":"","headings":[{"slug":"example-project","depth":1,"value":"Example project"},{"slug":"how-to-run","depth":2,"value":"How to run"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/i18n/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-i-18-n-streami-18-n-mdx","path":"/i18n","result":{"pageContext":{"frontmatter":{"route":"/i18n"},"entry":{"id":"7276f37d8c727a729f7fcbf716a9ce00","filepath":"src/i18n/Streami18n.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/i18n/Streami18n.mdx","route":"/i18n","slug":"src-i18n-streami18n","name":"Streami18n","menu":"","headings":[{"slug":"api","depth":3,"value":"API"},{"slug":"docs","depth":3,"value":"Docs"},{"slug":"datetime-translations","depth":2,"value":"Datetime translations"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/page-data/index/page-data.json: -------------------------------------------------------------------------------- 1 | {"componentChunkName":"component---src-introduction-mdx","path":"/","result":{"pageContext":{"frontmatter":{"route":"/"},"entry":{"id":"7f9b1171d3fc3a898f76ea7ec90d672e","filepath":"src/Introduction.mdx","fullpath":"/home/martin/Work/stream/feed/SDK/react-activity-feed/src/Introduction.mdx","route":"/","slug":"src-introduction","name":"Introduction","menu":"","headings":[{"slug":"current-user-and-defaults","depth":3,"value":"Current user and defaults"}]}}},"staticQueryHashes":["1635659820"]} -------------------------------------------------------------------------------- /docs/styles-82aa8ab9b6cf4d871cb3.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[52],[]]); 2 | //# sourceMappingURL=styles-82aa8ab9b6cf4d871cb3.js.map -------------------------------------------------------------------------------- /docs/styles-82aa8ab9b6cf4d871cb3.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":[],"names":[],"mappings":"","file":"styles-82aa8ab9b6cf4d871cb3.js","sourceRoot":""} -------------------------------------------------------------------------------- /docs/styles.2543ff947a193d7f33b1.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Inconsolata&display=swap);@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap); -------------------------------------------------------------------------------- /doczrc.js: -------------------------------------------------------------------------------- 1 | export default { 2 | typescript: true, 3 | root: __dirname, 4 | dest: '/docs', 5 | base: '/react-activity-feed', 6 | title: 'React Activity Feed', 7 | repository: 'https://github.com/GetStream/react-activity-feed/', 8 | editBranch: 'main', 9 | ignore: ['PULL_REQUEST_TEMPLATE.md', 'CHANGELOG.md', 'README.md'], 10 | menu: [ 11 | { name: 'Introduction' }, 12 | { name: 'Top Level Components' }, 13 | { name: 'UI Components' }, 14 | { name: 'Layout Components' }, 15 | { name: 'Streami18n' }, 16 | { name: 'Composition Components' }, 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # Example project 2 | 3 | ## How to run 4 | 5 | ```bash 6 | git clone https://github.com/GetStream/react-activity-feed 7 | cd react-activity-feed 8 | yarn 9 | cd example 10 | yarn 11 | yarn start 12 | ``` 13 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-activity-feed-example", 3 | "homepage": "https://GetStream.github.io/react-activity-feed", 4 | "version": "0.0.0", 5 | "author": "GetStream", 6 | "license": "BSD-3-Clause", 7 | "private": true, 8 | "scripts": { 9 | "start": "SKIP_PREFLIGHT_CHECK=true react-scripts start", 10 | "build": "SKIP_PREFLIGHT_CHECK=true react-scripts build" 11 | }, 12 | "dependencies": { 13 | "@types/node": "^15.0.1", 14 | "@types/react": "^17.0.4", 15 | "@types/react-dom": "^17.0.3", 16 | "react": "link:../node_modules/react", 17 | "react-activity-feed": "link:..", 18 | "react-dom": "link:../node_modules/react-dom", 19 | "react-scripts": "4.0.3", 20 | "typescript": "^4.2.4", 21 | "web-vitals": "^1.1.1" 22 | }, 23 | "browserslist": [ 24 | "last 1 chrome version", 25 | "last 1 firefox version", 26 | "last 1 safari version" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /example/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | react-activity-feed example 12 | 13 | 14 | 15 | 18 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /example/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "react-activity-feed", 3 | "name": "react-activity-feed", 4 | "start_url": "./index.html", 5 | "display": "standalone", 6 | "theme_color": "#000000", 7 | "background_color": "#ffffff" 8 | } 9 | -------------------------------------------------------------------------------- /example/src/app.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: sans-serif; 5 | background-color: #f0f0f0; 6 | } 7 | 8 | .wrapper { 9 | background: #fff; 10 | height: 60; 11 | margin: 10px 0; 12 | padding: 0 16px; 13 | display: flex; 14 | align-items: center; 15 | justify-content: space-between; 16 | flex-direction: row; 17 | } 18 | 19 | .box { 20 | box-shadow: 0 0 4px rgba(0, 0, 0, 0.15); 21 | border-radius: 4px; 22 | } 23 | 24 | .raf-comment-item { 25 | border-bottom: 0; 26 | } 27 | -------------------------------------------------------------------------------- /example/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | import reportWebVitals from './reportWebVitals'; 5 | 6 | ReactDOM.render( 7 | 8 | 9 | , 10 | document.getElementById('root'), 11 | ); 12 | 13 | // If you want to start measuring performance in your app, pass a function 14 | // to log results (for example: reportWebVitals(console.log)) 15 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 16 | reportWebVitals(); 17 | -------------------------------------------------------------------------------- /example/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /example/src/reportWebVitals.ts: -------------------------------------------------------------------------------- 1 | import { ReportHandler } from 'web-vitals'; 2 | 3 | const reportWebVitals = (onPerfEntry?: ReportHandler) => { 4 | if (onPerfEntry && onPerfEntry instanceof Function) { 5 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 6 | getCLS(onPerfEntry); 7 | getFID(onPerfEntry); 8 | getFCP(onPerfEntry); 9 | getLCP(onPerfEntry); 10 | getTTFB(onPerfEntry); 11 | }); 12 | } 13 | }; 14 | 15 | export default reportWebVitals; 16 | -------------------------------------------------------------------------------- /example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "esModuleInterop": true, 8 | "allowSyntheticDefaultImports": true, 9 | "strict": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "noFallthroughCasesInSwitch": true, 12 | "module": "esnext", 13 | "moduleResolution": "node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"] 20 | } 21 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | verbose: true, 3 | maxConcurrency: 15, 4 | transformIgnorePatterns: [], 5 | testPathIgnorePatterns: ['/node_modules/', '/examples/', '/example/', '__snapshots__'], 6 | transform: { 7 | '.(js|jsx)$': 'babel-jest', 8 | '.(ts|tsx)$': 'ts-jest', 9 | }, 10 | moduleNameMapper: { 11 | '\\.(css|scss|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 12 | '/assetsTransformer.js', 13 | 'mock-builders(.*)$': '/src/mock-builders$1', 14 | }, 15 | globals: {}, 16 | }; 17 | -------------------------------------------------------------------------------- /scripts/validate-translations.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | 3 | const path = require('path'); 4 | const fs = require('fs'); 5 | const i18nDirectoryRelativePath = '../src/i18n/'; 6 | const directoryPath = path.join(__dirname, i18nDirectoryRelativePath); 7 | let countMissingTranslations = 0; 8 | 9 | fs.readdir(directoryPath, function (err, files) { 10 | if (err) { 11 | return console.log('Unable to scan directory: ' + err); 12 | } 13 | 14 | files.forEach(function (file) { 15 | if (!file.endsWith('.json')) return; 16 | // Do whatever you want to do with the file 17 | const data = require(i18nDirectoryRelativePath + file); 18 | const keys = Object.keys(data); 19 | keys.forEach((key) => { 20 | if (!data[key] || data[key] === '') { 21 | countMissingTranslations = countMissingTranslations + 1; 22 | console.error('\\033[91m', 'Missing translation for key "' + key + '" in "' + file + '"'); 23 | } 24 | }); 25 | }); 26 | 27 | if (countMissingTranslations > 0) { 28 | process.exitCode = 2; 29 | process.exit(); 30 | } else { 31 | process.exit(0); 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /src/Introduction.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: / 3 | --- 4 | 5 | This library provides components that interact with Stream's APIs. 6 | In order to use the components you need to have an account and you need to nest 7 | the components that interact with feeds inside the `` element which 8 | you must configure with the correct API key, app ID and token. 9 | 10 | ```js static 11 | 12 | 13 | 14 | ``` 15 | 16 | You can find the API key and app ID on the 17 | [dashboard for your app](https://getstream.io/dashboard/). 18 | The token needs to be generated by your backend and is unique for each user of 19 | the website. 20 | How to generate it is explained in 21 | [the normal Stream docs](https://getstream.io/docs/#frontend_setup). 22 | 23 | ### Current user and defaults 24 | 25 | The token contains the user id of the user that uses your application. Because 26 | of this, all components will automatically use that user id as the default for 27 | rendering feeds, adding activities and reactions such as comments and likes. 28 | 29 | **Note:** most top level components like the `FlatFeed`, come with common 30 | default prop values (e.g. userId, feedGroup, ...). 31 | -------------------------------------------------------------------------------- /src/components/ActivityFooter.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | import { UR } from 'getstream'; 4 | 5 | import { LikeButton } from './LikeButton'; 6 | import { RepostButton } from './RepostButton'; 7 | import { Flex } from './Flex'; 8 | import { DefaultAT, DefaultUT } from '../context/StreamApp'; 9 | import { ActivityProps } from './Activity'; 10 | 11 | export type ActivityFooterProps< 12 | UT extends DefaultUT = DefaultUT, 13 | AT extends DefaultAT = DefaultAT, 14 | CT extends UR = UR, 15 | RT extends UR = UR, 16 | CRT extends UR = UR 17 | > = Pick, 'activity' | 'feedGroup' | 'userId' | 'className' | 'style'> & { 18 | targetFeeds?: string[]; 19 | }; 20 | 21 | export const ActivityFooter = < 22 | UT extends DefaultUT = DefaultUT, 23 | AT extends DefaultAT = DefaultAT, 24 | CT extends UR = UR, 25 | RT extends UR = UR, 26 | CRT extends UR = UR 27 | >({ 28 | activity, 29 | feedGroup = 'user', 30 | userId, 31 | targetFeeds, 32 | className, 33 | style, 34 | }: ActivityFooterProps) => ( 35 |
36 |
37 |
38 | 39 | activity={activity} targetFeeds={targetFeeds} /> 40 | 41 | activity={activity} 42 | targetFeeds={targetFeeds} 43 | feedGroup={feedGroup} 44 | userId={userId} 45 | /> 46 | 47 |
48 |
49 | ); 50 | -------------------------------------------------------------------------------- /src/components/ActivityHeader.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import { DefaultAT, DefaultUT } from '../context/StreamApp'; 4 | import { useTranslationContext } from '../context/TranslationContext'; 5 | import { userOrDefault, humanizeTimestamp, useOnClickUser } from '../utils'; 6 | import { ActivityProps } from './Activity'; 7 | import { UserBar } from './UserBar'; 8 | 9 | export type ActivityHeaderProps = Pick< 10 | ActivityProps, 11 | 'activity' | 'HeaderRight' | 'icon' | 'onClickUser' | 'className' | 'style' 12 | >; 13 | 14 | export const ActivityHeader = ({ 15 | activity, 16 | HeaderRight, 17 | icon, 18 | onClickUser, 19 | style = { padding: '8px 16px' }, 20 | className, 21 | }: ActivityHeaderProps) => { 22 | const { tDateTimeParser } = useTranslationContext(); 23 | 24 | const actor = userOrDefault(activity.actor); 25 | const handleUserClick = useOnClickUser(onClickUser); 26 | 27 | return ( 28 |
29 | 38 |
39 | ); 40 | }; 41 | -------------------------------------------------------------------------------- /src/components/AttachedActivity.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/attached-activity 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { AttachedActivity } from './AttachedActivity'; 8 | 9 | # AttachedActivity 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 30 | 31 | 32 | ## Without images 33 | 34 | 35 | 49 | 50 | -------------------------------------------------------------------------------- /src/components/AttachedActivity.tsx: -------------------------------------------------------------------------------- 1 | import React, { useMemo } from 'react'; 2 | import classNames from 'classnames'; 3 | import { EnrichedActivity } from 'getstream'; 4 | import { Thumbnail } from 'react-file-utils'; 5 | 6 | import { userOrDefault, PropsWithElementAttributes } from '../utils'; 7 | import { DefaultUT, DefaultAT } from '../context/StreamApp'; 8 | 9 | export type AttachedActivityProps< 10 | UT extends DefaultUT = DefaultUT, 11 | AT extends DefaultAT = DefaultAT 12 | > = PropsWithElementAttributes<{ 13 | activity: EnrichedActivity; 14 | }>; 15 | 16 | export function AttachedActivity({ 17 | activity: { object, verb, attachments, actor }, 18 | className, 19 | style, 20 | }: AttachedActivityProps) { 21 | const images = attachments?.images ?? []; 22 | const user = useMemo(() => userOrDefault(actor), [actor]); 23 | 24 | if (verb !== 'repost' && verb !== 'post' && verb !== 'comment') return null; 25 | 26 | return ( 27 |
28 | {images.length ? ( 29 |
30 | {images.slice(0, 5).map((image, i) => ( 31 | 32 | ))} 33 |
34 | ) : ( 35 | 36 |

37 | {user.data.name} 38 |

39 |

{object as string}

40 |
41 | )} 42 |
43 | ); 44 | } 45 | -------------------------------------------------------------------------------- /src/components/Audio.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/audio 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Audio } from './Audio'; 8 | 9 | # Audio 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 28 | -------------------------------------------------------------------------------- /src/components/Avatar.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/avatar 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Avatar } from './Avatar'; 8 | 9 | # Avatar 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Without Image source 16 | 17 | 18 | 19 | 20 | 21 | ## With Image source 22 | 23 | 24 | 25 | 26 | 27 | ## Circle 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/components/Avatar.tsx: -------------------------------------------------------------------------------- 1 | import React, { MouseEventHandler as F } from 'react'; 2 | import classNames from 'classnames'; 3 | import { AvatarIcon } from './Icons'; 4 | import { PropsWithElementAttributes } from '../utils'; 5 | 6 | export type AvatarProps = PropsWithElementAttributes<{ 7 | alt?: string; 8 | circle?: boolean; 9 | image?: T extends HTMLImageElement ? string : never; 10 | onClick?: F; 11 | rounded?: boolean; 12 | size?: number; 13 | }>; 14 | 15 | export function Avatar({ 16 | size, 17 | image, 18 | alt, 19 | rounded, 20 | circle, 21 | onClick, 22 | className, 23 | style = size ? { width: `${size}px`, height: `${size}px` } : undefined, 24 | }: AvatarProps) { 25 | const cn = classNames('raf-avatar', className, { 26 | 'raf-avatar--rounded': rounded, 27 | 'raf-avatar--circle': circle, 28 | }); 29 | 30 | return image ? ( 31 | {alt} /> 32 | ) : ( 33 | } /> 34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/components/AvatarGroup.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/avatar-group 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { AvatarGroup } from './AvatarGroup'; 8 | 9 | # AvatarGroup 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 35 | 36 | 37 | ## Rounded 38 | 39 | 40 | 58 | 59 | -------------------------------------------------------------------------------- /src/components/AvatarGroup.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | import { EnrichedUser } from 'getstream'; 4 | 5 | import { useOnClickUser, OnClickUserHandler, PropsWithElementAttributes } from '../utils'; 6 | import { DefaultUT } from '../context/StreamApp'; 7 | import { Avatar } from './Avatar'; 8 | 9 | export type AvatarGroupProps = PropsWithElementAttributes<{ 10 | avatarSize?: number; 11 | limit?: number; 12 | onClickUser?: OnClickUserHandler; 13 | users?: Array>; 14 | }>; 15 | 16 | export function AvatarGroup({ 17 | limit = 5, 18 | users = [], 19 | avatarSize = 30, 20 | onClickUser, 21 | className, 22 | style, 23 | }: AvatarGroupProps) { 24 | const handleUserClick = useOnClickUser(onClickUser); 25 | 26 | return ( 27 |
28 | {users.slice(0, limit).map((user, i) => ( 29 |
30 | 31 |
32 | ))} 33 |
34 | ); 35 | } 36 | -------------------------------------------------------------------------------- /src/components/Button.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/button 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Button } from './Button'; 8 | 9 | # Button 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | ## Disabled state 24 | 25 | 26 | 29 | 32 | 35 | 36 | 37 | ## Loading state 38 | 39 | 40 | 39 | ); 40 | -------------------------------------------------------------------------------- /src/components/Card.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/card 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Card } from './Card'; 8 | 9 | # Card 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | { 20 | e.preventDefault(); 21 | console.log('closing'); 22 | }} 23 | image="https://getstream.imgix.net/images/random_svg/B.png" 24 | alt="image-preview" 25 | description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris scelerisque tincidunt sapien, eget lacinia neque posuere ut." 26 | title="An interesting title" 27 | url="https://getstream.io" 28 | /> 29 | 30 | -------------------------------------------------------------------------------- /src/components/CommentField.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/comment-field 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { CommentField } from './CommentField'; 8 | 9 | # CommentField 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | window.alert('Success!')} 25 | /> 26 | 27 | -------------------------------------------------------------------------------- /src/components/CommentItem.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/comment-item 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { CommentItem } from './CommentItem'; 8 | 9 | # CommentItem 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | window.alert(`You clicked on ${word}`)} 20 | onClickUser={console.log} 21 | comment={{ 22 | user: { 23 | data: { 24 | name: 'Rosemary', 25 | subtitle: 'likes playing fresbee in the park', 26 | profileImage: 'https://randomuser.me/api/portraits/women/20.jpg', 27 | }, 28 | }, 29 | created_at: new Date().toJSON(), 30 | data: { 31 | text: 'Snowboarding is awesome! #snowboarding #winter', 32 | }, 33 | }} 34 | /> 35 | 36 | -------------------------------------------------------------------------------- /src/components/CommentList.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/comment-list 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { CommentList } from './CommentList'; 8 | import { WithExampleStreamApp } from './docz'; 9 | import { Feed } from '../context/Feed'; 10 | 11 | # CommentList 12 | 13 | ## Properties 14 | 15 | 16 | 17 | ## Basic usage 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ## Custom CommentItem 28 | 29 | 30 | 31 | 32 |
{props.comment.data.text}
} 34 | activityId="aba1d300-dc4a-11e8-8080-80010edf5810" 35 | /> 36 |
37 |
38 |
39 | -------------------------------------------------------------------------------- /src/components/DataLabel.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/data-label 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { DataLabel } from './DataLabel'; 8 | import { Flex } from './Flex'; 9 | 10 | # DataLabel 11 | 12 | ## Properties 13 | 14 | 15 | 16 | ## Basic usage 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/components/DataLabel.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import renderer from 'react-test-renderer'; 3 | 4 | import { DataLabel } from './DataLabel'; 5 | 6 | describe('DataLabel', () => { 7 | it('renders with default props', () => { 8 | const tree = renderer.create().toJSON(); 9 | expect(tree).toMatchInlineSnapshot(` 10 |
13 | 16 | label 17 | 18 | 21 | data 22 | 23 |
24 | `); 25 | }); 26 | 27 | it('renders with custom props', () => { 28 | const tree = renderer.create().toJSON(); 29 | expect(tree).toMatchInlineSnapshot(` 30 |
33 | 36 | age 37 | 38 | 41 | 26 42 | 43 |
44 | `); 45 | }); 46 | }); 47 | -------------------------------------------------------------------------------- /src/components/DataLabel.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { PropsWithElementAttributes } from '../utils'; 5 | 6 | export type DataLabelProps = PropsWithElementAttributes<{ 7 | data?: string | number; 8 | label?: string; 9 | }>; 10 | 11 | export const DataLabel = ({ data = 'data', label = 'label', className, style }: DataLabelProps) => { 12 | return ( 13 |
14 | {label} 15 | {data} 16 |
17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /src/components/Dropdown.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/dropdown 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground } from 'docz'; 7 | import { Dropdown } from './Dropdown'; 8 | import { Link } from './Link'; 9 | 10 | # Dropdown 11 | 12 | ## Basic usage 13 | 14 | 15 | 16 |
    17 |
  • 18 | This link 19 |
  • 20 |
  • 21 | That link 22 |
  • 23 |
24 |
25 |
26 | -------------------------------------------------------------------------------- /src/components/Dropdown.tsx: -------------------------------------------------------------------------------- 1 | import React, { useRef, useState, PropsWithChildren } from 'react'; 2 | import classNames from 'classnames'; 3 | import { IconButton } from 'react-file-utils'; 4 | 5 | import { PropsWithElementAttributes } from '../utils'; 6 | import { useOnClickOutside } from '../hooks/useOnClickOutside'; 7 | 8 | export const Dropdown = ({ children, className, style }: PropsWithChildren) => { 9 | const [isOpen, setIsOpen] = useState(false); 10 | const dropdownBoxReference = useRef(null); 11 | 12 | useOnClickOutside(dropdownBoxReference, () => setIsOpen(false), isOpen); 13 | 14 | return ( 15 |
16 | setIsOpen((pv) => !pv)}> 17 | 24 | 25 | 26 | 27 | 28 | {isOpen && ( 29 |
30 | {children} 31 |
32 | )} 33 |
34 | ); 35 | }; 36 | -------------------------------------------------------------------------------- /src/components/DropdownPanel.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/dropdown-panel 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { DropdownPanel } from './DropdownPanel'; 8 | import { NewActivitiesNotification } from './NewActivitiesNotification'; 9 | import { Title } from './Title'; 10 | import { Link } from './Link'; 11 | import { Notification } from './Notification'; 12 | import { WithExampleStreamApp, notificationGroup1, notificationGroup2 } from './docz'; 13 | 14 | # DropdownPanel 15 | 16 | ## Properties 17 | 18 | 19 | 20 | ## Basic usage 21 | 22 | 23 | 24 | 27 |
28 | Notifications 29 | Mark as read 30 |
31 | 32 | 33 | } 34 | Footer={ 35 |
36 | View All Notifications 37 |
38 | } 39 | > 40 | 41 | 42 | 43 | 44 | 45 |
46 |
47 |
48 | -------------------------------------------------------------------------------- /src/components/DropdownPanel.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react'; 2 | import { smartRender, ElementOrComponentOrLiteralType, PropsWithElementAttributes } from '../utils'; 3 | 4 | export type DropdownPanelProps = PropsWithElementAttributes<{ 5 | arrow?: boolean; 6 | children?: ReactNode; 7 | Footer?: ElementOrComponentOrLiteralType; 8 | Header?: ElementOrComponentOrLiteralType; 9 | right?: boolean; 10 | }>; 11 | 12 | /** 13 | * `DropdownPanel` is a more advanced component used to create a notification dropdown for instance, it comes with three parts: 14 | * `Header`, `Content` and `Footer`. The content has a limited height and the `overflow` is set to `scroll`. 15 | */ 16 | export const DropdownPanel = ({ 17 | arrow = false, 18 | right = false, 19 | Header, 20 | Footer, 21 | children, 22 | className, 23 | style, 24 | }: DropdownPanelProps) => { 25 | return ( 26 |
38 | {!!Header &&
{smartRender(Header)}
} 39 |
{children}
40 | {!!Footer &&
{smartRender(Footer)}
} 41 |
42 | ); 43 | }; 44 | -------------------------------------------------------------------------------- /src/components/EmojiPicker.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/emoji-picker 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { EmojiPicker } from './EmojiPicker'; 8 | 9 | # EmojiPicker 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/components/FeedPlaceholder.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import renderer from 'react-test-renderer'; 3 | 4 | import { FeedPlaceholder } from './FeedPlaceholder'; 5 | 6 | describe('FeedPlaceholder', () => { 7 | it('renders with default props', () => { 8 | const tree = renderer.create().toJSON(); 9 | expect(tree).toMatchInlineSnapshot(` 10 |
13 |

14 | No data to display... 15 |

16 |
17 | `); 18 | }); 19 | 20 | it('renders with custom props', () => { 21 | const tree = renderer.create().toJSON(); 22 | expect(tree).toMatchInlineSnapshot(` 23 |
26 |

27 | Random text 28 |

29 |
30 | `); 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /src/components/FeedPlaceholder.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { useTranslationContext } from '../context'; 5 | import { PropsWithElementAttributes } from '../utils'; 6 | 7 | export type FeedPlaceholderProps = PropsWithElementAttributes<{ 8 | text?: string; 9 | }>; 10 | 11 | export const FeedPlaceholder = ({ text, className, style }: FeedPlaceholderProps) => { 12 | const { t } = useTranslationContext(); 13 | 14 | return ( 15 |
16 |

{text || t('No data to display...')}

17 |
18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /src/components/FlatFeed.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/flat-feed 3 | menu: Top Level Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { WithExampleStreamApp } from './docz'; 8 | import { FlatFeed } from './FlatFeed'; 9 | import { Activity } from './Activity'; 10 | import { ActivityFooter } from './ActivityFooter'; 11 | 12 | # FlatFeed 13 | 14 | This component should be a child of `` component. 15 | 16 | ## Properties 17 | 18 | 19 | 20 | ## Basic usage 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | ## With custom ActivityFooter 29 | 30 | 31 | 32 | } />} 36 | /> 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/components/Flex.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/flex 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { DataLabel } from './DataLabel'; 8 | import { Flex } from './Flex'; 9 | 10 | # Flex 11 | 12 | ## Properties 13 | 14 | 15 | 16 | ## Basic usage 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ## With custom properties 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/components/Flex.tsx: -------------------------------------------------------------------------------- 1 | import React, { CSSProperties, PropsWithChildren } from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { PropsWithElementAttributes } from '../utils'; 5 | 6 | export type FlexProps = PropsWithElementAttributes< 7 | PropsWithChildren<{ 8 | a?: CSSProperties['alignItems']; 9 | d?: CSSProperties['flexDirection']; 10 | j?: CSSProperties['justifyContent']; 11 | js?: CSSProperties['justifySelf']; 12 | w?: CSSProperties['flexWrap']; 13 | }> 14 | >; 15 | 16 | export const Flex = ({ j, a, js, d = 'row', w = 'nowrap', style, children, className }: FlexProps) => ( 17 |
28 | {children} 29 |
30 | ); 31 | -------------------------------------------------------------------------------- /src/components/FollowButton.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/follow-button 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { FollowButton } from './FollowButton'; 8 | 9 | # FollowButton 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 19 | 20 | 21 | ## Property _followed_ set to _true_ 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/components/FollowButton.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import renderer from 'react-test-renderer'; 3 | import { fireEvent, render, screen } from '@testing-library/react'; 4 | import '@testing-library/jest-dom'; 5 | 6 | import { FollowButton } from './FollowButton'; 7 | 8 | describe('FollowButton', () => { 9 | it('renders with default props', () => { 10 | const tree = renderer.create().toJSON(); 11 | expect(tree).toMatchInlineSnapshot(` 12 |
17 | Following 18 |
19 | `); 20 | }); 21 | 22 | it('checks if onClick has been called', () => { 23 | const onClick = jest.fn(); 24 | 25 | render(); 26 | 27 | fireEvent.click(screen.getByRole('button')); 28 | 29 | expect(onClick).toHaveBeenCalledTimes(1); 30 | }); 31 | 32 | it('renders with different text after "followed" prop change', () => { 33 | const { rerender } = render(); 34 | 35 | // eslint-disable-next-line jest-dom/prefer-to-have-text-content 36 | expect(screen.getByRole('button').textContent).toEqual('Follow'); 37 | 38 | rerender(); 39 | 40 | expect(screen.getByRole('button')).toHaveTextContent('Following'); 41 | }); 42 | }); 43 | -------------------------------------------------------------------------------- /src/components/FollowButton.tsx: -------------------------------------------------------------------------------- 1 | import React, { MouseEvent } from 'react'; 2 | 3 | import { PropsWithElementAttributes } from '../utils'; 4 | 5 | export type FollowButtonProps = PropsWithElementAttributes<{ 6 | followed?: boolean; 7 | onClick?: (event: MouseEvent) => void; 8 | }>; 9 | 10 | export const FollowButton = ({ followed = false, onClick, className, style }: FollowButtonProps) => ( 11 |
17 | {followed ? 'Following' : 'Follow'} 18 |
19 | ); 20 | -------------------------------------------------------------------------------- /src/components/Gallery.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/gallery 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Gallery } from './Gallery'; 8 | 9 | # Gallery 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 30 | 31 | 32 | ## With single image 33 | 34 | 35 | 36 | 37 | 38 | ## With two images 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/components/Gallery.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react'; 2 | import classNames from 'classnames'; 3 | import Lightbox from 'react-image-lightbox'; 4 | 5 | import { PropsWithElementAttributes } from '../utils'; 6 | 7 | export type GalleryProps = PropsWithElementAttributes<{ 8 | images?: Array; 9 | }>; 10 | 11 | export const Gallery = ({ images = [], className, style }: GalleryProps) => { 12 | const [index, setIndex] = useState(null); 13 | 14 | return ( 15 |
16 | {images.slice(0, 5).map((image, i) => ( 17 |
5 })} 20 | onClick={() => setIndex(i)} 21 | key={`image-${i}`} 22 | > 23 | 24 | {i === 4 && images.length > 5 &&

{images.length - 4} more

} 25 |
26 | ))} 27 | 28 | {index !== null && ( 29 | setIndex(null)} 34 | onMoveNextRequest={() => setIndex(index + 1)} 35 | onMovePrevRequest={() => setIndex(index - 1)} 36 | /> 37 | )} 38 |
39 | ); 40 | }; 41 | -------------------------------------------------------------------------------- /src/components/IconBadge.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/icon-badge 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { IconBadge } from './IconBadge'; 8 | 9 | # IconBadge 10 | 11 | IconBadge is technically a wrapper that displays a badge with or without numbers on it's children. 12 | 13 | ## Properties 14 | 15 | 16 | 17 | ## Basic usage 18 | 19 | 20 | console.log('hello world.')} /> 21 | 22 | 23 | ## With Unseen 24 | 25 | 26 | 27 | 28 | 29 | ## With Numbers 30 | 31 | 32 | 33 | 34 | 35 | ## Custom Icon 36 | 37 | 38 | 39 |
40 | 41 | 42 | 43 | ## Hidden 44 | 45 | 46 | 48 | -------------------------------------------------------------------------------- /src/components/IconBadge.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren, MouseEventHandler } from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { BellIcon } from './Icons'; 5 | import { PropsWithElementAttributes } from '../utils'; 6 | 7 | export type IconBadgeProps = PropsWithChildren< 8 | PropsWithElementAttributes<{ 9 | hidden?: boolean; 10 | onClick?: MouseEventHandler; 11 | showNumber?: boolean; 12 | unseen?: number; 13 | }> 14 | >; 15 | 16 | export const IconBadge = ({ children, onClick, hidden, unseen = 0, showNumber, className, style }: IconBadgeProps) => { 17 | return ( 18 |
19 | {children ?? } 20 | {unseen > 0 && !hidden && ( 21 |
22 | {showNumber &&

{unseen}

} 23 |
24 | )} 25 |
26 | ); 27 | }; 28 | -------------------------------------------------------------------------------- /src/components/Icons.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/icons 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground } from 'docz'; 7 | import { AvatarIcon, EmojiIcon, CommentIcon, ThumbsUpIcon, RepostIcon, Color } from './Icons'; 8 | 9 | # Icons 10 | 11 | ## AvatarIcon 12 | 13 | 14 | 15 | 16 | 17 | ## EmojiIcon 18 | 19 | 20 | 21 | 22 | 23 | ## RepostIcon Active 24 | 25 | 26 | 27 | 28 | 29 | ## RepostIcon Inactive 30 | 31 | 32 | 33 | 34 | 35 | ## CommentIcon Active 36 | 37 | 38 | 39 | 40 | 41 | ## CommentIcon Inactive 42 | 43 | 44 | 45 | 46 | 47 | ## ThumbsUpIcon Active 48 | 49 | 50 | 51 | 52 | 53 | ## ThumbsUpIcon Inactive 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/components/InfiniteScroll.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/infinite-scroll 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { LoadingIndicator } from 'react-file-utils'; 8 | 9 | import { InfiniteScroll } from './InfiniteScroll'; 10 | import { resolveAfter, StatefulComponent } from './docz'; 11 | 12 | # InfiniteScroll 13 | 14 | ## Properties 15 | 16 | 17 | 18 | ## Basic usage 19 | 20 | 21 | {/* Change hasMore condition to trigger loading (load more items) */} 22 | 23 | {({ state: { loading, data }, setState }) => ( 24 | } 27 | hasMore={data.length < 100} 28 | loadMore={() => { 29 | setState((pv) => ({ ...pv, loading: true })); 30 | resolveAfter(1000).then(() => { 31 | setState((pv) => ({ 32 | loading: false, 33 | data: [...pv.data, ...Array(50).fill(null)], 34 | })); 35 | }); 36 | }} 37 | > 38 | {data.map((value, index) => ( 39 |
{index}
40 | ))} 41 |
42 | )} 43 |
44 |
45 | -------------------------------------------------------------------------------- /src/components/InfiniteScrollPaginator.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren } from 'react'; 2 | import { LoadingIndicator as DefaultLoadingIndicator } from 'react-file-utils'; 3 | 4 | import { InfiniteScroll } from './InfiniteScroll'; 5 | import { ElementOrComponentOrLiteralType, smartRender } from '../utils'; 6 | 7 | export type InfiniteScrollPaginatorProps = PropsWithChildren<{ 8 | /** indicates if there is a next page to load */ 9 | hasNextPage?: boolean; 10 | /** the loading indicator to use */ 11 | Loader?: ElementOrComponentOrLiteralType; 12 | /** callback to load the next page */ 13 | loadNextPage?: () => void; 14 | /** indicates if there there's currently any refreshing taking place */ 15 | refreshing?: boolean; 16 | /** display the items in opposite order */ 17 | reverse?: boolean; 18 | /** offset from when to start the loadNextPage call */ 19 | threshold?: number; 20 | /** use Window as parent scrolling container */ 21 | useWindow?: boolean; 22 | }>; 23 | 24 | export const InfiniteScrollPaginator = (props: InfiniteScrollPaginatorProps) => { 25 | const { 26 | children, 27 | hasNextPage, 28 | Loader = DefaultLoadingIndicator, 29 | loadNextPage, 30 | refreshing, 31 | reverse, 32 | threshold, 33 | useWindow, 34 | } = props; 35 | 36 | return ( 37 | {smartRender(Loader)}} 42 | loadMore={loadNextPage} 43 | threshold={threshold} 44 | useWindow={useWindow} 45 | > 46 | {children} 47 | 48 | ); 49 | }; 50 | -------------------------------------------------------------------------------- /src/components/Link.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/link 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Link } from './Link'; 8 | 9 | # Link 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 19 | Stream.IO Activity Feeds 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/components/Link.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import renderer from 'react-test-renderer'; 3 | import { render, fireEvent, screen } from '@testing-library/react'; 4 | 5 | import { Link } from './Link'; 6 | 7 | const testURL = 'https://getstream.io/activity-feeds'; 8 | const testText = 'Activity Feeds'; 9 | 10 | describe('Link', () => { 11 | it('renders with custom props', () => { 12 | const tree = renderer.create( 13 | 14 | {testText} 15 | , 16 | ); 17 | 18 | expect(tree).toMatchInlineSnapshot(` 19 | 24 | Activity Feeds 25 | 26 | `); 27 | }); 28 | 29 | it('checks if onClick has been called', () => { 30 | const handleClick = jest.fn(); 31 | 32 | render( 33 | 34 | {testText} 35 | , 36 | ); 37 | 38 | fireEvent.click(screen.getByText(testText)); 39 | 40 | expect(handleClick).toHaveBeenCalledTimes(1); 41 | }); 42 | }); 43 | -------------------------------------------------------------------------------- /src/components/Link.tsx: -------------------------------------------------------------------------------- 1 | import React, { MouseEvent, PropsWithChildren } from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { PropsWithElementAttributes } from '../utils'; 5 | 6 | export type LinkProps = PropsWithElementAttributes< 7 | PropsWithChildren<{ 8 | onClick?: (event: MouseEvent) => void; 9 | to?: string; 10 | }>, 11 | HTMLAnchorElement 12 | >; 13 | 14 | export const Link = ({ to, children, onClick, className, style }: LinkProps) => ( 15 | 16 | {children} 17 | 18 | ); 19 | -------------------------------------------------------------------------------- /src/components/LoadMoreButton.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/load-more-button 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { LoadMoreButton } from './LoadMoreButton'; 8 | 9 | # LoadMoreButton 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 19 | 20 | 21 | ## With custom text 22 | 23 | 24 | Click to load more 25 | 26 | 27 | ## Refreshing state 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/components/LoadMoreButton.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren, MouseEvent } from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { Button } from './Button'; 5 | import { PropsWithElementAttributes } from '../utils'; 6 | import { useTranslationContext } from '../context'; 7 | 8 | export type LoadMoreButtonProps = PropsWithElementAttributes< 9 | PropsWithChildren<{ 10 | onClick?: (event?: MouseEvent) => void; 11 | refreshing?: boolean; 12 | }> 13 | >; 14 | 15 | export const LoadMoreButton = ({ onClick, refreshing = false, children, className, style }: LoadMoreButtonProps) => { 16 | const { t } = useTranslationContext(); 17 | 18 | return ( 19 |
20 | 23 |
24 | ); 25 | }; 26 | -------------------------------------------------------------------------------- /src/components/LoadMorePaginator.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/load-more-paginator 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { LoadMorePaginator } from './LoadMorePaginator'; 8 | 9 | # LoadMorePaginator 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 19 | Children items 20 | 21 | 22 | 23 | ## Reverse 24 | 25 | 26 | 27 | Children items 28 | 29 | 30 | 31 | ## Refreshing state 32 | 33 | 34 | 35 | Children items 36 | 37 | 38 | 39 | ## Last page 40 | 41 | 42 | 43 | Children items 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/components/LoadMorePaginator.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import renderer from 'react-test-renderer'; 3 | import { LoadMorePaginator } from './LoadMorePaginator'; 4 | 5 | jest.mock('./LoadMoreButton', () => ({ 6 | LoadMoreButton: jest.fn(({ refreshing, loadNextPage }) => ( 7 |
8 | )), 9 | })); 10 | 11 | const loadNextPage = () => {}; 12 | 13 | describe('LoadMorePaginator', () => { 14 | it('renders the button', () => { 15 | const tree = renderer 16 | .create( 17 | 18 | children 19 | , 20 | ) 21 | .toJSON(); 22 | expect(tree).toMatchInlineSnapshot(` 23 | Array [ 24 | "children", 25 |
, 26 | ] 27 | `); 28 | }); 29 | 30 | it('renders in reverse mode', () => { 31 | const tree = renderer 32 | .create( 33 | 34 | children 35 | , 36 | ) 37 | .toJSON(); 38 | expect(tree).toMatchInlineSnapshot(` 39 | Array [ 40 |
, 41 | "children", 42 | ] 43 | `); 44 | }); 45 | 46 | it('pass down props to LoadMoreButton', () => { 47 | const tree = renderer 48 | .create( 49 | 50 | children 51 | , 52 | ) 53 | .toJSON(); 54 | expect(tree).toMatchInlineSnapshot(` 55 | Array [ 56 | "children", 57 |
, 60 | ] 61 | `); 62 | }); 63 | }); 64 | -------------------------------------------------------------------------------- /src/components/LoadMorePaginator.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react'; 2 | import { LoadMoreButton as DefaultLoadMoreButton, LoadMoreButtonProps } from './LoadMoreButton'; 3 | import { ElementOrComponentOrLiteralType, smartRender } from '../utils'; 4 | 5 | export type LoadMorePaginatorProps = { 6 | /** The paginated content to display */ 7 | children: ReactNode; 8 | /** indicates if there is a next page to load */ 9 | hasNextPage: boolean; 10 | /** callback to load the next page */ 11 | loadNextPage: LoadMoreButtonProps['onClick']; 12 | /** The button the user should click to click to load more 13 | * #LoadMoreButton (Component)# 14 | */ 15 | LoadMoreButton?: ElementOrComponentOrLiteralType; 16 | /** indicates if there there's currently any refreshing taking place */ 17 | refreshing?: boolean; 18 | /** display the items in opposite order */ 19 | reverse?: boolean; 20 | }; 21 | 22 | export const LoadMorePaginator = ({ 23 | LoadMoreButton = DefaultLoadMoreButton, 24 | children, 25 | reverse, 26 | hasNextPage, 27 | refreshing, 28 | loadNextPage, 29 | }: LoadMorePaginatorProps) => ( 30 | <> 31 | {!reverse && children} 32 | {hasNextPage && smartRender(LoadMoreButton, { refreshing, onClick: loadNextPage })} 33 | {reverse && children} 34 | 35 | ); 36 | -------------------------------------------------------------------------------- /src/components/NewActivitiesNotification.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/new-activities-notification 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { NewActivitiesNotification } from './NewActivitiesNotification'; 8 | 9 | # NewActivitiesNotification 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Basic usage 16 | 17 | 18 | 25 | 26 | 27 | ## Custom label function 28 | 29 | 30 | `You have ${count} unread ${count > 1 ? 'messages' : 'message'}`} 34 | /> 35 | 36 | -------------------------------------------------------------------------------- /src/components/Notification.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/notification 3 | menu: Top Level Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Notification } from './Notification'; 8 | import { WithExampleStreamApp, notificationGroup1, notificationGroup2 } from './docz'; 9 | 10 | # Notification 11 | 12 | This component renders each grouped activity inside the `` component. 13 | 14 | It supports the following activity verbs by default: `follow`, `like`, `repost`, `comment`. 15 | 16 | ## Properties 17 | 18 | 19 | 20 | ## Basic usage 21 | 22 | 23 | 24 | <> 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/components/NotificationDropdown.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/notification-dropdown 3 | menu: Top Level Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { WithExampleStreamApp } from './docz'; 8 | import { NotificationDropdown } from './NotificationDropdown'; 9 | 10 | # NotificationDropdown 11 | 12 | This component should be a child of `` component. 13 | 14 | ## Properties 15 | 16 | 17 | 18 | ## Basic usage 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | ## With custom Header, Footer, Icon and right align 27 | 28 | 29 | 30 |
31 |

Header

} 34 | Footer={() =>

Footer

} 35 | Icon={() =>
} 36 | /> 37 |
38 | 39 | 40 | -------------------------------------------------------------------------------- /src/components/NotificationFeed.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/notification-feed 3 | menu: Top Level Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { NotificationFeed } from './NotificationFeed'; 8 | import { Notification } from './Notification'; 9 | import { WithExampleStreamApp } from './docz'; 10 | 11 | # NotificationFeed 12 | 13 | This component should be a child of `` component. 14 | 15 | ## Properties 16 | 17 | 18 | 19 | ## Basic usage 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ## Customized Notification UI 28 | 29 | 30 | 31 | ( 33 | console.log('Clicked on user', user)} 36 | onClickNotification={(notification) => console.log('Clicked on notification', notification)} 37 | /> 38 | )} 39 | /> 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/components/Panel.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/panel 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { Panel, PanelContent, PanelFooter, PanelHeading } from './Panel'; 8 | 9 | # Panel 10 | 11 | ## Properties 12 | 13 | 14 | 15 | ## Panel rounded (default) 16 | 17 | 18 | 19 | Header 20 | 21 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris scelerisque tincidunt sapien, eget lacinia neque 22 | posuere ut. Sed tempus felis felis, sed varius neque hendrerit rhoncus. Suspendisse vitae ex vitae erat facilisis 23 | pretium eu vitae mauris. Suspendisse eu nibh lorem. Praesent vulputate neque vel augue mattis condimentum. Quisque 24 | lobortis lacinia eros, a consequat turpis vehicula sit amet. Ut vel fermentum velit. 25 | 26 | Footer 27 | 28 | 29 | 30 | ## Panel squared 31 | 32 | 33 | 34 | Header 35 | 36 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris scelerisque tincidunt sapien, eget lacinia neque 37 | posuere ut. Sed tempus felis felis, sed varius neque hendrerit rhoncus. Suspendisse vitae ex vitae erat facilisis 38 | pretium eu vitae mauris. Suspendisse eu nibh lorem. Praesent vulputate neque vel augue mattis condimentum. Quisque 39 | lobortis lacinia eros, a consequat turpis vehicula sit amet. Ut vel fermentum velit. 40 | 41 | Footer 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/components/Panel.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren } from 'react'; 2 | import classNames from 'classnames'; 3 | 4 | import { PropsWithElementAttributes } from '../utils'; 5 | 6 | export type PanelProps = PropsWithElementAttributes< 7 | PropsWithChildren<{ 8 | panelStyle?: 'rounded' | 'square'; 9 | }> 10 | >; 11 | 12 | export const Panel = ({ children, panelStyle = 'rounded', className, style }: PanelProps) => ( 13 |
14 | {children} 15 |
16 | ); 17 | 18 | type ChildPanelProps = Omit; 19 | 20 | export type PanelContentProps = ChildPanelProps; 21 | export type PanelFooterProps = ChildPanelProps; 22 | export type PanelHeadingProps = ChildPanelProps; 23 | 24 | export const PanelContent = ({ children, className, style }: PanelContentProps) => ( 25 |
26 | {children} 27 |
28 | ); 29 | 30 | // eslint-disable-next-line sonarjs/no-identical-functions 31 | export const PanelFooter = ({ children, className, style }: PanelFooterProps) => ( 32 |
33 | {children} 34 |
35 | ); 36 | 37 | // eslint-disable-next-line sonarjs/no-identical-functions 38 | export const PanelHeading = ({ children, className, style }: PanelHeadingProps) => ( 39 |
40 | {children} 41 |
42 | ); 43 | -------------------------------------------------------------------------------- /src/components/ReactionIcon.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/reaction-icon 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { ReactionIcon } from './ReactionIcon'; 8 | import { ThumbsUpIcon } from './Icons'; 9 | 10 | # ReactionIcon 11 | 12 | ## Properties 13 | 14 | 15 | 16 | ## Basic usage 17 | 18 | 19 | } 21 | counts={{ 22 | like: 12, 23 | }} 24 | kind="like" 25 | labelPlural="thumbs" 26 | labelSingle="thumb" 27 | /> 28 | 29 | 30 | ## URL icon 31 | 32 | 33 | 40 | 41 | -------------------------------------------------------------------------------- /src/components/ReactionList.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/reaction-list 3 | menu: Composition Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { ReactionList } from './ReactionList'; 8 | import { WithExampleStreamApp } from './docz'; 9 | import { Feed } from '../context/Feed'; 10 | 11 | # ReactionList 12 | 13 | ## Properties 14 | 15 | 16 | 17 | ## Basic usage 18 | 19 | 20 | 21 | 22 |
{props.reaction.data.text}
} 26 | /> 27 |
28 |
29 |
30 | 31 | ## Reverse order 32 | 33 | 34 | 35 | 36 |
{props.reaction.data.text}
} 41 | /> 42 |
43 |
44 |
45 | -------------------------------------------------------------------------------- /src/components/ReactionToggleIcon.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/reaction-toggle-icon 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { ReactionToggleIcon } from './ReactionToggleIcon'; 8 | import { ThumbsUpIcon, Color } from './Icons'; 9 | 10 | # ReactionToggleIcon 11 | 12 | ## Properties 13 | 14 | 15 | 16 | ## Basic usage 17 | 18 | 19 | } 29 | inactiveIcon={} 30 | labelSingle="like" 31 | labelPlural="likes" 32 | /> 33 | 34 | -------------------------------------------------------------------------------- /src/components/ReactionToggleIcon.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | import { ReactionsRecords, UR } from 'getstream'; 4 | 5 | import { ReactionIcon, ReactionIconProps } from './ReactionIcon'; 6 | import { DefaultUT } from '../context/StreamApp'; 7 | import { PropsWithElementAttributes } from '../utils'; 8 | 9 | type ReactionToggleIconProps< 10 | UT extends DefaultUT = DefaultUT, 11 | RT extends UR = UR, 12 | CRT extends UR = UR 13 | > = PropsWithElementAttributes< 14 | { 15 | /** The icon to show when the user has done this reaction (e.g. a filled in heart) */ 16 | activeIcon: ReactionIconProps['icon']; 17 | /** The icon to show when the user has not done this reaction yet (e.g. an empty in heart) */ 18 | inactiveIcon: ReactionIconProps['icon']; 19 | /** The map with own reactions */ 20 | own_reactions?: ReactionsRecords | Record; 21 | } & Omit 22 | >; 23 | 24 | export const ReactionToggleIcon = ({ 25 | inactiveIcon, 26 | activeIcon, 27 | own_reactions: ownReactions, 28 | kind, 29 | className, 30 | style, 31 | ...restProps 32 | }: ReactionToggleIconProps) => { 33 | const icon = ownReactions?.[kind ?? '']?.length ? activeIcon : inactiveIcon; 34 | return ( 35 |
36 | 37 |
38 | ); 39 | }; 40 | -------------------------------------------------------------------------------- /src/components/RepostButton.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/repost-button 3 | menu: UI Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { RepostButton } from './RepostButton'; 8 | import { Activity } from './Activity'; 9 | import { FlatFeed } from './FlatFeed'; 10 | import { WithExampleStreamApp } from './docz'; 11 | 12 | # RepostButton 13 | 14 | ## Properties 15 | 16 | 17 | 18 | ## Basic usage 19 | 20 | Repost an activity to the current user's `user` feed 21 | 22 | 23 | 24 | } />} 29 | /> 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/components/SinglePost.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/single-post 3 | menu: Top Level Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { WithExampleStreamApp } from './docz'; 8 | import { SinglePost } from './SinglePost'; 9 | import { Activity } from './Activity'; 10 | import { CommentField } from './CommentField'; 11 | import { CommentList } from './CommentList'; 12 | 13 | # SinglePost 14 | 15 | This component should be a child of `` component. 16 | 17 | ## Properties 18 | 19 | 20 | 21 | ## Basic usage 22 | 23 | 24 | 25 | ( 29 | 33 | 34 | 35 |
36 | } 37 | /> 38 | )} 39 | /> 40 |
41 |
42 | -------------------------------------------------------------------------------- /src/components/SinglePost.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { GetFeedOptions, UR } from 'getstream'; 3 | 4 | import { DefaultAT, DefaultUT } from '../context'; 5 | import { FlatFeed, FlatFeedProps } from './FlatFeed'; 6 | 7 | export type SinglePostProps< 8 | UT extends DefaultUT = DefaultUT, 9 | AT extends DefaultAT = DefaultAT, 10 | CT extends UR = UR, 11 | RT extends UR = UR, 12 | CRT extends UR = UR, 13 | PT extends UR = UR 14 | > = FlatFeedProps & { activityId: string }; 15 | 16 | /** 17 | * Shows the detail of a single activity 18 | */ 19 | export function SinglePost< 20 | UT extends DefaultUT = DefaultUT, 21 | AT extends DefaultAT = DefaultAT, 22 | CT extends UR = UR, 23 | RT extends UR = UR, 24 | CRT extends UR = UR, 25 | PT extends UR = UR 26 | >({ options, activityId, doFeedRequest, ...props }: SinglePostProps) { 27 | return ( 28 | 29 | {...props} 30 | options={{ withRecentReactions: true, ...options }} 31 | doFeedRequest={(client, feedGroup, userId, opts) => { 32 | if (doFeedRequest) { 33 | return doFeedRequest(client, feedGroup, userId, { 34 | ...opts, 35 | id_lte: activityId, 36 | id_gte: activityId, 37 | limit: 1, 38 | }); 39 | } 40 | 41 | return client.feed(feedGroup, userId).getActivityDetail(activityId, opts as GetFeedOptions); 42 | }} 43 | /> 44 | ); 45 | } 46 | -------------------------------------------------------------------------------- /src/components/StatusUpdateForm/StatusUpdateForm.mdx: -------------------------------------------------------------------------------- 1 | --- 2 | route: /components/status-update-form 3 | menu: Top Level Components 4 | --- 5 | 6 | import { Playground, Props } from 'docz'; 7 | import { WithExampleStreamApp } from '../docz'; 8 | import { Activity } from '../Activity'; 9 | import { FlatFeed } from '../FlatFeed'; 10 | import { StatusUpdateForm } from './StatusUpdateForm'; 11 | 12 | # StatusUpdateForm 13 | 14 | This component should be a child of `` component. 15 | 16 | ### Features: 17 | 18 | - OG scraping 19 | - Image uploads 20 | - File uploads 21 | - Emoji select and autocomplete 22 | 23 | ## Properties 24 | 25 | 26 | 27 | ## Basic usage 28 | 29 | 30 | 31 | 32 | } /> 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/components/StatusUpdateForm/StatusUpdateForm.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import '@testing-library/jest-dom'; 3 | import { render } from '@testing-library/react'; 4 | import { StatusUpdateForm } from './StatusUpdateForm'; 5 | import { I18n } from 'emoji-mart'; 6 | import { EmojiPicker } from '../EmojiPicker'; 7 | 8 | const customTextareaPlaceholder = 'Custom placeholder'; 9 | const Textarea = jest.fn(() =>