├── src ├── constants │ ├── bordeRadius.scss │ ├── fontWeight.scss │ └── colors.scss ├── types │ └── index.d.ts ├── ui │ ├── PromoTitle │ │ ├── types.ts │ │ ├── PromoTitle.tsx │ │ └── PromoTitle.module.scss │ ├── Buttons │ │ ├── BlockButtons │ │ │ ├── presets │ │ │ │ ├── MixBlockButton │ │ │ │ │ ├── types.ts │ │ │ │ │ └── MixBlockButton.tsx │ │ │ │ └── PlayBlockButton │ │ │ │ │ ├── types.ts │ │ │ │ │ └── PlayBlockButton.tsx │ │ │ └── BlockButton │ │ │ │ ├── types.ts │ │ │ │ ├── BlockButton.tsx │ │ │ │ └── BlockButton.module.scss │ │ ├── InteractiveButtons │ │ │ ├── LikeButton │ │ │ │ ├── types.ts │ │ │ │ ├── LikeButton.module.scss │ │ │ │ └── LikeButton.tsx │ │ │ ├── PlayButton │ │ │ │ ├── types.ts │ │ │ │ ├── PlayButton.tsx │ │ │ │ └── PlayButton.module.scss │ │ │ ├── ShareButton │ │ │ │ ├── types.ts │ │ │ │ ├── ShareButton.module.scss │ │ │ │ └── ShareButton.tsx │ │ │ └── ThemeSwitcher │ │ │ │ ├── types.ts │ │ │ │ ├── ThemeSwitcher.tsx │ │ │ │ └── ThemeSwitcher.module.scss │ │ ├── NavbarButtons │ │ │ ├── presets │ │ │ │ ├── types.ts │ │ │ │ ├── HomeNavbarButton │ │ │ │ │ └── HomeNavbarButton.tsx │ │ │ │ ├── RadioNavbarButton │ │ │ │ │ └── RadioNavbarButton.tsx │ │ │ │ ├── TrackNavbarButton │ │ │ │ │ └── TrackNavbarButton.tsx │ │ │ │ ├── AccountNavbarButton │ │ │ │ │ └── AccountNavbarButton.tsx │ │ │ │ ├── FavoritesNavbarButton │ │ │ │ │ └── FavoritesNavbarButton.tsx │ │ │ │ ├── SettingsNavbarButton │ │ │ │ │ └── SettingsNavbarButton.tsx │ │ │ │ └── LogoNavbarButton │ │ │ │ │ └── LogoNavbarButton.tsx │ │ │ └── NavbarButton │ │ │ │ ├── types.ts │ │ │ │ ├── NavbarButton.module.scss │ │ │ │ └── NavbarButton.tsx │ │ └── RoundButtons │ │ │ ├── presets │ │ │ ├── types.ts │ │ │ ├── PlayRoundButton │ │ │ │ └── PlayRoundButton.tsx │ │ │ ├── ShareRoundButton │ │ │ │ └── ShareRoundButton.tsx │ │ │ ├── RepeatRoundButton │ │ │ │ └── RepeatRoundButton.tsx │ │ │ ├── ReminderRoundButton │ │ │ │ └── ReminderRoundButton.tsx │ │ │ ├── DownArrowRoundButton │ │ │ │ └── DownArrowRoundButton.tsx │ │ │ ├── LeftArrowRoundButton │ │ │ │ └── LeftArrowRoundButton.tsx │ │ │ ├── LikeRoundButton │ │ │ │ └── LikeRoundButton.tsx │ │ │ ├── RightArrowRoundButton │ │ │ │ └── RightArrowRoundButton.tsx │ │ │ └── MixRoundButton │ │ │ │ └── MixRoundButton.tsx │ │ │ └── RoundButton │ │ │ ├── types.ts │ │ │ ├── RoundButton.tsx │ │ │ └── RoundButton.module.scss │ ├── Card │ │ ├── types.ts │ │ ├── Card.module.scss │ │ └── Card.tsx │ ├── NavSection │ │ ├── type.ts │ │ ├── NavSection.module.scss │ │ └── NavSection.tsx │ ├── Navbar │ │ ├── types.ts │ │ ├── Navbar.module.scss │ │ └── Navbar.tsx │ ├── Typography │ │ ├── types.ts │ │ ├── Typography.module.scss │ │ └── Typography.tsx │ ├── Loader │ │ ├── Loader.tsx │ │ └── Loader.module.scss │ └── Icons │ │ ├── Note.tsx │ │ ├── Repeat.tsx │ │ ├── User.tsx │ │ ├── DownArrow.tsx │ │ ├── LeftArrow.tsx │ │ ├── RightArrow.tsx │ │ ├── Play.tsx │ │ ├── Like.tsx │ │ ├── Home.tsx │ │ ├── Reminder.tsx │ │ ├── Share.tsx │ │ ├── Volume.tsx │ │ ├── Radio.tsx │ │ ├── Logo.tsx │ │ ├── Setting.tsx │ │ └── Mix.tsx ├── stories │ ├── Loader.stories.tsx │ ├── Buttons │ │ ├── RoundButtons │ │ │ ├── RoundButton.stories.tsx │ │ │ ├── MixRoundButton.stories.tsx │ │ │ ├── LikeRounButton.stories.tsx │ │ │ ├── PlayRoundButton.stories.tsx │ │ │ ├── ShareRoundButton.stories.tsx │ │ │ ├── RepeatRoundButton.stories.tsx │ │ │ ├── ReminderRoundButton.stories.tsx │ │ │ ├── DownArrowRoundButton.stories.tsx │ │ │ ├── LeftArrowRoundButton.stories.tsx │ │ │ └── RightArrowRoundButton.stories.tsx │ │ ├── BlockButtons │ │ │ ├── BlockButton.stories.tsx │ │ │ ├── MixBlockButton.stories.tsx │ │ │ └── PlayBlockButton.stories.tsx │ │ └── NavbarButtons │ │ │ ├── NavbarButton.stories.tsx │ │ │ ├── HomeNavbarButton.stories.tsx │ │ │ ├── RadioNavbarButton.stories.tsx │ │ │ ├── AccountNavbarButton.stories.tsx │ │ │ ├── SettingsNavbarButton.stories.tsx │ │ │ └── FavoritesNavbarButton.stories.tsx │ ├── PromoTitle.stories.tsx │ ├── NavSectrion.stories.tsx │ ├── Card.stories.tsx │ └── Typography.stories.tsx └── index.ts ├── storybook-static ├── sb-addons │ ├── links-0 │ │ ├── manager-bundle.js.LEGAL.txt │ │ └── manager-bundle.js │ ├── interactions-9 │ │ └── manager-bundle.js.LEGAL.txt │ ├── essentials-actions-2 │ │ └── manager-bundle.js.LEGAL.txt │ ├── essentials-measure-6 │ │ ├── manager-bundle.js.LEGAL.txt │ │ └── manager-bundle.js │ ├── essentials-outline-7 │ │ ├── manager-bundle.js.LEGAL.txt │ │ └── manager-bundle.js │ ├── essentials-toolbars-5 │ │ ├── manager-bundle.js.LEGAL.txt │ │ └── manager-bundle.js │ ├── essentials-viewport-4 │ │ ├── manager-bundle.js.LEGAL.txt │ │ └── manager-bundle.js │ ├── essentials-backgrounds-3 │ │ ├── manager-bundle.js.LEGAL.txt │ │ └── manager-bundle.js │ ├── essentials-controls-1 │ │ └── manager-bundle.js.LEGAL.txt │ └── onboarding-8 │ │ └── manager-bundle.js.LEGAL.txt ├── ui │ ├── Loader │ │ └── Loader.d.ts │ ├── Buttons │ │ ├── BlockButton │ │ │ ├── types.d.ts │ │ │ └── BlockButton.d.ts │ │ ├── RoundButton │ │ │ ├── types.d.ts │ │ │ └── RoundButton.d.ts │ │ ├── ShareButton │ │ │ └── ShareButton.d.ts │ │ └── NavbarButton │ │ │ ├── types.d.ts │ │ │ └── NavbarButton.d.ts │ ├── Card │ │ ├── types.d.ts │ │ └── Card.d.ts │ ├── Navbar │ │ ├── types.d.ts │ │ └── Navbar.d.ts │ ├── NavSection │ │ ├── type.d.ts │ │ └── NavSection.d.ts │ └── Typography │ │ ├── Typography.d.ts │ │ └── types.d.ts ├── public │ ├── icons │ │ ├── disc.png │ │ ├── heart.png │ │ ├── home.png │ │ ├── menu.png │ │ ├── mix.png │ │ ├── music.png │ │ ├── pause.png │ │ ├── play.png │ │ ├── radio.png │ │ ├── share.png │ │ ├── remind.png │ │ ├── repeat.png │ │ ├── volume.png │ │ ├── darkMode.png │ │ ├── downArrow.png │ │ ├── homeActive.png │ │ ├── leftArrow.png │ │ ├── lightMode.png │ │ ├── menuActive.png │ │ ├── rightArrow.png │ │ ├── settings.png │ │ ├── heartActive.png │ │ ├── musicActive.png │ │ └── radioActive.png │ └── img │ │ └── Meteora.jpg ├── sb-common-assets │ ├── nunito-sans-bold.woff2 │ ├── nunito-sans-italic.woff2 │ ├── nunito-sans-regular.woff2 │ ├── nunito-sans-bold-italic.woff2 │ └── fonts.css ├── sb-manager │ ├── index.js │ ├── WithTooltip-4HIR6TLV-L6ICANXH.js │ ├── syntaxhighlighter-NMPM6SWI-WFK223KV.js │ ├── globals.js │ ├── chunk-ZEU7PDD3.js │ └── runtime.js ├── stories-Card-stories.70d2daa6.iframe.bundle.js.LICENSE.txt ├── stories-Loader-stories.02d2dc1d.iframe.bundle.js.LICENSE.txt ├── stories-BlockButton-stories.13c10d46.iframe.bundle.js.LICENSE.txt ├── stories-NavSectrion-stories.3e570df2.iframe.bundle.js.LICENSE.txt ├── stories-NavbarButton-stories.43fd36bc.iframe.bundle.js.LICENSE.txt ├── stories-RoundButton-stories.871a9f59.iframe.bundle.js.LICENSE.txt ├── stories-ShareButton-stories.be890e60.iframe.bundle.js.LICENSE.txt ├── stories-Typography-stories.1b54675e.iframe.bundle.js.LICENSE.txt ├── index.d.ts ├── 350.01508b97.iframe.bundle.js.LICENSE.txt ├── 984.df1c629b.iframe.bundle.js ├── 296.1c9158ee.iframe.bundle.js ├── project.json ├── 341.3cbc6f24.iframe.bundle.js ├── favicon.svg ├── sb-preview │ └── globals.js ├── 102.65c19aa0.iframe.bundle.js.LICENSE.txt ├── index.html ├── index.json ├── main.ec8c71fc.iframe.bundle.js ├── runtime~main.b4cdbf78.iframe.bundle.js └── stories.json ├── .gitattributes ├── public └── img │ └── Meteora.jpg ├── README.md ├── .babelrc.json ├── .storybook ├── preview.ts └── main.ts ├── .prettierrc ├── .gitignore ├── tsconfig.json ├── .eslintrc.json ├── .github └── workflows │ └── github-actions-demo.yml ├── package.json └── webpack.config.js /src/constants/bordeRadius.scss: -------------------------------------------------------------------------------- 1 | $round: 50%; 2 | -------------------------------------------------------------------------------- /src/types/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.module.scss' 2 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/links-0/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/interactions-9/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-actions-2/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-measure-6/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-outline-7/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/constants/fontWeight.scss: -------------------------------------------------------------------------------- 1 | $semibold: 600; 2 | $medium: 500; 3 | $regular: 400; -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /public/img/Meteora.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/public/img/Meteora.jpg -------------------------------------------------------------------------------- /src/ui/PromoTitle/types.ts: -------------------------------------------------------------------------------- 1 | export interface PromoTitleProps { 2 | prePhrase: string 3 | rotatedPhrases: string[] 4 | } 5 | -------------------------------------------------------------------------------- /storybook-static/ui/Loader/Loader.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export default function Loader(): JSX.Element; 3 | -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/presets/MixBlockButton/types.ts: -------------------------------------------------------------------------------- 1 | export type MixBlokButtonProps = { 2 | onClick: () => void 3 | } 4 | -------------------------------------------------------------------------------- /storybook-static/public/icons/disc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/disc.png -------------------------------------------------------------------------------- /storybook-static/public/icons/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/heart.png -------------------------------------------------------------------------------- /storybook-static/public/icons/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/home.png -------------------------------------------------------------------------------- /storybook-static/public/icons/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/menu.png -------------------------------------------------------------------------------- /storybook-static/public/icons/mix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/mix.png -------------------------------------------------------------------------------- /storybook-static/public/icons/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/music.png -------------------------------------------------------------------------------- /storybook-static/public/icons/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/pause.png -------------------------------------------------------------------------------- /storybook-static/public/icons/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/play.png -------------------------------------------------------------------------------- /storybook-static/public/icons/radio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/radio.png -------------------------------------------------------------------------------- /storybook-static/public/icons/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/share.png -------------------------------------------------------------------------------- /storybook-static/public/img/Meteora.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/img/Meteora.jpg -------------------------------------------------------------------------------- /storybook-static/public/icons/remind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/remind.png -------------------------------------------------------------------------------- /storybook-static/public/icons/repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/repeat.png -------------------------------------------------------------------------------- /storybook-static/public/icons/volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/volume.png -------------------------------------------------------------------------------- /storybook-static/public/icons/darkMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/darkMode.png -------------------------------------------------------------------------------- /storybook-static/public/icons/downArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/downArrow.png -------------------------------------------------------------------------------- /storybook-static/public/icons/homeActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/homeActive.png -------------------------------------------------------------------------------- /storybook-static/public/icons/leftArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/leftArrow.png -------------------------------------------------------------------------------- /storybook-static/public/icons/lightMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/lightMode.png -------------------------------------------------------------------------------- /storybook-static/public/icons/menuActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/menuActive.png -------------------------------------------------------------------------------- /storybook-static/public/icons/rightArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/rightArrow.png -------------------------------------------------------------------------------- /storybook-static/public/icons/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/settings.png -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/BlockButton/types.d.ts: -------------------------------------------------------------------------------- 1 | export interface IBlockButtonProps { 2 | text: string; 3 | srcImg: string; 4 | } 5 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/LikeButton/types.ts: -------------------------------------------------------------------------------- 1 | export interface LikeButtonProps { 2 | isLiked: boolean 3 | onClick: () => void 4 | } 5 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/PlayButton/types.ts: -------------------------------------------------------------------------------- 1 | export type PlayButtonProps = { 2 | isPlaying: boolean 3 | onClick: () => void 4 | } 5 | -------------------------------------------------------------------------------- /storybook-static/public/icons/heartActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/heartActive.png -------------------------------------------------------------------------------- /storybook-static/public/icons/musicActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/musicActive.png -------------------------------------------------------------------------------- /storybook-static/public/icons/radioActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/public/icons/radioActive.png -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/RoundButton/types.d.ts: -------------------------------------------------------------------------------- 1 | export interface IRoundButtonProps { 2 | srcImg: string; 3 | color?: string; 4 | } 5 | -------------------------------------------------------------------------------- /storybook-static/ui/Card/types.d.ts: -------------------------------------------------------------------------------- 1 | export interface ICardProps { 2 | srcImg: string; 3 | title: string; 4 | artist: string; 5 | } 6 | -------------------------------------------------------------------------------- /storybook-static/ui/Navbar/types.d.ts: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | export interface INavbarProps { 3 | children: React.ReactNode; 4 | } 5 | -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/presets/PlayBlockButton/types.ts: -------------------------------------------------------------------------------- 1 | export type PlayBlokButtonProps = { 2 | onClick: () => void 3 | text: string 4 | } 5 | -------------------------------------------------------------------------------- /src/ui/Card/types.ts: -------------------------------------------------------------------------------- 1 | 2 | export interface ICardProps { 3 | srcImg: string 4 | title?: string 5 | subTitle?: string 6 | onClick?: () => void 7 | } -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/ShareButton/ShareButton.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | export default function ShareButton(): React.JSX.Element; 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nirvana UI kit 2 | 3 | UI kit for music streaming app by Andrey Burov 4 | 5 | To build: npm run start 6 | 7 | To run Storybook: npm run sb 8 | -------------------------------------------------------------------------------- /storybook-static/ui/NavSection/type.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export interface INavSectionProps { 3 | children: React.ReactNode; 4 | } 5 | -------------------------------------------------------------------------------- /storybook-static/sb-common-assets/nunito-sans-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/sb-common-assets/nunito-sans-bold.woff2 -------------------------------------------------------------------------------- /storybook-static/sb-common-assets/nunito-sans-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/sb-common-assets/nunito-sans-italic.woff2 -------------------------------------------------------------------------------- /storybook-static/sb-common-assets/nunito-sans-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/sb-common-assets/nunito-sans-regular.woff2 -------------------------------------------------------------------------------- /storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ABurov30/nirvana-ui/HEAD/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/ShareButton/types.ts: -------------------------------------------------------------------------------- 1 | export type ShareButtonProps = { 2 | title: string 3 | hashtags: string[] 4 | shareHandler: (dispatch?: unknown) => void 5 | } 6 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/types.ts: -------------------------------------------------------------------------------- 1 | import { NavbarButtonProps } from '../NavbarButton/types' 2 | 3 | export interface NavbarButtonPresetsProps extends NavbarButtonProps {} 4 | -------------------------------------------------------------------------------- /src/ui/NavSection/type.ts: -------------------------------------------------------------------------------- 1 | export interface NavSectionProps extends React.HTMLProps { 2 | children: React.ReactNode[] | React.ReactNode 3 | isHovered?: boolean 4 | } 5 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/ThemeSwitcher/types.ts: -------------------------------------------------------------------------------- 1 | export type ThemeSwitcherProps = { 2 | theme: 'light' | 'dark' 3 | changeTheme: (value: string) => void 4 | checked: boolean 5 | } 6 | -------------------------------------------------------------------------------- /storybook-static/ui/Navbar/Navbar.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { INavbarProps } from './types'; 3 | export default function Navbar({ children }: INavbarProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /src/ui/Navbar/types.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export interface INavbarProps { 4 | children: React.ReactNode[] 5 | isHovered: boolean 6 | setIsHovered: (arg0: boolean) => void 7 | } 8 | -------------------------------------------------------------------------------- /storybook-static/ui/Card/Card.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ICardProps } from './types'; 3 | export default function Card({ srcImg, title, artist }: ICardProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /storybook-static/ui/NavSection/NavSection.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { INavSectionProps } from './type'; 3 | export default function NavSection({ children }: INavSectionProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/types.ts: -------------------------------------------------------------------------------- 1 | import { RoundButtonProps } from "../RoundButton/types"; 2 | 3 | 4 | export interface RoundButtonPresetsProps 5 | extends Pick {} 6 | -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/BlockButton/BlockButton.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { IBlockButtonProps } from './types'; 3 | export default function BlockButton({ text, srcImg }: IBlockButtonProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/RoundButton/RoundButton.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { IRoundButtonProps } from './types'; 3 | export default function RoundButton({ srcImg, color }: IRoundButtonProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /storybook-static/ui/Typography/Typography.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ITypographyProps } from './types'; 3 | export default function Typography({ text, fontSize, weight, color }: ITypographyProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /storybook-static/sb-manager/index.js: -------------------------------------------------------------------------------- 1 | import{Provider,Root,renderStorybookUI}from"./chunk-WZJAIZ64.js";import"./chunk-OQCANWBN.js";import"./chunk-TCCQ5FBZ.js";import"./chunk-5AW67ZFX.js";import"./chunk-ZEU7PDD3.js";export{Provider,Root,renderStorybookUI}; 2 | -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/NavbarButton/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export interface INabvarButtonProps { 3 | children: React.ReactNode; 4 | srcImg?: string; 5 | srcActiveImg?: string; 6 | isActive?: boolean; 7 | } 8 | -------------------------------------------------------------------------------- /storybook-static/ui/Typography/types.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export interface ITypographyProps { 3 | text: React.ReactNode; 4 | fontSize?: string; 5 | weight?: 'semibold' | 'regular' | 'medium'; 6 | color?: string; 7 | } 8 | -------------------------------------------------------------------------------- /storybook-static/sb-manager/WithTooltip-4HIR6TLV-L6ICANXH.js: -------------------------------------------------------------------------------- 1 | import{WithToolTipState,WithTooltipPure}from"./chunk-TCCQ5FBZ.js";import"./chunk-5AW67ZFX.js";import"./chunk-ZEU7PDD3.js";export{WithToolTipState,WithToolTipState as WithTooltip,WithTooltipPure}; 2 | -------------------------------------------------------------------------------- /storybook-static/ui/Buttons/NavbarButton/NavbarButton.d.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { INabvarButtonProps } from './types'; 3 | export default function NavbarButton({ children, srcImg, srcActiveImg, isActive }: INabvarButtonProps): React.JSX.Element; 4 | -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/BlockButton/types.ts: -------------------------------------------------------------------------------- 1 | import { ButtonHTMLAttributes, ReactNode } from 'react' 2 | 3 | 4 | export interface IBlockButtonProps extends ButtonHTMLAttributes { 5 | text: string 6 | icon?: ReactNode 7 | onClick?: () => void 8 | } 9 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/RoundButton/types.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react' 2 | 3 | export interface RoundButtonProps { 4 | icon: ReactNode 5 | onClick?: () => void 6 | color?: string 7 | size?: string 8 | className?: string 9 | ariaLabel?: string 10 | } 11 | -------------------------------------------------------------------------------- /src/ui/Typography/types.ts: -------------------------------------------------------------------------------- 1 | export interface ITypographyProps extends Partial { 2 | text: React.ReactNode 3 | fontSize?: string 4 | weight?: 'semibold' | 'regular' | 'medium' 5 | color?: string 6 | textAlign?: 'left' | 'right' | 'center' | 'justify' 7 | } 8 | -------------------------------------------------------------------------------- /src/ui/Typography/Typography.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../constants/colors.scss'; 2 | 3 | .typography { 4 | font-family: 'Roboto', sans-serif; 5 | font-size: 1em; 6 | color: $primary-grey; 7 | transition: transform 0.5s ease; 8 | } 9 | 10 | .typography :hover { 11 | transform: scale(1.1); 12 | } 13 | -------------------------------------------------------------------------------- /.babelrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "sourceType": "unambiguous", 3 | "presets": [ 4 | [ 5 | "@babel/preset-env", 6 | { 7 | "targets": { 8 | "chrome": 100 9 | } 10 | } 11 | ], 12 | "@babel/preset-typescript", 13 | "@babel/preset-react" 14 | ], 15 | "plugins": [] 16 | } -------------------------------------------------------------------------------- /src/stories/Loader.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import Loader from '../ui/Loader/Loader' 4 | 5 | const meta: Meta = { 6 | component: Loader 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Primary: Story = {} 13 | -------------------------------------------------------------------------------- /.storybook/preview.ts: -------------------------------------------------------------------------------- 1 | import type { Preview } from '@storybook/react' 2 | 3 | const preview: Preview = { 4 | parameters: { 5 | actions: { argTypesRegex: '^on[A-Z].*' }, 6 | controls: { 7 | matchers: { 8 | color: /(background|color)$/i, 9 | date: /Date$/ 10 | } 11 | } 12 | } 13 | } 14 | 15 | export default preview 16 | -------------------------------------------------------------------------------- /storybook-static/sb-manager/syntaxhighlighter-NMPM6SWI-WFK223KV.js: -------------------------------------------------------------------------------- 1 | import{SyntaxHighlighter2,createCopyToClipboardFunction,syntaxhighlighter_default}from"./chunk-OQCANWBN.js";import"./chunk-5AW67ZFX.js";import"./chunk-ZEU7PDD3.js";export{SyntaxHighlighter2 as SyntaxHighlighter,createCopyToClipboardFunction,syntaxhighlighter_default as default}; 2 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/NavbarButton/types.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react' 2 | 3 | export interface NavbarButtonProps extends React.HTMLProps { 4 | text?: string 5 | icon?: any 6 | isActive?: boolean 7 | isHovered?: boolean 8 | onClick: () => void 9 | color?: string 10 | weight?: 'semibold' | 'regular' | 'medium' 11 | } 12 | -------------------------------------------------------------------------------- /src/ui/NavSection/NavSection.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../constants/colors.scss'; 2 | 3 | .NavSection { 4 | background-color: transparent; 5 | border-bottom: 1px solid $primary-grey; 6 | width: 100%; 7 | padding: 30px 0px; 8 | display: flex; 9 | flex-direction: column; 10 | align-items: center; 11 | justify-content: center; 12 | gap: 10px; 13 | } 14 | -------------------------------------------------------------------------------- /storybook-static/stories-Card-stories.70d2daa6.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-Loader-stories.02d2dc1d.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-BlockButton-stories.13c10d46.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-NavSectrion-stories.3e570df2.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-NavbarButton-stories.43fd36bc.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-RoundButton-stories.871a9f59.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-ShareButton-stories.be890e60.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /storybook-static/stories-Typography-stories.1b54675e.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * @license React 3 | * react-jsx-runtime.production.min.js 4 | * 5 | * Copyright (c) Facebook, Inc. and its affiliates. 6 | * 7 | * This source code is licensed under the MIT license found in the 8 | * LICENSE file in the root directory of this source tree. 9 | */ 10 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "useTabs": true, 4 | "singleQuote": true, 5 | "tabWidth": 4, 6 | "semi": false, 7 | "trailingComma": "none", 8 | "importOrder": [ 9 | "builtin", 10 | "external", 11 | "internal", 12 | ["parent", "sibling"], 13 | "index" 14 | ], 15 | "importOrderSeparation": true, 16 | "importOrderSortSpecifiers": true 17 | } 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependency directories 2 | node_modules/ 3 | jspm_packages/ 4 | 5 | # Distribution files 6 | dist/ 7 | build/ 8 | 9 | # Environment files 10 | .env 11 | .env.* 12 | 13 | # Log files 14 | logs/ 15 | *.log 16 | 17 | # IDE files 18 | .vscode/ 19 | .idea/ 20 | 21 | # Mac files 22 | .DS_Store 23 | 24 | # Compiled output 25 | *.min.js 26 | *.min.css 27 | 28 | # Other 29 | Thumbs.db 30 | -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/presets/MixBlockButton/MixBlockButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Mix from '../../../../Icons/Mix' 3 | import BlockButton from '../../BlockButton/BlockButton' 4 | import { MixBlokButtonProps } from './types' 5 | 6 | export default function MixBlockButton({ onClick }: MixBlokButtonProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "jsx": "react", 6 | "strict": true, 7 | "esModuleInterop": true, 8 | "lib": ["es2015", "dom"], 9 | "outDir": "./dist/", 10 | "sourceMap": true, 11 | "declaration": true 12 | }, 13 | "include": ["src", "src/index.ts"], 14 | "exclude": ["node_modules", "dist", "./src/stories"] 15 | } 16 | -------------------------------------------------------------------------------- /src/constants/colors.scss: -------------------------------------------------------------------------------- 1 | $primary-grey: #434544; 2 | $primary-black: #2A2630; 3 | $primary-white: #F3F3F3; 4 | $primary-green: #5EE9BF; 5 | $primary-blue: #2F69FF; 6 | $primary-violet: #6360FF; 7 | $primary-pink: #A16AE8; 8 | 9 | $minor-grey: #BDBEBE; 10 | $minor-violet: #B19FF9; 11 | $minor-pink: #DB55D4; 12 | $minor-dark-pink: #B537B5; 13 | $minor-blue: #2105D0; 14 | $minor-red: #BB0310; 15 | 16 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/RoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import RoundButton from '../../../ui/Buttons/RoundButtons/RoundButton/RoundButton' 4 | 5 | const meta: Meta = { 6 | component: RoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/ui/Navbar/Navbar.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../constants/colors.scss'; 2 | 3 | .navbar { 4 | margin: 0; 5 | width: 5vw; 6 | min-width: 70px; 7 | max-width: 80px; 8 | height: 100vh; 9 | display: flex; 10 | flex-direction: column; 11 | align-items: center; 12 | transition: all 0.7s ease-out; 13 | } 14 | 15 | .navbar:hover { 16 | min-width: 160px; 17 | max-width: 200px; 18 | width: 10vw; 19 | } 20 | -------------------------------------------------------------------------------- /src/stories/Buttons/BlockButtons/BlockButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import BlockButton from '../../../ui/Buttons/BlockButtons/BlockButton/BlockButton' 4 | 5 | const meta: Meta = { 6 | component: BlockButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | 14 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/HomeNavbarButton/HomeNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Home from '../../../../Icons/Home' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | export default function HomeNavbarButton(props: NavbarButtonPresetsProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/RadioNavbarButton/RadioNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Radio from '../../../../Icons/Radio' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | export default function RadioNavbarButton(props: NavbarButtonPresetsProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/TrackNavbarButton/TrackNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Note from '../../../../Icons/Note' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | export default function TrackNavbarButton(props: NavbarButtonPresetsProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/AccountNavbarButton/AccountNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import User from '../../../../Icons/User' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | export default function AccountNavbarButton(props: NavbarButtonPresetsProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /src/stories/Buttons/BlockButtons/MixBlockButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import MixBlockButton from '../../../ui/Buttons/BlockButtons/presets/MixBlockButton/MixBlockButton' 4 | 5 | const meta: Meta = { 6 | component: MixBlockButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/MixRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import MixRoundButton from '../../../ui/Buttons/RoundButtons/presets/MixRoundButton/MixRoundButton' 4 | 5 | const meta: Meta = { 6 | component: MixRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/FavoritesNavbarButton/FavoritesNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Like from '../../../../Icons/Like' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | export default function FavoritesNavbarButton(props: NavbarButtonPresetsProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true 5 | }, 6 | "extends": [ 7 | "plugin:react/recommended", 8 | "standard-with-typescript", 9 | ], 10 | "overrides": [], 11 | "parserOptions": { 12 | "ecmaVersion": "latest", 13 | "sourceType": "module" 14 | }, 15 | "plugins": [ 16 | "react" 17 | ], 18 | "rules": {} 19 | } 20 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/LikeRounButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import LikeRoundButton from '../../../ui/Buttons/RoundButtons/presets/LikeRoundButton/LikeRoundButton' 4 | 5 | const meta: Meta = { 6 | component: LikeRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/presets/PlayBlockButton/PlayBlockButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Play from '../../../../Icons/Play' 3 | import BlockButton from '../../BlockButton/BlockButton' 4 | import { PlayBlokButtonProps } from './types' 5 | 6 | export default function PlayBlockButton({ 7 | onClick, 8 | text 9 | }: PlayBlokButtonProps) { 10 | return 11 | } 12 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/SettingsNavbarButton/SettingsNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Setting from '../../../../Icons/Setting' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | export default function SettingsNavbarButton(props: NavbarButtonPresetsProps) { 7 | return 8 | } 9 | -------------------------------------------------------------------------------- /src/stories/Buttons/BlockButtons/PlayBlockButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import PlayBlockButton from '../../../ui/Buttons/BlockButtons/presets/PlayBlockButton/PlayBlockButton' 4 | 5 | const meta: Meta = { 6 | component: PlayBlockButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/PlayRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import PlayRoundButton from '../../../ui/Buttons/RoundButtons/presets/PlayRoundButton/PlayRoundButton' 4 | 5 | const meta: Meta = { 6 | component: PlayRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/ShareRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import ShareRoundButton from '../../../ui/Buttons/RoundButtons/presets/ShareRoundButton/ShareRoundButton' 4 | 5 | const meta: Meta = { 6 | component: ShareRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/ui/Loader/Loader.tsx: -------------------------------------------------------------------------------- 1 | //@ts-ignore 2 | import styles from './Loader.module.scss' 3 | import React from 'react' 4 | 5 | export default function Loader(): JSX.Element { 6 | return ( 7 |
8 |
9 |
10 | 11 | 12 | 13 | 14 |
15 |
16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/RepeatRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import RepeatRoundButton from '../../../ui/Buttons/RoundButtons/presets/RepeatRoundButton/RepeatRoundButton' 4 | 5 | const meta: Meta = { 6 | component: RepeatRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /storybook-static/index.d.ts: -------------------------------------------------------------------------------- 1 | import Loader from './ui/Loader/Loader'; 2 | import RoundButton from './ui/Buttons/RoundButton/RoundButton'; 3 | import Typography from './ui/Typography/Typography'; 4 | import BlockButton from './ui/Buttons/BlockButton/BlockButton'; 5 | import NavSection from './ui/NavSection/NavSection'; 6 | import ShareButton from './ui/Buttons/ShareButton/ShareButton'; 7 | export { Loader, RoundButton, Typography, BlockButton, NavSection, ShareButton }; 8 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/ReminderRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import ReminderRoundButton from '../../../ui/Buttons/RoundButtons/presets/ReminderRoundButton/ReminderRoundButton' 4 | 5 | const meta: Meta = { 6 | component: ReminderRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/DownArrowRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import DownArrowRoundButton from '../../../ui/Buttons/RoundButtons/presets/DownArrowRoundButton/DownArrowRoundButton' 4 | 5 | const meta: Meta = { 6 | component: DownArrowRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/LeftArrowRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import LeftArrowRoundButton from '../../../ui/Buttons/RoundButtons/presets/LeftArrowRoundButton/LeftArrowRoundButton' 4 | 5 | const meta: Meta = { 6 | component: LeftArrowRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/stories/PromoTitle.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import PromoTitle from '../ui/PromoTitle/PromoTitle' 3 | 4 | const meta: Meta = { 5 | component: PromoTitle 6 | } 7 | 8 | export default meta 9 | type Story = StoryObj 10 | 11 | export const Primary: Story = { 12 | args: { 13 | prePhrase: 'Dive into', 14 | rotatedPhrases: ['emotions', 'feelings', 'pleasure', 'nirvana'] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/stories/Buttons/RoundButtons/RightArrowRoundButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import RightArrowRoundButton from '../../../ui/Buttons/RoundButtons/presets/RightArrowRoundButton/RightArrowRoundButton' 4 | 5 | const meta: Meta = { 6 | component: RightArrowRoundButton 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | export const Main: Story = {} 13 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/PlayRoundButton/PlayRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Play from '../../../../Icons/Play' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function PlayRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/ShareRoundButton/ShareRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Share from '../../../../Icons/Share' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function ShareRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/RepeatRoundButton/RepeatRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Repeat from '../../../../Icons/Repeat' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function RepeatRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/ReminderRoundButton/ReminderRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Reminder from '../../../../Icons/Reminder' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function ReminderRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/presets/LogoNavbarButton/LogoNavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Logo from '../../../../Icons/Logo' 3 | import NavbarButton from '../../NavbarButton/NavbarButton' 4 | import { NavbarButtonPresetsProps } from '../types' 5 | 6 | function LogoNavbarButton(props: NavbarButtonPresetsProps) { 7 | return ( 8 | 15 | ) 16 | } 17 | 18 | export default LogoNavbarButton 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/DownArrowRoundButton/DownArrowRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import DownArrow from '../../../../Icons/DownArrow' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function DownArrowRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/LeftArrowRoundButton/LeftArrowRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import LeftArrow from '../../../../Icons/LeftArrow' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function LeftArrowRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/LikeRoundButton/LikeRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Like from '../../../../Icons/Like' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function LikeRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/RightArrowRoundButton/RightArrowRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import RightArrow from '../../../../Icons/RightArrow' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function RightArrowRoundButton({ 7 | onClick, 8 | size 9 | }: RoundButtonPresetsProps) { 10 | return ( 11 | 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/presets/MixRoundButton/MixRoundButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Mix from '../../../../Icons/Mix' 3 | import RoundButton from '../../RoundButton/RoundButton' 4 | import { RoundButtonPresetsProps } from '../types' 5 | 6 | export default function MixRoundButton({ 7 | onClick, 8 | size, 9 | className 10 | }: RoundButtonPresetsProps) { 11 | return ( 12 | 19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /src/ui/NavSection/NavSection.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { NavSectionProps } from './type' 3 | //@ts-ignore 4 | import styles from './NavSection.module.scss' 5 | 6 | export default function NavSection({ children, isHovered }: NavSectionProps) { 7 | const childrenWithProps = React.Children.map(children, child => { 8 | if (React.isValidElement(child)) { 9 | return React.cloneElement(child, { isHovered } as React.Attributes) 10 | } 11 | return child 12 | }) 13 | return
{childrenWithProps}
14 | } 15 | -------------------------------------------------------------------------------- /src/ui/Icons/Note.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Note = (isActive?: boolean) => ( 4 | 12 | 13 | 14 | ) 15 | 16 | export default Note 17 | -------------------------------------------------------------------------------- /src/stories/Buttons/NavbarButtons/NavbarButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import NavbarButton from '../../../ui/Buttons/NavbarButtons/NavbarButton/NavbarButton' 5 | 6 | const meta: Meta = { 7 | component: NavbarButton, 8 | decorators: [ 9 | Story => ( 10 |
11 | 12 |
13 | ) 14 | ] 15 | } 16 | 17 | export default meta 18 | type Story = StoryObj 19 | 20 | export const Main: Story = {} 21 | -------------------------------------------------------------------------------- /src/stories/Buttons/NavbarButtons/HomeNavbarButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import HomeNavbarButton from '../../../ui/Buttons/NavbarButtons/presets/HomeNavbarButton/HomeNavbarButton' 5 | 6 | const meta: Meta = { 7 | component: HomeNavbarButton, 8 | decorators: [ 9 | Story => ( 10 |
11 | 12 |
13 | ) 14 | ] 15 | } 16 | 17 | export default meta 18 | type Story = StoryObj 19 | 20 | export const Main: Story = {} 21 | -------------------------------------------------------------------------------- /src/stories/Buttons/NavbarButtons/RadioNavbarButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import RadioNavbarButton from '../../../ui/Buttons/NavbarButtons/presets/RadioNavbarButton/RadioNavbarButton' 5 | 6 | const meta: Meta = { 7 | component: RadioNavbarButton, 8 | decorators: [ 9 | Story => ( 10 |
11 | 12 |
13 | ) 14 | ] 15 | } 16 | 17 | export default meta 18 | type Story = StoryObj 19 | 20 | export const Main: Story = {} 21 | -------------------------------------------------------------------------------- /src/stories/Buttons/NavbarButtons/AccountNavbarButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import AccountNavbarButton from '../../../ui/Buttons/NavbarButtons/presets/AccountNavbarButton/AccountNavbarButton' 5 | 6 | const meta: Meta = { 7 | component: AccountNavbarButton, 8 | decorators: [ 9 | Story => ( 10 |
11 | 12 |
13 | ) 14 | ] 15 | } 16 | 17 | export default meta 18 | type Story = StoryObj 19 | 20 | export const Main: Story = {} 21 | -------------------------------------------------------------------------------- /src/stories/NavSectrion.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import NavSection from '../ui/NavSection/NavSection' 4 | 5 | const meta: Meta = { 6 | component: NavSection, 7 | decorators: [(Story) =>
], 8 | } 9 | 10 | export default meta 11 | type Story = StoryObj 12 | 13 | export const Primary: Story = { 14 | args: { 15 | children: ( 16 | <> 17 |
NavButton
18 |
NavButton
19 |
NavButton
20 |
NavButton
21 | 22 | ) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/stories/Buttons/NavbarButtons/SettingsNavbarButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import SettingsNavbarButton from '../../../ui/Buttons/NavbarButtons/presets/SettingsNavbarButton/SettingsNavbarButton' 5 | 6 | const meta: Meta = { 7 | component: SettingsNavbarButton, 8 | decorators: [ 9 | Story => ( 10 |
11 | 12 |
13 | ) 14 | ] 15 | } 16 | 17 | export default meta 18 | type Story = StoryObj 19 | 20 | export const Main: Story = {} 21 | -------------------------------------------------------------------------------- /src/stories/Buttons/NavbarButtons/FavoritesNavbarButton.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import FavoritesNavbarButton from '../../../ui/Buttons/NavbarButtons/presets/FavoritesNavbarButton/FavoritesNavbarButton' 5 | 6 | const meta: Meta = { 7 | component: FavoritesNavbarButton, 8 | decorators: [ 9 | Story => ( 10 |
11 | 12 |
13 | ) 14 | ] 15 | } 16 | 17 | export default meta 18 | type Story = StoryObj 19 | 20 | export const Main: Story = {} 21 | -------------------------------------------------------------------------------- /src/stories/Card.stories.tsx: -------------------------------------------------------------------------------- 1 | import { Meta, StoryObj } from '@storybook/react' 2 | import React from 'react' 3 | 4 | import Card from '../ui/Card/Card' 5 | 6 | const DivDecorator = storyFn => ( 7 |
8 | {storyFn()} 9 |
10 | ) 11 | 12 | const meta: Meta = { 13 | component: Card, 14 | decorators: [DivDecorator], 15 | } 16 | 17 | 18 | 19 | export default meta 20 | type Story = StoryObj 21 | 22 | export const MeteoraCard: Story = { 23 | args: { 24 | srcImg: '/img/Meteora.jpg', 25 | title: 'Meteora', 26 | artist: 'Linkin park' 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/stories/Typography.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react' 2 | 3 | import Typography from '../ui/Typography/Typography' 4 | 5 | const meta: Meta = { 6 | component: Typography 7 | } 8 | 9 | export default meta 10 | type Story = StoryObj 11 | 12 | 13 | 14 | export const Regular: Story = { 15 | args: { 16 | text: 'Typography', 17 | } 18 | } 19 | 20 | export const Medium: Story = { 21 | args: { 22 | text: 'Typography', 23 | weight: 'medium' 24 | } 25 | } 26 | 27 | export const SemiBold: Story = { 28 | args: { 29 | text: 'Typography', 30 | weight: 'semibold' 31 | } 32 | } -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/ThemeSwitcher/ThemeSwitcher.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | import styles from './ThemeSwitcher.module.scss' 4 | import { ThemeSwitcherProps } from './types' 5 | 6 | export default function ThemeSwitcher({ 7 | theme, 8 | changeTheme, 9 | checked 10 | }: ThemeSwitcherProps) { 11 | return ( 12 | 23 | ) 24 | } 25 | -------------------------------------------------------------------------------- /storybook-static/350.01508b97.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * isobject 3 | * 4 | * Copyright (c) 2014-2017, Jon Schlinkert. 5 | * Released under the MIT License. 6 | */ 7 | 8 | /** 9 | * @license 10 | * Lodash (Custom Build) 11 | * Build: `lodash modularize exports="es" -o ./` 12 | * Copyright OpenJS Foundation and other contributors 13 | * Released under MIT license 14 | * Based on Underscore.js 1.8.3 15 | * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 16 | */ 17 | -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/BlockButton/BlockButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Typography from '../../../Typography/Typography' 3 | import styles from './BlockButton.module.scss' 4 | import { IBlockButtonProps } from './types' 5 | 6 | export default function BlockButton({ 7 | text, 8 | icon, 9 | onClick, 10 | ...rest 11 | }: IBlockButtonProps) { 12 | return ( 13 | 22 | ) 23 | } 24 | -------------------------------------------------------------------------------- /src/ui/PromoTitle/PromoTitle.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { PromoTitleProps } from './types' 3 | 4 | import styles from './PromoTitle.module.scss' 5 | 6 | export default function PromoTitle({ 7 | prePhrase, 8 | rotatedPhrases 9 | }: PromoTitleProps) { 10 | return ( 11 |
12 |

{prePhrase}

13 | 14 |
    15 | {rotatedPhrases.map(phrase => ( 16 |
  • 20 | {phrase} 21 |
  • 22 | ))} 23 |
24 |
25 | ) 26 | } 27 | -------------------------------------------------------------------------------- /storybook-static/984.df1c629b.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkradio_app_uikit=self.webpackChunkradio_app_uikit||[]).push([[984],{"./node_modules/@storybook/components/dist/WithTooltip-4HIR6TLV.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{WithToolTipState:()=>_chunk_7V7F47IN_mjs__WEBPACK_IMPORTED_MODULE_0__.WA,WithTooltip:()=>_chunk_7V7F47IN_mjs__WEBPACK_IMPORTED_MODULE_0__.WA,WithTooltipPure:()=>_chunk_7V7F47IN_mjs__WEBPACK_IMPORTED_MODULE_0__.DG});var _chunk_7V7F47IN_mjs__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/components/dist/chunk-7V7F47IN.mjs")}}]); -------------------------------------------------------------------------------- /src/ui/Buttons/BlockButtons/BlockButton/BlockButton.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../constants/colors.scss'; 2 | 3 | .BlockButton { 4 | background-color: $primary-grey; 5 | opacity: 0.5; 6 | display: flex; 7 | justify-content: center; 8 | align-items: center; 9 | padding: 0.7em 2em; 10 | gap: 10px; 11 | width: fit-content; 12 | border: none; 13 | border-radius: 5px; 14 | transition: all 0.2s ease-in-out; 15 | } 16 | 17 | .IconContainer { 18 | width: 2em; 19 | height: 2em; 20 | } 21 | 22 | .BlockButton:hover { 23 | background-color: $primary-violet; 24 | box-shadow: 25 | 0 0 5px $primary-violet, 26 | 0 0 25px $primary-violet, 27 | 0 0 50px $primary-violet; 28 | opacity: 1; 29 | } 30 | 31 | 32 | -------------------------------------------------------------------------------- /storybook-static/296.1c9158ee.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkradio_app_uikit=self.webpackChunkradio_app_uikit||[]).push([[296],{"./node_modules/@storybook/components/dist/syntaxhighlighter-NMPM6SWI.mjs":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{SyntaxHighlighter:()=>_chunk_V3JBNODJ_mjs__WEBPACK_IMPORTED_MODULE_0__.d3,createCopyToClipboardFunction:()=>_chunk_V3JBNODJ_mjs__WEBPACK_IMPORTED_MODULE_0__.xV,default:()=>_chunk_V3JBNODJ_mjs__WEBPACK_IMPORTED_MODULE_0__.qG});var _chunk_V3JBNODJ_mjs__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/@storybook/components/dist/chunk-V3JBNODJ.mjs")}}]); -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/NavbarButton/NavbarButton.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../constants/colors.scss'; 2 | 3 | .navbarButton { 4 | overflow: hidden; 5 | background-color: transparent; 6 | display: flex; 7 | align-items: center; 8 | width: 100%; 9 | transition: transform 0.5s ease-in-out; 10 | } 11 | 12 | .navbarButtonActive { 13 | border-right: 2px solid $primary-violet; 14 | } 15 | 16 | .iconContainer { 17 | margin: 10px; 18 | margin-left: 20px; 19 | width: 30px; 20 | height: 30px; 21 | } 22 | 23 | .iconContainer svg { 24 | width: 25px; 25 | height: 25px; 26 | } 27 | 28 | .navbarButton:hover { 29 | background-color: #ADADAE; 30 | } 31 | 32 | .navbarButton span { 33 | color: $primary-grey; 34 | } 35 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/RoundButton/RoundButton.tsx: -------------------------------------------------------------------------------- 1 | //@ts-ignore 2 | import styles from './RoundButton.module.scss' 3 | import React from 'react' 4 | import { RoundButtonProps } from './types' 5 | 6 | export default function RoundButton({ 7 | icon, 8 | color, 9 | onClick, 10 | size, 11 | className, 12 | ariaLabel 13 | }: RoundButtonProps) { 14 | return ( 15 | 27 | ) 28 | } 29 | -------------------------------------------------------------------------------- /src/ui/Navbar/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { INavbarProps } from './types' 3 | //@ts-ignore 4 | import styles from './Navbar.module.scss' 5 | 6 | function Navbar({ children, isHovered, setIsHovered }: INavbarProps) { 7 | const childrenWithProps = React.Children.map(children, child => { 8 | if (React.isValidElement(child)) { 9 | return React.cloneElement(child, { isHovered } as React.Attributes) 10 | } 11 | return child 12 | }) 13 | 14 | return ( 15 |
setIsHovered(true)} 17 | onMouseLeave={() => setIsHovered(false)} 18 | className={styles.navbar} 19 | > 20 | {childrenWithProps} 21 |
22 | ) 23 | } 24 | 25 | export default Navbar 26 | -------------------------------------------------------------------------------- /src/ui/Card/Card.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../constants/colors.scss'; 2 | 3 | .card img { 4 | border: solid transparent 1px; 5 | border-top-right-radius: 14px; 6 | border-bottom-left-radius: 14px; 7 | transition: transform 0.5s ease; 8 | width: 100%; 9 | height: 100%; 10 | } 11 | 12 | .card { 13 | transition: transform 0.5s ease; 14 | display: flex; 15 | align-items: center; 16 | flex-direction: column; 17 | justify-content: space-between; 18 | gap: 10px; 19 | width: 18%; 20 | } 21 | 22 | .card :hover { 23 | transform: scale(1.1); 24 | } 25 | 26 | @media screen and (max-width: 479px) { 27 | .card span { 28 | font-size: 0.3em !important; 29 | } 30 | .card img { 31 | width: 4em; 32 | height: 4em; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /.storybook/main.ts: -------------------------------------------------------------------------------- 1 | import type { StorybookConfig } from '@storybook/react-webpack5' 2 | 3 | const config: StorybookConfig = { 4 | stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], 5 | staticDirs: ['../public'], 6 | addons: [ 7 | '@storybook/addon-links', 8 | '@storybook/addon-essentials', 9 | '@storybook/addon-onboarding', 10 | '@storybook/addon-interactions', 11 | { 12 | name: '@storybook/preset-scss', 13 | options: { 14 | cssLoaderOptions: { 15 | modules: true, 16 | sourceMap: true 17 | } 18 | } 19 | } 20 | ], 21 | framework: { 22 | name: '@storybook/react-webpack5', 23 | options: {} 24 | }, 25 | docs: { 26 | autodocs: true, 27 | } 28 | } 29 | export default config 30 | -------------------------------------------------------------------------------- /.github/workflows/github-actions-demo.yml: -------------------------------------------------------------------------------- 1 | name: onPush 2 | run-name: Actions on push 3 | on: [push] 4 | jobs: 5 | init: 6 | runs-on: ubuntu-latest 7 | strategy: 8 | matrix: 9 | node-version: [21.x] 10 | steps: 11 | - uses: actions/checkout@v3 12 | - name: Staring Node.js ${{matrix.node-version}} 13 | uses: actions/setup-node@v3 14 | with: 15 | node-version: ${{matrix.node-version}} 16 | - name: install modules 17 | run: npm install 18 | - name: install prettier 19 | run: npm install --global prettier 20 | - name: formatting code 21 | run: prettier . -w -------------------------------------------------------------------------------- /src/ui/Icons/Repeat.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Repeat = ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 20 | 21 | 22 | ) 23 | 24 | export default Repeat 25 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-controls-1/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | Bundled license information: 2 | 3 | telejson/dist/index.mjs: 4 | /*! 5 | * isobject 6 | * 7 | * Copyright (c) 2014-2017, Jon Schlinkert. 8 | * Released under the MIT License. 9 | */ 10 | /** 11 | * @license 12 | * Lodash (Custom Build) 13 | * Build: `lodash modularize exports="es" -o ./` 14 | * Copyright OpenJS Foundation and other contributors 15 | * Released under MIT license 16 | * Based on Underscore.js 1.8.3 17 | * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 18 | */ 19 | -------------------------------------------------------------------------------- /src/ui/Icons/User.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const User = (isActive?: boolean) => ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 20 | 21 | 22 | ) 23 | 24 | export default User 25 | -------------------------------------------------------------------------------- /src/ui/Typography/Typography.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | //@ts-ignore 3 | import style from './Typography.module.scss' 4 | import { ITypographyProps } from './types' 5 | 6 | export default function Typography({ 7 | text, 8 | fontSize, 9 | weight, 10 | color, 11 | textAlign 12 | }: ITypographyProps) { 13 | const fontWeight = (() => { 14 | switch (weight?.toLowerCase()) { 15 | case 'regular': 16 | return 400 17 | case 'medium': 18 | return 500 19 | case 'semibold': 20 | return 600 21 | default: 22 | return 400 23 | } 24 | })() 25 | 26 | return ( 27 | 36 | {text} 37 | 38 | ) 39 | } 40 | -------------------------------------------------------------------------------- /src/ui/Buttons/RoundButtons/RoundButton/RoundButton.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../constants/bordeRadius.scss'; 2 | @import '../../../../constants/colors.scss'; 3 | 4 | .RoundButton { 5 | border-radius: $round; 6 | border-color: transparent; 7 | background-color: $primary-grey; 8 | opacity: 0.5; 9 | height: 50px; 10 | width: 50px; 11 | transition: transform 0.3s ease; 12 | display: flex; 13 | align-items: center; 14 | justify-content: center; 15 | } 16 | .RoundButton:hover { 17 | box-shadow: 18 | 0 0 5px $primary-violet, 19 | 0 0 25px $primary-violet, 20 | 0 0 50px $primary-violet; 21 | background-color: $primary-violet; 22 | opacity: 1; 23 | } 24 | 25 | .IconContainer { 26 | transform: scale(1.1); 27 | width: 80%; 28 | height: 80%; 29 | display: flex; 30 | align-items: center; 31 | justify-content: center; 32 | } 33 | -------------------------------------------------------------------------------- /storybook-static/sb-common-assets/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Nunito Sans'; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-display: swap; 6 | src: url('./nunito-sans-regular.woff2') format('woff2'); 7 | } 8 | 9 | @font-face { 10 | font-family: 'Nunito Sans'; 11 | font-style: italic; 12 | font-weight: 400; 13 | font-display: swap; 14 | src: url('./nunito-sans-italic.woff2') format('woff2'); 15 | } 16 | 17 | @font-face { 18 | font-family: 'Nunito Sans'; 19 | font-style: normal; 20 | font-weight: 700; 21 | font-display: swap; 22 | src: url('./nunito-sans-bold.woff2') format('woff2'); 23 | } 24 | 25 | @font-face { 26 | font-family: 'Nunito Sans'; 27 | font-style: italic; 28 | font-weight: 700; 29 | font-display: swap; 30 | src: url('./nunito-sans-bold-italic.woff2') format('woff2'); 31 | } 32 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/links-0/manager-bundle.js: -------------------------------------------------------------------------------- 1 | try{ 2 | var e="storybook/links";var a={NAVIGATE:`${e}/navigate`,REQUEST:`${e}/request`,RECEIVE:`${e}/receive`};var O=__STORYBOOKAPI__,{ActiveTabs:b,Consumer:p,ManagerContext:k,Provider:I,addons:n,combineParameters:g,controlOrMetaKey:v,controlOrMetaSymbol:M,eventMatchesShortcut:P,eventToShortcut:R,isMacLike:C,isShortcutTaken:D,keyToSymbol:f,merge:x,mockChannel:K,optionOrAltSymbol:G,shortcutMatchesShortcut:N,shortcutToHumanString:V,types:Y,useAddonState:$,useArgTypes:B,useArgs:Q,useChannel:U,useGlobalTypes:q,useGlobals:H,useParameter:L,useSharedState:j,useStoryPrepared:w,useStorybookApi:z,useStorybookState:F}=__STORYBOOKAPI__;n.register(e,t=>{t.on(a.REQUEST,({kind:u,name:S})=>{let c=t.storyId(u,S);t.emit(a.RECEIVE,c)})}); 3 | }catch(e){ console.error("[Storybook] One of your manager-entries failed: " + import.meta.url, e); } 4 | -------------------------------------------------------------------------------- /src/ui/Buttons/NavbarButtons/NavbarButton/NavbarButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Typography from '../../../Typography/Typography' 3 | //@ts-ignore 4 | import styles from './NavbarButton.module.scss' 5 | import { NavbarButtonProps } from './types' 6 | 7 | export default function NavbarButton({ 8 | text, 9 | icon, 10 | isActive, 11 | isHovered, 12 | color, 13 | weight, 14 | onClick 15 | }: NavbarButtonProps) { 16 | return ( 17 |
onClick()} 24 | aria-label={text} 25 | > 26 |
{icon(isActive)}
27 | {isHovered ? ( 28 | 29 | ) : null} 30 |
31 | ) 32 | } 33 | -------------------------------------------------------------------------------- /src/ui/Icons/DownArrow.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const DownArrow = ( 4 | 9 | 10 | 15 | 16 | {' '} 17 | 22 | {' '} 23 | {' '} 29 | {' '} 30 | 31 | 32 | ) 33 | 34 | export default DownArrow 35 | -------------------------------------------------------------------------------- /src/ui/Icons/LeftArrow.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const LeftArrow = ( 4 | 9 | 10 | 15 | 16 | {' '} 17 | 22 | {' '} 23 | {' '} 29 | {' '} 30 | 31 | 32 | ) 33 | 34 | export default LeftArrow 35 | -------------------------------------------------------------------------------- /src/ui/Icons/RightArrow.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const RightArrow = ( 4 | 9 | 10 | 15 | 16 | {' '} 17 | 22 | {' '} 23 | {' '} 29 | {' '} 30 | 31 | 32 | ) 33 | 34 | export default RightArrow 35 | -------------------------------------------------------------------------------- /storybook-static/project.json: -------------------------------------------------------------------------------- 1 | {"generatedAt":1697975510321,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":true,"refCount":0,"packageManager":{"type":"npm","version":"9.5.0"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/react-webpack5","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/react","storybookVersion":"7.5.1","storybookVersionSpecifier":"^7.2.0","language":"typescript","storybookPackages":{"@storybook/blocks":{"version":"7.5.1"},"@storybook/react":{"version":"7.5.1"},"@storybook/react-webpack5":{"version":"7.5.1"},"@storybook/testing-library":{"version":"0.2.2"},"eslint-plugin-storybook":{"version":"0.6.15"},"storybook":{"version":"7.5.1"}},"addons":{"@storybook/addon-links":{"version":"7.5.1"},"@storybook/addon-essentials":{"version":"7.5.1"},"@storybook/addon-onboarding":{"version":"1.0.8"},"@storybook/addon-interactions":{"version":"7.5.1"},"@storybook/preset-scss":{"version":"1.0.3"}}} 2 | -------------------------------------------------------------------------------- /src/ui/Icons/Play.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Play = ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 19 | 20 | 21 | ) 22 | 23 | export default Play 24 | -------------------------------------------------------------------------------- /src/ui/Card/Card.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Typography from '../Typography/Typography' 3 | import { ICardProps } from './types' 4 | //@ts-ignore 5 | import style from './Card.module.scss' 6 | 7 | export default function Card({ srcImg, title, subTitle, onClick }: ICardProps) { 8 | return ( 9 |
10 | {title} 18 | {title ? ( 19 | 20 ? `${title.slice(0, 20)}...` : title 22 | } 23 | fontSize="1.5em" 24 | weight="semibold" 25 | /> 26 | ) : null} 27 | {subTitle ? ( 28 | 10 31 | ? `${subTitle.slice(0, 10)}...` 32 | : subTitle 33 | } 34 | fontSize="1em" 35 | weight="regular" 36 | /> 37 | ) : null} 38 |
39 | ) 40 | } 41 | -------------------------------------------------------------------------------- /src/ui/Icons/Like.tsx: -------------------------------------------------------------------------------- 1 | import React, { SVGProps } from 'react' 2 | 3 | const Like = (isActive: boolean, rest: any) => ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 23 | 24 | 25 | ) 26 | 27 | export default Like 28 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/PlayButton/PlayButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import styles from './PlayButton.module.scss' 3 | import { PlayButtonProps } from './types' 4 | 5 | export default function PlayButton({ isPlaying, onClick }: PlayButtonProps) { 6 | return ( 7 | 30 | ) 31 | } 32 | -------------------------------------------------------------------------------- /src/ui/Icons/Home.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Home = (isActive?: boolean) => ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | 14 | {' '} 15 | {' '} 16 | {' '} 22 | {' '} 23 | 24 | {' '} 25 | 26 | {' '} 27 | {' '} 28 | {' '} 29 | {' '} 30 | 31 | 32 | ) 33 | 34 | export default Home 35 | -------------------------------------------------------------------------------- /src/ui/Icons/Reminder.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Reminder = ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 20 | 21 | 22 | ) 23 | 24 | export default Reminder 25 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/PlayButton/PlayButton.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../constants/colors.scss'; 2 | 3 | .container { 4 | --size: 30px; 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | position: relative; 9 | cursor: pointer; 10 | font-size: var(--size); 11 | user-select: none; 12 | fill: $primary-grey; 13 | background-color: transparent; 14 | border: none; 15 | } 16 | 17 | .container:hover { 18 | fill: $primary-violet; 19 | } 20 | 21 | .container .play { 22 | position: absolute; 23 | animation: keyframes-fill 0.5s; 24 | } 25 | 26 | .container .pause { 27 | position: absolute; 28 | display: none; 29 | animation: keyframes-fill 0.5s; 30 | } 31 | 32 | /* ------ On check event ------ */ 33 | .container input:checked ~ .play { 34 | display: none; 35 | } 36 | 37 | .container input:checked ~ .pause { 38 | display: block; 39 | } 40 | 41 | /* ------ Hide the default checkbox ------ */ 42 | .container input { 43 | position: absolute; 44 | opacity: 0; 45 | cursor: pointer; 46 | height: 0; 47 | width: 0; 48 | } 49 | 50 | /* ------ Animation ------ */ 51 | @keyframes keyframes-fill { 52 | 0% { 53 | transform: rotate(-180deg) scale(0); 54 | opacity: 0; 55 | } 56 | 57 | 50% { 58 | transform: rotate(-10deg) scale(1.2); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /storybook-static/341.3cbc6f24.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | "use strict";(self.webpackChunkradio_app_uikit=self.webpackChunkradio_app_uikit||[]).push([[341],{"./node_modules/@mdx-js/react/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{MDXContext:()=>MDXContext,MDXProvider:()=>MDXProvider,useMDXComponents:()=>useMDXComponents,withMDXComponents:()=>withMDXComponents});var react=__webpack_require__("./node_modules/react/index.js");const MDXContext=react.createContext({});function withMDXComponents(Component){return function boundMDXComponent(props){const allComponents=useMDXComponents(props.components);return react.createElement(Component,{...props,allComponents})}}function useMDXComponents(components){const contextComponents=react.useContext(MDXContext);return react.useMemo((()=>"function"==typeof components?components(contextComponents):{...contextComponents,...components}),[contextComponents,components])}const emptyObject={};function MDXProvider({components,children,disableParentContext}){let allComponents;return allComponents=disableParentContext?"function"==typeof components?components({}):components||emptyObject:useMDXComponents(components),react.createElement(MDXContext.Provider,{value:allComponents},children)}}}]); -------------------------------------------------------------------------------- /storybook-static/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/ui/Icons/Share.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Share = ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 18 | {' '} 24 | {' '} 30 | {' '} 35 | {' '} 40 | 41 | 42 | ) 43 | 44 | export default Share 45 | -------------------------------------------------------------------------------- /storybook-static/sb-preview/globals.js: -------------------------------------------------------------------------------- 1 | "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var globals_exports={};__export(globals_exports,{globals:()=>globals});module.exports=__toCommonJS(globals_exports);var globals={"@storybook/addons":"__STORYBOOK_MODULE_ADDONS__","@storybook/global":"__STORYBOOK_MODULE_GLOBAL__","@storybook/channel-postmessage":"__STORYBOOK_MODULE_CHANNEL_POSTMESSAGE__","@storybook/channel-websocket":"__STORYBOOK_MODULE_CHANNEL_WEBSOCKET__","@storybook/channels":"__STORYBOOK_MODULE_CHANNELS__","@storybook/client-api":"__STORYBOOK_MODULE_CLIENT_API__","@storybook/client-logger":"__STORYBOOK_MODULE_CLIENT_LOGGER__","@storybook/core-client":"__STORYBOOK_MODULE_CORE_CLIENT__","@storybook/core-events":"__STORYBOOK_MODULE_CORE_EVENTS__","@storybook/preview-web":"__STORYBOOK_MODULE_PREVIEW_WEB__","@storybook/preview-api":"__STORYBOOK_MODULE_PREVIEW_API__","@storybook/store":"__STORYBOOK_MODULE_STORE__"};0&&(module.exports={globals}); 2 | -------------------------------------------------------------------------------- /storybook-static/102.65c19aa0.iframe.bundle.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 | * is-plain-object 10 | * 11 | * Copyright (c) 2014-2017, Jon Schlinkert. 12 | * Released under the MIT License. 13 | */ 14 | 15 | /** 16 | * @license React 17 | * react-dom.production.min.js 18 | * 19 | * Copyright (c) Facebook, Inc. and its affiliates. 20 | * 21 | * This source code is licensed under the MIT license found in the 22 | * LICENSE file in the root directory of this source tree. 23 | */ 24 | 25 | /** 26 | * @license React 27 | * react-is.production.min.js 28 | * 29 | * Copyright (c) Facebook, Inc. and its affiliates. 30 | * 31 | * This source code is licensed under the MIT license found in the 32 | * LICENSE file in the root directory of this source tree. 33 | */ 34 | 35 | /** 36 | * @license React 37 | * react.production.min.js 38 | * 39 | * Copyright (c) Facebook, Inc. and its affiliates. 40 | * 41 | * This source code is licensed under the MIT license found in the 42 | * LICENSE file in the root directory of this source tree. 43 | */ 44 | 45 | /** 46 | * @license React 47 | * scheduler.production.min.js 48 | * 49 | * Copyright (c) Facebook, Inc. and its affiliates. 50 | * 51 | * This source code is licensed under the MIT license found in the 52 | * LICENSE file in the root directory of this source tree. 53 | */ 54 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/ThemeSwitcher/ThemeSwitcher.module.scss: -------------------------------------------------------------------------------- 1 | $width-of-switch: 3.5em; 2 | $height-of-switch: 2em; 3 | $size-of-icon: 1.4em; 4 | $slider-offset: 0.3em; 5 | 6 | .switch { 7 | display: block; 8 | position: relative; 9 | width: $width-of-switch; 10 | height: $height-of-switch; 11 | 12 | --width-of-switch: #{$width-of-switch}; 13 | --height-of-switch: #{$height-of-switch}; 14 | --size-of-icon: #{$size-of-icon}; 15 | --slider-offset: #{$slider-offset}; 16 | } 17 | 18 | .input { 19 | opacity: 0; 20 | width: 0; 21 | height: 0; 22 | } 23 | 24 | .slider { 25 | position: absolute; 26 | top: 0; 27 | left: 0; 28 | right: 0; 29 | bottom: 0; 30 | background-color: #f3f3f3; 31 | transition: 0.4s; 32 | border-radius: 30px; 33 | 34 | &::before { 35 | position: absolute; 36 | content: ''; 37 | height: $size-of-icon; 38 | width: $size-of-icon; 39 | border-radius: 20px; 40 | left: $slider-offset; 41 | top: 50%; 42 | transform: translateY(-50%); 43 | background: linear-gradient(40deg, #bb0310, #b19ff9 70%); 44 | transition: 0.4s; 45 | 46 | --size-of-icon: #{$size-of-icon}; 47 | --slider-offset: #{$slider-offset}; 48 | } 49 | } 50 | 51 | .input:checked + .slider { 52 | background-color: #2a2630; 53 | 54 | &::before { 55 | left: calc(100% - (#{$size-of-icon} + #{$slider-offset})); 56 | background: #2a2630; 57 | 58 | box-shadow: 59 | inset -3px -2px 5px -2px #6360ff, 60 | inset -10px -4px 0 0 #5ee9bf; 61 | 62 | --size-of-icon: #{$size-of-icon}; 63 | --slider-offset: #{$slider-offset}; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/ui/Icons/Volume.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Volume = ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 20 | 21 | 22 | ) 23 | 24 | export default Volume 25 | -------------------------------------------------------------------------------- /src/ui/Loader/Loader.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../constants/colors.scss'; 2 | 3 | .loaderContainer { 4 | display: flex; 5 | align-items: center; 6 | justify-content: center; 7 | background-color: transparent; 8 | min-height: 100vh; 9 | min-width: 100vw; 10 | } 11 | 12 | .loader { 13 | position: relative; 14 | width: 300px; 15 | height: 300px; 16 | border-radius: 50%; 17 | background: linear-gradient( 18 | $primary-green, 19 | $primary-blue, 20 | $primary-violet, 21 | $primary-pink 22 | ); 23 | display: flex; 24 | align-items: center; 25 | justify-content: center; 26 | animation: animate 0.5s linear infinite; 27 | } 28 | 29 | @keyframes animate { 30 | 0% { 31 | transform: rotate(0deg); 32 | } 33 | 100% { 34 | transform: rotate(360deg); 35 | } 36 | } 37 | .loader span { 38 | position: absolute; 39 | width: 100%; 40 | height: 100%; 41 | border-radius: 50%; 42 | background: linear-gradient( 43 | $primary-green, 44 | $primary-blue, 45 | $primary-violet, 46 | $primary-pink 47 | ); 48 | } 49 | 50 | .loader span:nth-child(1) { 51 | filter: blur(5px); 52 | } 53 | 54 | .loader span:nth-child(2) { 55 | filter: blur(10px); 56 | } 57 | 58 | .loader span:nth-child(3) { 59 | filter: blur(20px); 60 | } 61 | 62 | .loader span:nth-child(4) { 63 | filter: blur(40px); 64 | } 65 | 66 | .loader span:nth-child(5) { 67 | filter: blur(80px); 68 | } 69 | 70 | .loader span:nth-child(6) { 71 | filter: blur(160px); 72 | } 73 | 74 | .loader span:nth-child(7) { 75 | filter: blur(320px); 76 | } 77 | 78 | #innerCircle { 79 | width: 80%; 80 | height: 80%; 81 | z-index: 1; 82 | border-radius: 50%; 83 | background-color: $primary-white; 84 | } 85 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/LikeButton/LikeButton.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../constants/colors.scss'; 2 | 3 | .heartContainer { 4 | position: relative; 5 | width: 25px; 6 | height: 25px; 7 | transition: 0.3s; 8 | margin: 0 10px; 9 | 10 | .checkbox { 11 | position: absolute; 12 | width: 100%; 13 | height: 100%; 14 | opacity: 0; 15 | z-index: 20; 16 | cursor: pointer; 17 | } 18 | 19 | .svgContainer { 20 | width: 100%; 21 | height: 100%; 22 | display: flex; 23 | justify-content: center; 24 | align-items: center; 25 | 26 | .svgOutline, 27 | .svgFilled { 28 | fill: $primary-violet; 29 | position: absolute; 30 | } 31 | 32 | .svgFilled { 33 | animation: svgFilled 1s; 34 | display: none; 35 | } 36 | 37 | .svgCelebrate { 38 | position: absolute; 39 | animation: svgCelebrate 0.5s; 40 | animation-fill-mode: forwards; 41 | display: none; 42 | stroke: $primary-violet; 43 | fill: $primary-violet; 44 | stroke-width: 2px; 45 | } 46 | } 47 | 48 | .checkbox:checked ~ .svgContainer .svgFilled { 49 | display: block; 50 | } 51 | 52 | .checkbox:checked ~ .svgContainer .svgCelebrate { 53 | display: block; 54 | } 55 | } 56 | 57 | @keyframes svgFilled { 58 | 0% { 59 | transform: scale(0); 60 | } 61 | 62 | 25% { 63 | transform: scale(1.2); 64 | } 65 | 66 | 50% { 67 | transform: scale(1); 68 | filter: brightness(1.5); 69 | } 70 | } 71 | 72 | @keyframes svgCelebrate { 73 | 0% { 74 | transform: scale(0); 75 | } 76 | 77 | 50% { 78 | opacity: 1; 79 | filter: brightness(1.5); 80 | } 81 | 82 | 100% { 83 | transform: scale(1.4); 84 | opacity: 0; 85 | display: none; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/ShareButton/ShareButton.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../../../constants/colors.scss'; 2 | 3 | .shareButtonContainer { 4 | margin: 0 5px; 5 | } 6 | 7 | .buttons { 8 | position: relative; 9 | display: grid; 10 | place-items: center; 11 | height: fit-content; 12 | width: fit-content; 13 | transition: 0.3s; 14 | border-radius: 50%; 15 | 16 | &:hover { 17 | padding: 60px; 18 | } 19 | } 20 | 21 | .mainButton { 22 | position: relative; 23 | display: grid; 24 | place-items: center; 25 | padding: 5px; 26 | border: none; 27 | background: transparent; 28 | border-radius: 50%; 29 | transition: 0.2s; 30 | z-index: 100; 31 | } 32 | 33 | .button { 34 | position: absolute; 35 | display: grid; 36 | place-items: center; 37 | padding: 5px; 38 | border: none; 39 | background: transparent; 40 | transition: 0.3s; 41 | border-radius: 50%; 42 | visibility: hidden; 43 | } 44 | 45 | .buttons:hover .button { 46 | visibility: visible; 47 | } 48 | 49 | .vkButton:hover svg { 50 | fill: #0093ff; 51 | } 52 | 53 | .buttons:hover .vkButton { 54 | translate: 50px 0px; 55 | } 56 | 57 | .twitterButton:hover svg { 58 | fill: #0093ff; 59 | } 60 | 61 | .buttons:hover .twitterButton { 62 | translate: 37px -37px; 63 | } 64 | 65 | .facebookButton:hover svg { 66 | fill: #0093ff; 67 | } 68 | 69 | .buttons:hover .facebookButton { 70 | translate: 0px -50px; 71 | } 72 | 73 | .telegramButton:hover svg { 74 | fill: #0093ff; 75 | } 76 | 77 | .buttons:hover .telegramButton { 78 | translate: -37px -37px; 79 | } 80 | 81 | .whatsappButton:hover svg { 82 | fill: #25d366; 83 | } 84 | 85 | .buttons:hover .whatsappButton { 86 | translate: -50px 0px; 87 | } 88 | -------------------------------------------------------------------------------- /src/ui/PromoTitle/PromoTitle.module.scss: -------------------------------------------------------------------------------- 1 | @import '../../constants/colors.scss'; 2 | 3 | 4 | 5 | 6 | .container { 7 | font-weight: 600; 8 | overflow: hidden; 9 | height: 40px; 10 | padding: 0 40px; 11 | font-family: 'Roboto', sans-serif; 12 | font-size: 2em; 13 | line-height: 40px; 14 | color: $primary-white; 15 | 16 | } 17 | 18 | .contentContainerText { 19 | display: inline; 20 | float: left; 21 | margin: 0; 22 | } 23 | 24 | .contentContainerList { 25 | margin-top: 0; 26 | padding-left: 4.5em; 27 | text-align: left; 28 | list-style: none; 29 | animation-name: change; 30 | animation-duration: 10s; 31 | animation-iteration-count: infinite; 32 | } 33 | 34 | .contentContainerListItem { 35 | line-height: 40px; 36 | margin: 0; 37 | } 38 | 39 | @keyframes opacity { 40 | 0% { 41 | opacity: 0; 42 | } 43 | 100% { 44 | opacity: 0; 45 | } 46 | 47 | 50% { 48 | opacity: 1; 49 | } 50 | } 51 | 52 | @keyframes change { 53 | 0% { 54 | transform: translate3d(0, 0, 0); 55 | } 56 | 13% { 57 | transform: translate3d(0, 0, 0); 58 | } 59 | 100% { 60 | transform: translate3d(0, 0, 0); 61 | } 62 | 63 | 17% { 64 | transform: translate3d(0, -25%, 0); 65 | } 66 | 29% { 67 | transform: translate3d(0, -25%, 0); 68 | } 69 | 70 | 33% { 71 | transform: translate3d(0, -50%, 0); 72 | } 73 | 46% { 74 | transform: translate3d(0, -50%, 0); 75 | } 76 | 77 | 50% { 78 | transform: translate3d(0, -75%, 0); 79 | } 80 | 62% { 81 | transform: translate3d(0, -75%, 0); 82 | } 83 | 84 | 67% { 85 | transform: translate3d(0, -50%, 0); 86 | } 87 | 79% { 88 | transform: translate3d(0, -50%, 0); 89 | } 90 | 91 | 83% { 92 | transform: translate3d(0, -25%, 0); 93 | } 94 | 96% { 95 | transform: translate3d(0, -25%, 0); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/LikeButton/LikeButton.tsx: -------------------------------------------------------------------------------- 1 | import { LikeButtonProps } from './types' 2 | 3 | import React from 'react' 4 | import styles from './LikeButton.module.scss' 5 | 6 | export default function LikeButton({ isLiked, onClick }: LikeButtonProps) { 7 | return ( 8 |
9 | 16 |
17 | 22 | 23 | 24 | 29 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 |
46 | ) 47 | } 48 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/onboarding-8/manager-bundle.js.LEGAL.txt: -------------------------------------------------------------------------------- 1 | Bundled license information: 2 | 3 | @storybook/addon-onboarding/dist/manager.mjs: 4 | /*! Bundled license information: 5 | 6 | exenv/index.js: 7 | (*! 8 | Copyright (c) 2015 Jed Watson. 9 | Based on code that is Copyright 2013-2015, Facebook, Inc. 10 | All rights reserved. 11 | *) 12 | 13 | react-is/cjs/react-is.production.min.js: 14 | (** @license React v16.13.1 15 | * react-is.production.min.js 16 | * 17 | * Copyright (c) Facebook, Inc. and its affiliates. 18 | * 19 | * This source code is licensed under the MIT license found in the 20 | * LICENSE file in the root directory of this source tree. 21 | *) 22 | 23 | popper.js/dist/esm/popper.js: 24 | (**! 25 | * @fileOverview Kickass library to create and place poppers near their reference elements. 26 | * @version 1.16.1 27 | * @license 28 | * Copyright (c) 2016 Federico Zivolo and contributors 29 | * 30 | * Permission is hereby granted, free of charge, to any person obtaining a copy 31 | * of this software and associated documentation files (the "Software"), to deal 32 | * in the Software without restriction, including without limitation the rights 33 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 34 | * copies of the Software, and to permit persons to whom the Software is 35 | * furnished to do so, subject to the following conditions: 36 | * 37 | * The above copyright notice and this permission notice shall be included in all 38 | * copies or substantial portions of the Software. 39 | * 40 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 41 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 42 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 43 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 44 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 45 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 46 | * SOFTWARE. 47 | *) 48 | */ 49 | -------------------------------------------------------------------------------- /src/ui/Icons/Radio.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Radio = (isActive?: boolean) => ( 4 | 9 | 10 | 15 | 16 | radio 17 | Created with Sketch Beta. 18 | 19 | 26 | 31 | 36 | 37 | 38 | 39 | 40 | ) 41 | 42 | export default Radio 43 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-measure-6/manager-bundle.js: -------------------------------------------------------------------------------- 1 | try{ 2 | var r="storybook/measure-addon",u=`${r}/tool`;var a=__REACT__,{Children:M,Component:B,Fragment:P,Profiler:D,PureComponent:x,StrictMode:N,Suspense:v,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:H,cloneElement:F,createContext:K,createElement:W,createFactory:Y,createRef:G,forwardRef:w,isValidElement:U,lazy:V,memo:q,useCallback:p,useContext:z,useDebugValue:Z,useEffect:S,useImperativeHandle:$,useLayoutEffect:j,useMemo:J,useReducer:Q,useRef:X,useState:ee,version:oe}=__REACT__;var se=__STORYBOOKAPI__,{ActiveTabs:le,Consumer:ue,ManagerContext:ce,Provider:me,addons:c,combineParameters:ie,controlOrMetaKey:pe,controlOrMetaSymbol:Se,eventMatchesShortcut:de,eventToShortcut:_e,isMacLike:Te,isShortcutTaken:be,keyToSymbol:Oe,merge:ye,mockChannel:Ce,optionOrAltSymbol:Ee,shortcutMatchesShortcut:he,shortcutToHumanString:fe,types:d,useAddonState:Ae,useArgTypes:ge,useArgs:Ie,useChannel:Re,useGlobalTypes:ke,useGlobals:_,useParameter:Le,useSharedState:Me,useStoryPrepared:Be,useStorybookApi:T,useStorybookState:Pe}=__STORYBOOKAPI__;var He=__STORYBOOKCOMPONENTS__,{A:Fe,ActionBar:Ke,AddonPanel:We,Badge:Ye,Bar:Ge,Blockquote:we,Button:Ue,ClipboardCode:Ve,Code:qe,DL:ze,Div:Ze,DocumentWrapper:$e,ErrorFormatter:je,FlexBar:Je,Form:Qe,H1:Xe,H2:eo,H3:oo,H4:to,H5:ro,H6:ao,HR:no,IconButton:b,IconButtonSkeleton:so,Icons:O,Img:lo,LI:uo,Link:co,ListItem:mo,Loader:io,OL:po,P:So,Placeholder:_o,Pre:To,ResetWrapper:bo,ScrollArea:Oo,Separator:yo,Spaced:Co,Span:Eo,StorybookIcon:ho,StorybookLogo:fo,Symbols:Ao,SyntaxHighlighter:go,TT:Io,TabBar:Ro,TabButton:ko,TabWrapper:Lo,Table:Mo,Tabs:Bo,TabsState:Po,TooltipLinkList:Do,TooltipMessage:xo,TooltipNote:No,UL:vo,WithTooltip:Ho,WithTooltipPure:Fo,Zoom:Ko,codeCommon:Wo,components:Yo,createCopyToClipboardFunction:Go,getStoryHref:wo,icons:Uo,interleaveSeparators:Vo,nameSpaceClassNames:qo,resetComponents:zo,withReset:Zo}=__STORYBOOKCOMPONENTS__;var y=()=>{let[n,m]=_(),{measureEnabled:s}=n,i=T(),l=p(()=>m({measureEnabled:!s}),[m,s]);return S(()=>{i.setAddonShortcut(r,{label:"Toggle Measure [M]",defaultShortcut:["M"],actionName:"measure",showInMenu:!1,action:l})},[l,i]),a.createElement(b,{key:u,active:s,title:"Enable measure",onClick:l},a.createElement(O,{icon:"ruler"}))};c.register(r,()=>{c.add(u,{type:d.TOOL,title:"Measure",match:({viewMode:n})=>n==="story",render:()=>a.createElement(y,null)})}); 3 | }catch(e){ console.error("[Storybook] One of your manager-entries failed: " + import.meta.url, e); } 4 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-outline-7/manager-bundle.js: -------------------------------------------------------------------------------- 1 | try{ 2 | var a="storybook/outline",u="outline";var n=__REACT__,{Children:L,Component:x,Fragment:M,Profiler:v,PureComponent:D,StrictMode:N,Suspense:H,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:F,cloneElement:K,createContext:Y,createElement:W,createFactory:G,createRef:w,forwardRef:U,isValidElement:V,lazy:q,memo:p,useCallback:m,useContext:z,useDebugValue:Z,useEffect:S,useImperativeHandle:$,useLayoutEffect:j,useMemo:J,useReducer:Q,useRef:X,useState:ee,version:te}=__REACT__;var le=__STORYBOOKAPI__,{ActiveTabs:se,Consumer:ue,ManagerContext:ce,Provider:ie,addons:c,combineParameters:pe,controlOrMetaKey:me,controlOrMetaSymbol:Se,eventMatchesShortcut:_e,eventToShortcut:de,isMacLike:Oe,isShortcutTaken:Te,keyToSymbol:be,merge:ye,mockChannel:Ae,optionOrAltSymbol:Ce,shortcutMatchesShortcut:he,shortcutToHumanString:fe,types:_,useAddonState:Ee,useArgTypes:ge,useArgs:Re,useChannel:ke,useGlobalTypes:Ie,useGlobals:d,useParameter:Pe,useSharedState:Be,useStoryPrepared:Le,useStorybookApi:O,useStorybookState:xe}=__STORYBOOKAPI__;var He=__STORYBOOKCOMPONENTS__,{A:Fe,ActionBar:Ke,AddonPanel:Ye,Badge:We,Bar:Ge,Blockquote:we,Button:Ue,ClipboardCode:Ve,Code:qe,DL:ze,Div:Ze,DocumentWrapper:$e,ErrorFormatter:je,FlexBar:Je,Form:Qe,H1:Xe,H2:et,H3:tt,H4:ot,H5:rt,H6:at,HR:nt,IconButton:T,IconButtonSkeleton:lt,Icons:b,Img:st,LI:ut,Link:ct,ListItem:it,Loader:pt,OL:mt,P:St,Placeholder:_t,Pre:dt,ResetWrapper:Ot,ScrollArea:Tt,Separator:bt,Spaced:yt,Span:At,StorybookIcon:Ct,StorybookLogo:ht,Symbols:ft,SyntaxHighlighter:Et,TT:gt,TabBar:Rt,TabButton:kt,TabWrapper:It,Table:Pt,Tabs:Bt,TabsState:Lt,TooltipLinkList:xt,TooltipMessage:Mt,TooltipNote:vt,UL:Dt,WithTooltip:Nt,WithTooltipPure:Ht,Zoom:Ft,codeCommon:Kt,components:Yt,createCopyToClipboardFunction:Wt,getStoryHref:Gt,icons:wt,interleaveSeparators:Ut,nameSpaceClassNames:Vt,resetComponents:qt,withReset:zt}=__STORYBOOKCOMPONENTS__;var A=p(function(){let[r,y]=d(),i=O(),l=[!0,"true"].includes(r[u]),s=m(()=>y({[u]:!l}),[l]);return S(()=>{i.setAddonShortcut(a,{label:"Toggle Outline [O]",defaultShortcut:["O"],actionName:"outline",showInMenu:!1,action:s})},[s,i]),n.createElement(T,{key:"outline",active:l,title:"Apply outlines to the preview",onClick:s},n.createElement(b,{icon:"outline"}))});c.register(a,()=>{c.add(a,{title:"Outline",type:_.TOOL,match:({viewMode:r})=>!!(r&&r.match(/^(story|docs)$/)),render:()=>n.createElement(A,null)})}); 3 | }catch(e){ console.error("[Storybook] One of your manager-entries failed: " + import.meta.url, e); } 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nirvana-uikit", 3 | "version": "1.0.29", 4 | "description": "", 5 | "main": "./dist/index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "build": "webpack", 9 | "build:img": "copyfiles -f public/icons/*.* dist/static/icons/", 10 | "local": "npm run build:img && webpack && npm version patch", 11 | "pb": "npm run build:img && webpack && npm version patch && npm publish", 12 | "sb": "storybook dev -p 6006", 13 | "build-storybook": "storybook build" 14 | }, 15 | "keywords": [], 16 | "author": "AndreyBurov", 17 | "license": "ISC", 18 | "devDependencies": { 19 | "@babel/preset-env": "^7.22.9", 20 | "@babel/preset-react": "^7.22.5", 21 | "@babel/preset-typescript": "^7.22.5", 22 | "@storybook/addon-essentials": "^7.2.0", 23 | "@storybook/addon-interactions": "^7.2.0", 24 | "@storybook/addon-links": "^7.2.0", 25 | "@storybook/addon-onboarding": "^1.0.8", 26 | "@storybook/blocks": "^7.2.0", 27 | "@storybook/preset-scss": "^1.0.3", 28 | "@storybook/react": "^7.2.0", 29 | "@storybook/react-webpack5": "^7.2.0", 30 | "@storybook/testing-library": "^0.2.0", 31 | "@trivago/prettier-plugin-sort-imports": "^1.4.4", 32 | "@types/react": "^18.2.17", 33 | "@typescript-eslint/eslint-plugin": "^5.62.0", 34 | "clean-webpack-plugin": "^4.0.0", 35 | "copy-webpack-plugin": "^11.0.0", 36 | "css-loader": "^6.8.1", 37 | "css-minimizer-webpack-plugin": "^5.0.1", 38 | "dotenv": "^16.3.1", 39 | "eslint": "^8.46.0", 40 | "eslint-config-standard-with-typescript": "^37.0.0", 41 | "eslint-plugin-import": "^2.28.0", 42 | "eslint-plugin-n": "^16.0.1", 43 | "eslint-plugin-promise": "^6.1.1", 44 | "eslint-plugin-react": "^7.33.1", 45 | "eslint-plugin-storybook": "^0.6.13", 46 | "file-loader": "^6.2.0", 47 | "html-minimizer-webpack-plugin": "^4.4.0", 48 | "html-webpack-plugin": "^5.5.3", 49 | "image-minimizer-webpack-plugin": "^3.8.3", 50 | "json-minimizer-webpack-plugin": "^4.0.0", 51 | "mini-css-extract-plugin": "^2.7.6", 52 | "path": "^0.12.7", 53 | "prettier": "^3.0.0", 54 | "react": "^18.2.0", 55 | "react-dom": "^18.2.0", 56 | "sass": "^1.69.7", 57 | "sass-loader": "^13.3.2", 58 | "storybook": "^7.2.0", 59 | "style-loader": "^3.3.3", 60 | "terser-webpack-plugin": "^5.3.9", 61 | "ts-loader": "^9.4.4", 62 | "typescript": "^5.1.6", 63 | "webpack": "^5.89.0", 64 | "webpack-cli": "^5.1.4" 65 | }, 66 | "peerDependencies": { 67 | "react": "*", 68 | "react-dom": "*", 69 | "react-share": "*" 70 | }, 71 | "files": [ 72 | "dist" 73 | ], 74 | "dependencies": { 75 | "@emotion/react": "^11.11.1", 76 | "@emotion/styled": "^11.11.0", 77 | "@mui/icons-material": "^5.15.0", 78 | "@mui/material": "^5.15.0", 79 | "copyfiles": "^2.4.1", 80 | "react-share": "^5.0.3" 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/ui/Icons/Logo.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Logo = (isActive?: boolean) => ( 4 | 11 | 12 | 13 | 14 | 15 | 23 | 24 | 28 | 32 | 33 | 34 | 42 | 43 | 51 | 52 | 56 | 60 | 61 | 62 | 72 | 73 | 74 | 75 | 76 | ) 77 | 78 | export default Logo 79 | -------------------------------------------------------------------------------- /src/ui/Icons/Setting.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Setting = (isActive?: boolean) => ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 22 | {' '} 31 | 32 | 33 | ) 34 | 35 | export default Setting 36 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | const ImageMinimizerPlugin = require('image-minimizer-webpack-plugin') 3 | const JsonMinimizerPlugin = require('json-minimizer-webpack-plugin') 4 | const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') 5 | const MiniCssExtractPlugin = require('mini-css-extract-plugin') 6 | const TerserPlugin = require('terser-webpack-plugin') 7 | const { DefinePlugin } = require('webpack') 8 | const { CleanWebpackPlugin } = require('clean-webpack-plugin') 9 | 10 | module.exports = { 11 | mode: 'production', 12 | entry: './src/index.ts', 13 | output: { 14 | filename: 'index.js', 15 | assetModuleFilename: 'public/[name].[contenthash][ext][query]', 16 | path: path.resolve(__dirname, 'dist'), 17 | libraryTarget: 'umd', 18 | clean: true 19 | }, 20 | resolve: { 21 | extensions: ['.ts', '.tsx', '.js'] 22 | }, 23 | externals: { 24 | react: 'react' 25 | }, 26 | module: { 27 | rules: [ 28 | { 29 | test: /\.(ts|tsx)$/, 30 | exclude: /node_modules/, 31 | use: { 32 | loader: 'ts-loader' 33 | } 34 | }, 35 | { 36 | test: /\.(png|jpe?g|gif)$/i, 37 | use: [ 38 | { 39 | loader: 'file-loader' 40 | } 41 | ] 42 | }, 43 | { 44 | test: /\.s(a|c)ss$/i, 45 | exclude: /node_modules/, 46 | use: [ 47 | 'style-loader', 48 | { 49 | loader: 'css-loader', 50 | options: { 51 | sourceMap: true, 52 | modules: true 53 | } 54 | }, 55 | { 56 | loader: 'sass-loader', 57 | options: { 58 | sourceMap: true 59 | } 60 | } 61 | ] 62 | }, 63 | { 64 | test: /\.css$/, 65 | use: [ 66 | 'style-loader', 67 | { 68 | loader: 'css-loader', 69 | options: { 70 | sourceMap: true 71 | } 72 | } 73 | ] 74 | }, 75 | { 76 | test: /\.(jpe?g|png|gif|svg)$/i, 77 | exclude: /node_modules/, 78 | type: 'asset' 79 | } 80 | ] 81 | }, 82 | optimization: { 83 | minimizer: [ 84 | new CssMinimizerPlugin(), 85 | new JsonMinimizerPlugin(), 86 | new TerserPlugin({ 87 | parallel: true, 88 | terserOptions: { 89 | format: { 90 | comments: false 91 | } 92 | } 93 | }), 94 | new ImageMinimizerPlugin({ 95 | minimizer: { 96 | implementation: ImageMinimizerPlugin.imageminMinify, 97 | options: { 98 | plugins: [ 99 | ['gifsicle', { interlaced: true }], 100 | ['jpegtran', { progressive: true }], 101 | ['optipng', { optimizationLevel: 5 }], 102 | 103 | [ 104 | 'svgo', 105 | { 106 | plugins: [ 107 | { 108 | name: 'preset-default', 109 | params: { 110 | overrides: { 111 | addAttributesToSVGElement: { 112 | params: { 113 | attributes: [ 114 | { 115 | xmlns: 'http://www.w3.org/2000/svg' 116 | } 117 | ] 118 | } 119 | } 120 | } 121 | } 122 | } 123 | ] 124 | } 125 | ] 126 | ] 127 | } 128 | } 129 | }) 130 | ] 131 | }, 132 | plugins: [ 133 | new MiniCssExtractPlugin({ 134 | filename: '[name].[contenthash].css', 135 | chunkFilename: '[id].[contenthash].css' 136 | }), 137 | new CleanWebpackPlugin() 138 | ], 139 | stats: { 140 | errorDetails: false 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /storybook-static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @storybook/cli - Storybook 7 | 8 | 9 | 10 | 11 | 12 | 19 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 57 | 58 | 59 | 60 | 61 |
62 | 63 | 64 | 100 | 101 | 102 | 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import BlockButton from './ui/Buttons/BlockButtons/BlockButton/BlockButton' 2 | import MixBlockButton from './ui/Buttons/BlockButtons/presets/MixBlockButton/MixBlockButton' 3 | import PlayBlockButton from './ui/Buttons/BlockButtons/presets/PlayBlockButton/PlayBlockButton' 4 | import LikeButton from './ui/Buttons/InteractiveButtons/LikeButton/LikeButton' 5 | import PlayButton from './ui/Buttons/InteractiveButtons/PlayButton/PlayButton' 6 | import ShareButton from './ui/Buttons/InteractiveButtons/ShareButton/ShareButton' 7 | import ThemeSwitcher from './ui/Buttons/InteractiveButtons/ThemeSwitcher/ThemeSwitcher' 8 | import AccountNavbarButton from './ui/Buttons/NavbarButtons/presets/AccountNavbarButton/AccountNavbarButton' 9 | import FavoritesNavbarButton from './ui/Buttons/NavbarButtons/presets/FavoritesNavbarButton/FavoritesNavbarButton' 10 | import HomeNavbarButton from './ui/Buttons/NavbarButtons/presets/HomeNavbarButton/HomeNavbarButton' 11 | import LogoNavbarButton from './ui/Buttons/NavbarButtons/presets/LogoNavbarButton/LogoNavbarButton' 12 | import RadioNavbarButton from './ui/Buttons/NavbarButtons/presets/RadioNavbarButton/RadioNavbarButton' 13 | import SettingsNavbarButton from './ui/Buttons/NavbarButtons/presets/SettingsNavbarButton/SettingsNavbarButton' 14 | import TrackNavbarButton from './ui/Buttons/NavbarButtons/presets/TrackNavbarButton/TrackNavbarButton' 15 | import RoundButton from './ui/Buttons/RoundButtons/RoundButton/RoundButton' 16 | import DownArrowRoundButton from './ui/Buttons/RoundButtons/presets/DownArrowRoundButton/DownArrowRoundButton' 17 | import LeftArrowRoundButton from './ui/Buttons/RoundButtons/presets/LeftArrowRoundButton/LeftArrowRoundButton' 18 | import LikeRoundButton from './ui/Buttons/RoundButtons/presets/LikeRoundButton/LikeRoundButton' 19 | import MixRoundButton from './ui/Buttons/RoundButtons/presets/MixRoundButton/MixRoundButton' 20 | import PlayRoundButton from './ui/Buttons/RoundButtons/presets/PlayRoundButton/PlayRoundButton' 21 | import ReminderRoundButton from './ui/Buttons/RoundButtons/presets/ReminderRoundButton/ReminderRoundButton' 22 | import RepeatRoundButton from './ui/Buttons/RoundButtons/presets/RepeatRoundButton/RepeatRoundButton' 23 | import RightArrowRoundButton from './ui/Buttons/RoundButtons/presets/RightArrowRoundButton/RightArrowRoundButton' 24 | import ShareRoundButton from './ui/Buttons/RoundButtons/presets/ShareRoundButton/ShareRoundButton' 25 | import Card from './ui/Card/Card' 26 | import DownArrow from './ui/Icons/DownArrow' 27 | import Home from './ui/Icons/Home' 28 | import LeftArrow from './ui/Icons/LeftArrow' 29 | import Like from './ui/Icons/Like' 30 | import Mix from './ui/Icons/Mix' 31 | import Play from './ui/Icons/Play' 32 | import Reminder from './ui/Icons/Reminder' 33 | import Repeat from './ui/Icons/Repeat' 34 | import RightArrow from './ui/Icons/RightArrow' 35 | import Share from './ui/Icons/Share' 36 | import User from './ui/Icons/User' 37 | import Volume from './ui/Icons/Volume' 38 | import Loader from './ui/Loader/Loader' 39 | import NavSection from './ui/NavSection/NavSection' 40 | import Navbar from './ui/Navbar/Navbar' 41 | import PromoTitle from './ui/PromoTitle/PromoTitle' 42 | import Typography from './ui/Typography/Typography' 43 | 44 | export { 45 | AccountNavbarButton, 46 | BlockButton, 47 | Card, 48 | DownArrow, 49 | DownArrowRoundButton, 50 | FavoritesNavbarButton, 51 | Home, 52 | HomeNavbarButton, 53 | LeftArrow, 54 | LeftArrowRoundButton, 55 | Like, 56 | LikeButton, 57 | LikeRoundButton, 58 | Loader, 59 | LogoNavbarButton, 60 | Mix, 61 | MixBlockButton, 62 | MixRoundButton, 63 | NavSection, 64 | Navbar, 65 | Play, 66 | PlayBlockButton, 67 | PlayButton, 68 | PlayRoundButton, 69 | PromoTitle, 70 | RadioNavbarButton, 71 | Reminder, 72 | ReminderRoundButton, 73 | Repeat, 74 | RepeatRoundButton, 75 | RightArrow, 76 | RightArrowRoundButton, 77 | RoundButton, 78 | SettingsNavbarButton, 79 | Share, 80 | ShareButton, 81 | ShareRoundButton, 82 | ThemeSwitcher, 83 | TrackNavbarButton, 84 | Typography, 85 | User, 86 | Volume 87 | } 88 | -------------------------------------------------------------------------------- /src/ui/Icons/Mix.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Mix = ( 4 | 5 | 6 | 11 | 12 | {' '} 13 | {' '} 17 | {' '} 21 | 22 | 23 | ) 24 | 25 | export default Mix 26 | -------------------------------------------------------------------------------- /storybook-static/index.json: -------------------------------------------------------------------------------- 1 | {"v":4,"entries":{"stories-blockbutton--play-all":{"type":"story","id":"stories-blockbutton--play-all","name":"Play All","title":"stories/BlockButton","importPath":"./src/stories/BlockButton.stories.tsx","tags":["story"]},"stories-blockbutton--mix":{"type":"story","id":"stories-blockbutton--mix","name":"Mix","title":"stories/BlockButton","importPath":"./src/stories/BlockButton.stories.tsx","tags":["story"]},"stories-card--meteora-card":{"type":"story","id":"stories-card--meteora-card","name":"Meteora Card","title":"stories/Card","importPath":"./src/stories/Card.stories.tsx","tags":["story"]},"stories-loader--primary":{"type":"story","id":"stories-loader--primary","name":"Primary","title":"stories/Loader","importPath":"./src/stories/Loader.stories.tsx","tags":["story"]},"stories-navsectrion--primary":{"type":"story","id":"stories-navsectrion--primary","name":"Primary","title":"stories/NavSectrion","importPath":"./src/stories/NavSectrion.stories.tsx","tags":["story"]},"stories-navbarbutton--primary":{"type":"story","id":"stories-navbarbutton--primary","name":"Primary","title":"stories/NavbarButton","importPath":"./src/stories/NavbarButton.stories.tsx","tags":["story"]},"stories-navbarbutton--active":{"type":"story","id":"stories-navbarbutton--active","name":"Active","title":"stories/NavbarButton","importPath":"./src/stories/NavbarButton.stories.tsx","tags":["story"]},"stories-roundbutton--like":{"type":"story","id":"stories-roundbutton--like","name":"Like","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--share":{"type":"story","id":"stories-roundbutton--share","name":"Share","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--left-arrow":{"type":"story","id":"stories-roundbutton--left-arrow","name":"Left Arrow","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--down-arrow":{"type":"story","id":"stories-roundbutton--down-arrow","name":"Down Arrow","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--right-arrow":{"type":"story","id":"stories-roundbutton--right-arrow","name":"Right Arrow","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--play-button":{"type":"story","id":"stories-roundbutton--play-button","name":"Play Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--reminder-button":{"type":"story","id":"stories-roundbutton--reminder-button","name":"Reminder Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--repeat-button":{"type":"story","id":"stories-roundbutton--repeat-button","name":"Repeat Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--mix-button":{"type":"story","id":"stories-roundbutton--mix-button","name":"Mix Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-roundbutton--volume-button":{"type":"story","id":"stories-roundbutton--volume-button","name":"Volume Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"]},"stories-sharebutton--share-btn":{"type":"story","id":"stories-sharebutton--share-btn","name":"Share Btn","title":"stories/ShareButton","importPath":"./src/stories/ShareButton.stories.tsx","tags":["story"]},"stories-typography--regular":{"type":"story","id":"stories-typography--regular","name":"Regular","title":"stories/Typography","importPath":"./src/stories/Typography.stories.tsx","tags":["story"]},"stories-typography--medium":{"type":"story","id":"stories-typography--medium","name":"Medium","title":"stories/Typography","importPath":"./src/stories/Typography.stories.tsx","tags":["story"]},"stories-typography--semi-bold":{"type":"story","id":"stories-typography--semi-bold","name":"Semi Bold","title":"stories/Typography","importPath":"./src/stories/Typography.stories.tsx","tags":["story"]}}} 2 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-toolbars-5/manager-bundle.js: -------------------------------------------------------------------------------- 1 | try{ 2 | var l=__REACT__,{Children:le,Component:ne,Fragment:ie,Profiler:se,PureComponent:ce,StrictMode:ue,Suspense:me,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:pe,cloneElement:de,createContext:be,createElement:Se,createFactory:Te,createRef:ye,forwardRef:fe,isValidElement:Ce,lazy:ve,memo:_e,useCallback:_,useContext:Ie,useDebugValue:Oe,useEffect:E,useImperativeHandle:xe,useLayoutEffect:Ee,useMemo:ge,useReducer:he,useRef:L,useState:R,version:ke}=__REACT__;var Pe=__STORYBOOKAPI__,{ActiveTabs:Me,Consumer:Ne,ManagerContext:we,Provider:He,addons:g,combineParameters:Ve,controlOrMetaKey:De,controlOrMetaSymbol:Fe,eventMatchesShortcut:Ge,eventToShortcut:We,isMacLike:Ke,isShortcutTaken:Ye,keyToSymbol:$e,merge:ze,mockChannel:Ue,optionOrAltSymbol:je,shortcutMatchesShortcut:qe,shortcutToHumanString:Ze,types:B,useAddonState:Je,useArgTypes:Qe,useArgs:Xe,useChannel:et,useGlobalTypes:P,useGlobals:h,useParameter:tt,useSharedState:ot,useStoryPrepared:rt,useStorybookApi:M,useStorybookState:at}=__STORYBOOKAPI__;var ct=__STORYBOOKCOMPONENTS__,{A:ut,ActionBar:mt,AddonPanel:pt,Badge:dt,Bar:bt,Blockquote:St,Button:Tt,ClipboardCode:yt,Code:ft,DL:Ct,Div:vt,DocumentWrapper:_t,ErrorFormatter:It,FlexBar:Ot,Form:xt,H1:Et,H2:gt,H3:ht,H4:kt,H5:At,H6:Lt,HR:Rt,IconButton:N,IconButtonSkeleton:Bt,Icons:k,Img:Pt,LI:Mt,Link:Nt,ListItem:wt,Loader:Ht,OL:Vt,P:Dt,Placeholder:Ft,Pre:Gt,ResetWrapper:Wt,ScrollArea:Kt,Separator:w,Spaced:Yt,Span:$t,StorybookIcon:zt,StorybookLogo:Ut,Symbols:jt,SyntaxHighlighter:qt,TT:Zt,TabBar:Jt,TabButton:Qt,TabWrapper:Xt,Table:eo,Tabs:to,TabsState:oo,TooltipLinkList:H,TooltipMessage:ro,TooltipNote:ao,UL:lo,WithTooltip:V,WithTooltipPure:no,Zoom:io,codeCommon:so,components:co,createCopyToClipboardFunction:uo,getStoryHref:mo,icons:po,interleaveSeparators:bo,nameSpaceClassNames:So,resetComponents:To,withReset:yo}=__STORYBOOKCOMPONENTS__;var G=({active:o,title:t,icon:e,description:r,onClick:a})=>l.createElement(N,{active:o,title:r,onClick:a},e&&l.createElement(k,{icon:e}),t?`\xA0${t}`:null),W=["reset"],K=o=>o.filter(t=>!W.includes(t.type)).map(t=>t.value),b="addon-toolbars",Y=async(o,t,e)=>{e&&e.next&&await o.setAddonShortcut(b,{label:e.next.label,defaultShortcut:e.next.keys,actionName:`${t}:next`,action:e.next.action}),e&&e.previous&&await o.setAddonShortcut(b,{label:e.previous.label,defaultShortcut:e.previous.keys,actionName:`${t}:previous`,action:e.previous.action}),e&&e.reset&&await o.setAddonShortcut(b,{label:e.reset.label,defaultShortcut:e.reset.keys,actionName:`${t}:reset`,action:e.reset.action})},$=o=>t=>{let{id:e,toolbar:{items:r,shortcuts:a}}=t,d=M(),[S,i]=h(),n=L([]),s=S[e],I=_(()=>{i({[e]:""})},[i]),O=_(()=>{let p=n.current,c=p.indexOf(s),m=c===p.length-1?0:c+1,T=n.current[m];i({[e]:T})},[n,s,i]),u=_(()=>{let p=n.current,c=p.indexOf(s),m=c>-1?c:0,T=m===0?p.length-1:m-1,y=n.current[T];i({[e]:y})},[n,s,i]);return E(()=>{a&&Y(d,e,{next:{...a.next,action:O},previous:{...a.previous,action:u},reset:{...a.reset,action:I}})},[d,e,a,O,u,I]),E(()=>{n.current=K(r)},[]),l.createElement(o,{cycleValues:n.current,...t})},D=({currentValue:o,items:t})=>o!=null&&t.find(e=>e.value===o&&e.type!=="reset"),z=({currentValue:o,items:t})=>{let e=D({currentValue:o,items:t});if(e)return e.icon},U=({currentValue:o,items:t})=>{let e=D({currentValue:o,items:t});if(e)return e.title},j=({left:o,right:t,title:e,value:r,icon:a,hideIcon:d,onClick:S,currentValue:i})=>{let n=a&&l.createElement(k,{style:{opacity:1},icon:a}),s={id:r??"_reset",active:i===r,right:t,title:e,left:o,onClick:S};return a&&!d&&(s.left=n),s},q=$(({id:o,name:t,description:e,toolbar:{icon:r,items:a,title:d,preventDynamicIcon:S,dynamicTitle:i}})=>{let[n,s]=h(),[I,O]=R(!1),u=n[o],p=!!u,c=r,m=d;S||(c=z({currentValue:u,items:a})||c),i&&(m=U({currentValue:u,items:a})||m),!m&&!c&&console.warn(`Toolbar '${t}' has no title or icon`);let T=_(y=>{s({[o]:y})},[u,s]);return l.createElement(V,{placement:"top",tooltip:({onHide:y})=>{let F=a.filter(({type:x})=>{let A=!0;return x==="reset"&&!u&&(A=!1),A}).map(x=>j({...x,currentValue:u,onClick:()=>{T(x.value),y()}}));return l.createElement(H,{links:F})},closeOnOutsideClick:!0,onVisibleChange:O},l.createElement(G,{active:I||p,description:e||"",icon:c,title:m||""}))}),Z={type:"item",value:""},J=(o,t)=>({...t,name:t.name||o,description:t.description||o,toolbar:{...t.toolbar,items:t.toolbar.items.map(e=>{let r=typeof e=="string"?{value:e,title:e}:e;return r.type==="reset"&&t.toolbar.icon&&(r.icon=t.toolbar.icon,r.hideIcon=!0),{...Z,...r}})}}),Q=()=>{let o=P(),t=Object.keys(o).filter(e=>!!o[e].toolbar);return t.length?l.createElement(l.Fragment,null,l.createElement(w,null),t.map(e=>{let r=J(e,o[e]);return l.createElement(q,{key:e,id:e,...r})})):null};g.register(b,()=>g.add(b,{title:b,type:B.TOOL,match:()=>!0,render:()=>l.createElement(Q,null)})); 3 | }catch(e){ console.error("[Storybook] One of your manager-entries failed: " + import.meta.url, e); } 4 | -------------------------------------------------------------------------------- /storybook-static/sb-manager/globals.js: -------------------------------------------------------------------------------- 1 | var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var globals_exports={};__export(globals_exports,{definitions:()=>definitions});module.exports=__toCommonJS(globals_exports);var exports_default={react:["Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","createElement","createFactory","createRef","forwardRef","isValidElement","lazy","memo","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","version"],"react-dom":["__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","createPortal","findDOMNode","flushSync","hydrate","render","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","version"],"@storybook/components":["A","ActionBar","AddonPanel","Badge","Bar","Blockquote","Button","ClipboardCode","Code","DL","Div","DocumentWrapper","ErrorFormatter","FlexBar","Form","H1","H2","H3","H4","H5","H6","HR","IconButton","IconButtonSkeleton","Icons","Img","LI","Link","ListItem","Loader","OL","P","Placeholder","Pre","ResetWrapper","ScrollArea","Separator","Spaced","Span","StorybookIcon","StorybookLogo","Symbols","SyntaxHighlighter","TT","TabBar","TabButton","TabWrapper","Table","Tabs","TabsState","TooltipLinkList","TooltipMessage","TooltipNote","UL","WithTooltip","WithTooltipPure","Zoom","codeCommon","components","createCopyToClipboardFunction","getStoryHref","icons","interleaveSeparators","nameSpaceClassNames","resetComponents","withReset"],"@storybook/channels":["Channel","PostMessageTransport","WebsocketTransport","createBrowserChannel","createPostMessageChannel","createWebSocketChannel"],"@storybook/core-events":["CHANNEL_CREATED","CONFIG_ERROR","CURRENT_STORY_WAS_SET","DOCS_PREPARED","DOCS_RENDERED","FORCE_REMOUNT","FORCE_RE_RENDER","GLOBALS_UPDATED","IGNORED_EXCEPTION","NAVIGATE_URL","PLAY_FUNCTION_THREW_EXCEPTION","PRELOAD_ENTRIES","PREVIEW_BUILDER_PROGRESS","PREVIEW_KEYDOWN","REGISTER_SUBSCRIPTION","REQUEST_WHATS_NEW_DATA","RESET_STORY_ARGS","RESULT_WHATS_NEW_DATA","SELECT_STORY","SET_CONFIG","SET_CURRENT_STORY","SET_GLOBALS","SET_INDEX","SET_STORIES","SET_WHATS_NEW_CACHE","SHARED_STATE_CHANGED","SHARED_STATE_SET","STORIES_COLLAPSE_ALL","STORIES_EXPAND_ALL","STORY_ARGS_UPDATED","STORY_CHANGED","STORY_ERRORED","STORY_INDEX_INVALIDATED","STORY_MISSING","STORY_PREPARED","STORY_RENDERED","STORY_RENDER_PHASE_CHANGED","STORY_SPECIFIED","STORY_THREW_EXCEPTION","STORY_UNCHANGED","TELEMETRY_ERROR","TOGGLE_WHATS_NEW_NOTIFICATIONS","UPDATE_GLOBALS","UPDATE_QUERY_PARAMS","UPDATE_STORY_ARGS"],"@storybook/router":["BaseLocationProvider","DEEPLY_EQUAL","Link","Location","LocationProvider","Match","Route","buildArgsParam","deepDiff","getMatch","parsePath","queryFromLocation","queryFromString","stringifyQuery","useNavigate"],"@storybook/theming":["CacheProvider","ClassNames","Global","ThemeProvider","background","color","convert","create","createCache","createGlobal","createReset","css","darken","ensure","ignoreSsrWarning","isPropValid","jsx","keyframes","lighten","styled","themes","typography","useTheme","withTheme"],"@storybook/api":["ActiveTabs","Consumer","ManagerContext","Provider","addons","combineParameters","controlOrMetaKey","controlOrMetaSymbol","eventMatchesShortcut","eventToShortcut","isMacLike","isShortcutTaken","keyToSymbol","merge","mockChannel","optionOrAltSymbol","shortcutMatchesShortcut","shortcutToHumanString","types","useAddonState","useArgTypes","useArgs","useChannel","useGlobalTypes","useGlobals","useParameter","useSharedState","useStoryPrepared","useStorybookApi","useStorybookState"],"@storybook/manager-api":["ActiveTabs","Consumer","ManagerContext","Provider","addons","combineParameters","controlOrMetaKey","controlOrMetaSymbol","eventMatchesShortcut","eventToShortcut","isMacLike","isShortcutTaken","keyToSymbol","merge","mockChannel","optionOrAltSymbol","shortcutMatchesShortcut","shortcutToHumanString","types","useAddonState","useArgTypes","useArgs","useChannel","useGlobalTypes","useGlobals","useParameter","useSharedState","useStoryPrepared","useStorybookApi","useStorybookState"],"@storybook/addons":["addons","types","mockChannel"],"@storybook/client-logger":["deprecate","logger","once","pretty"]};var Keys=(Keys2=>(Keys2.react="__REACT__",Keys2["react-dom"]="__REACTDOM__",Keys2["@storybook/components"]="__STORYBOOKCOMPONENTS__",Keys2["@storybook/channels"]="__STORYBOOKCHANNELS__",Keys2["@storybook/core-events"]="__STORYBOOKCOREEVENTS__",Keys2["@storybook/router"]="__STORYBOOKROUTER__",Keys2["@storybook/theming"]="__STORYBOOKTHEMING__",Keys2["@storybook/api"]="__STORYBOOKAPI__",Keys2["@storybook/manager-api"]="__STORYBOOKAPI__",Keys2["@storybook/addons"]="__STORYBOOKADDONS__",Keys2["@storybook/client-logger"]="__STORYBOOKCLIENTLOGGER__",Keys2))(Keys||{});var createModuleInfo=m=>({type:"esm",varName:Keys[m],namedExports:exports_default[m],defaultExport:!0}),definitions=Object.keys(Keys).reduce((acc,key)=>(acc[key]=createModuleInfo(key),acc),{});0&&(module.exports={definitions}); 2 | -------------------------------------------------------------------------------- /storybook-static/main.ec8c71fc.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | (self.webpackChunkradio_app_uikit=self.webpackChunkradio_app_uikit||[]).push([[179],{"./.storybook/preview.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{default:()=>__WEBPACK_DEFAULT_EXPORT__});const __WEBPACK_DEFAULT_EXPORT__={parameters:{actions:{argTypesRegex:"^on[A-Z].*"},controls:{matchers:{color:/(background|color)$/i,date:/Date$/}}}}},"./src lazy recursive ^\\.\\/.*$ include: (?:\\/src(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.mdx)$":module=>{function webpackEmptyAsyncContext(req){return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}))}webpackEmptyAsyncContext.keys=()=>[],webpackEmptyAsyncContext.resolve=webpackEmptyAsyncContext,webpackEmptyAsyncContext.id="./src lazy recursive ^\\.\\/.*$ include: (?:\\/src(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.mdx)$",module.exports=webpackEmptyAsyncContext},"./src lazy recursive ^\\.\\/.*$ include: (?:\\/src(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cmjs%7Cts%7Ctsx))$":(module,__unused_webpack_exports,__webpack_require__)=>{var map={"./stories/BlockButton.stories":["./src/stories/BlockButton.stories.tsx",353],"./stories/BlockButton.stories.tsx":["./src/stories/BlockButton.stories.tsx",353],"./stories/Card.stories":["./src/stories/Card.stories.tsx",16],"./stories/Card.stories.tsx":["./src/stories/Card.stories.tsx",16],"./stories/Loader.stories":["./src/stories/Loader.stories.tsx",159],"./stories/Loader.stories.tsx":["./src/stories/Loader.stories.tsx",159],"./stories/NavSectrion.stories":["./src/stories/NavSectrion.stories.tsx",943],"./stories/NavSectrion.stories.tsx":["./src/stories/NavSectrion.stories.tsx",943],"./stories/NavbarButton.stories":["./src/stories/NavbarButton.stories.tsx",477],"./stories/NavbarButton.stories.tsx":["./src/stories/NavbarButton.stories.tsx",477],"./stories/RoundButton.stories":["./src/stories/RoundButton.stories.tsx",903],"./stories/RoundButton.stories.tsx":["./src/stories/RoundButton.stories.tsx",903],"./stories/ShareButton.stories":["./src/stories/ShareButton.stories.tsx",221],"./stories/ShareButton.stories.tsx":["./src/stories/ShareButton.stories.tsx",221],"./stories/Typography.stories":["./src/stories/Typography.stories.tsx",454],"./stories/Typography.stories.tsx":["./src/stories/Typography.stories.tsx",454]};function webpackAsyncContext(req){if(!__webpack_require__.o(map,req))return Promise.resolve().then((()=>{var e=new Error("Cannot find module '"+req+"'");throw e.code="MODULE_NOT_FOUND",e}));var ids=map[req],id=ids[0];return __webpack_require__.e(ids[1]).then((()=>__webpack_require__(id)))}webpackAsyncContext.keys=()=>Object.keys(map),webpackAsyncContext.id="./src lazy recursive ^\\.\\/.*$ include: (?:\\/src(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cmjs%7Cts%7Ctsx))$",module.exports=webpackAsyncContext},"./storybook-config-entry.js":(__unused_webpack_module,__unused_webpack___webpack_exports__,__webpack_require__)=>{"use strict";var external_STORYBOOK_MODULE_GLOBAL_=__webpack_require__("@storybook/global"),external_STORYBOOK_MODULE_PREVIEW_API_=__webpack_require__("@storybook/preview-api"),external_STORYBOOK_MODULE_CHANNELS_=__webpack_require__("@storybook/channels");const importers=[async path=>{if(!/^\.[\\/](?:src(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.mdx)$/.exec(path))return;const pathRemainder=path.substring(6);return __webpack_require__("./src lazy recursive ^\\.\\/.*$ include: (?:\\/src(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.mdx)$")("./"+pathRemainder)},async path=>{if(!/^\.[\\/](?:src(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(js|jsx|mjs|ts|tsx))$/.exec(path))return;const pathRemainder=path.substring(6);return __webpack_require__("./src lazy recursive ^\\.\\/.*$ include: (?:\\/src(?:\\/(?%21\\.)(?:(?:(?%21(?:^%7C\\/)\\.).)*?)\\/%7C\\/%7C$)(?%21\\.)(?=.)[^/]*?\\.stories\\.(js%7Cjsx%7Cmjs%7Cts%7Ctsx))$")("./"+pathRemainder)}];const channel=(0,external_STORYBOOK_MODULE_CHANNELS_.createBrowserChannel)({page:"preview"});external_STORYBOOK_MODULE_PREVIEW_API_.addons.setChannel(channel),"DEVELOPMENT"===external_STORYBOOK_MODULE_GLOBAL_.global.CONFIG_TYPE&&(window.__STORYBOOK_SERVER_CHANNEL__=channel);const preview=new external_STORYBOOK_MODULE_PREVIEW_API_.PreviewWeb;window.__STORYBOOK_PREVIEW__=preview,window.__STORYBOOK_STORY_STORE__=preview.storyStore,window.__STORYBOOK_ADDONS_CHANNEL__=channel,window.__STORYBOOK_CLIENT_API__=new external_STORYBOOK_MODULE_PREVIEW_API_.ClientApi({storyStore:preview.storyStore}),preview.initialize({importFn:async function importFn(path){for(let i=0;iimporters[i](path),x());if(moduleExports)return moduleExports}var x},getProjectAnnotations:()=>(0,external_STORYBOOK_MODULE_PREVIEW_API_.composeConfigs)([__webpack_require__("./node_modules/@storybook/react/preview.js"),__webpack_require__("./node_modules/@storybook/addon-links/dist/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/docs/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/actions/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/backgrounds/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/measure/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/outline/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-essentials/dist/highlight/preview.mjs"),__webpack_require__("./node_modules/@storybook/addon-interactions/dist/preview.mjs"),__webpack_require__("./.storybook/preview.ts")])})},"@storybook/channels":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CHANNELS__},"@storybook/client-logger":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CLIENT_LOGGER__},"@storybook/core-events":module=>{"use strict";module.exports=__STORYBOOK_MODULE_CORE_EVENTS__},"@storybook/global":module=>{"use strict";module.exports=__STORYBOOK_MODULE_GLOBAL__},"@storybook/preview-api":module=>{"use strict";module.exports=__STORYBOOK_MODULE_PREVIEW_API__}},__webpack_require__=>{__webpack_require__.O(0,[102],(()=>{return moduleId="./storybook-config-entry.js",__webpack_require__(__webpack_require__.s=moduleId);var moduleId}));__webpack_require__.O()}]); -------------------------------------------------------------------------------- /storybook-static/runtime~main.b4cdbf78.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | (()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({16:"stories-Card-stories",159:"stories-Loader-stories",221:"stories-ShareButton-stories",353:"stories-BlockButton-stories",454:"stories-Typography-stories",477:"stories-NavbarButton-stories",903:"stories-RoundButton-stories",943:"stories-NavSectrion-stories"}[chunkId]||chunkId)+"."+{16:"70d2daa6",159:"02d2dc1d",221:"be890e60",296:"1c9158ee",341:"3cbc6f24",350:"01508b97",353:"13c10d46",426:"f4deaebd",454:"1b54675e",477:"43fd36bc",729:"da6e2a58",903:"871a9f59",943:"3e570df2",984:"df1c629b"}[chunkId]+".iframe.bundle.js"),__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);itypeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var require_memoizerific=__commonJS({"../../node_modules/memoizerific/memoizerific.js"(exports,module){(function(f){if(typeof exports=="object"&&typeof module<"u")module.exports=f();else if(typeof define=="function"&&define.amd)define([],f);else{var g;typeof window<"u"?g=window:typeof global<"u"?g=global:typeof self<"u"?g=self:g=this,g.memoizerific=f()}})(function(){var define2,module2,exports2;return function e(t,n,r){function s(o2,u){if(!n[o2]){if(!t[o2]){var a=typeof __require=="function"&&__require;if(!u&&a)return a(o2,!0);if(i)return i(o2,!0);var f=new Error("Cannot find module '"+o2+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o2]={exports:{}};t[o2][0].call(l.exports,function(e2){var n2=t[o2][1][e2];return s(n2||e2)},l,l.exports,e,t,n,r)}return n[o2].exports}for(var i=typeof __require=="function"&&__require,o=0;o=0)return this.lastItem=this.list[index],this.list[index].val},Similar.prototype.set=function(key,val){var index;return this.lastItem&&this.isEqual(this.lastItem.key,key)?(this.lastItem.val=val,this):(index=this.indexOf(key),index>=0?(this.lastItem=this.list[index],this.list[index].val=val,this):(this.lastItem={key,val},this.list.push(this.lastItem),this.size++,this))},Similar.prototype.delete=function(key){var index;if(this.lastItem&&this.isEqual(this.lastItem.key,key)&&(this.lastItem=void 0),index=this.indexOf(key),index>=0)return this.size--,this.list.splice(index,1)[0]},Similar.prototype.has=function(key){var index;return this.lastItem&&this.isEqual(this.lastItem.key,key)?!0:(index=this.indexOf(key),index>=0?(this.lastItem=this.list[index],!0):!1)},Similar.prototype.forEach=function(callback,thisArg){var i;for(i=0;i0&&(lruPath[argsLengthMinusOne]={cacheItem:currentCache,arg:arguments[argsLengthMinusOne]},isMemoized?moveToMostRecentLru(lru,lruPath):lru.push(lruPath),lru.length>limit&&removeCachedResult(lru.shift())),memoizerific.wasMemoized=isMemoized,memoizerific.numArgs=argsLengthMinusOne+1,fnResult};return memoizerific.limit=limit,memoizerific.wasMemoized=!1,memoizerific.cache=cache,memoizerific.lru=lru,memoizerific}};function moveToMostRecentLru(lru,lruPath){var lruLen=lru.length,lruPathLen=lruPath.length,isMatch,i,ii;for(i=0;i=0&&(currentLru=removedLru[i],tmp=currentLru.cacheItem.get(currentLru.arg),!tmp||!tmp.size);i--)currentLru.cacheItem.delete(currentLru.arg)}function isEqual(val1,val2){return val1===val2||val1!==val1&&val2!==val2}},{"map-or-similar":1}]},{},[3])(3)})}});var __create2=Object.create,__defProp2=Object.defineProperty,__getOwnPropDesc2=Object.getOwnPropertyDescriptor,__getOwnPropNames2=Object.getOwnPropertyNames,__getProtoOf2=Object.getPrototypeOf,__hasOwnProp2=Object.prototype.hasOwnProperty,__commonJS2=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames2(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports},__copyProps2=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames2(from))!__hasOwnProp2.call(to,key)&&key!==except&&__defProp2(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc2(from,key))||desc.enumerable});return to},__toESM2=(mod,isNodeMode,target)=>(target=mod!=null?__create2(__getProtoOf2(mod)):{},__copyProps2(isNodeMode||!mod||!mod.__esModule?__defProp2(target,"default",{value:mod,enumerable:!0}):target,mod));export{__esm,__commonJS,__export,__toESM,__toCommonJS,require_memoizerific,__commonJS2,__toESM2}; 2 | -------------------------------------------------------------------------------- /storybook-static/stories.json: -------------------------------------------------------------------------------- 1 | {"v":3,"stories":{"stories-blockbutton--play-all":{"id":"stories-blockbutton--play-all","name":"Play All","title":"stories/BlockButton","importPath":"./src/stories/BlockButton.stories.tsx","tags":["story"],"kind":"stories/BlockButton","story":"Play All","parameters":{"__id":"stories-blockbutton--play-all","docsOnly":false,"fileName":"./src/stories/BlockButton.stories.tsx"}},"stories-blockbutton--mix":{"id":"stories-blockbutton--mix","name":"Mix","title":"stories/BlockButton","importPath":"./src/stories/BlockButton.stories.tsx","tags":["story"],"kind":"stories/BlockButton","story":"Mix","parameters":{"__id":"stories-blockbutton--mix","docsOnly":false,"fileName":"./src/stories/BlockButton.stories.tsx"}},"stories-card--meteora-card":{"id":"stories-card--meteora-card","name":"Meteora Card","title":"stories/Card","importPath":"./src/stories/Card.stories.tsx","tags":["story"],"kind":"stories/Card","story":"Meteora Card","parameters":{"__id":"stories-card--meteora-card","docsOnly":false,"fileName":"./src/stories/Card.stories.tsx"}},"stories-loader--primary":{"id":"stories-loader--primary","name":"Primary","title":"stories/Loader","importPath":"./src/stories/Loader.stories.tsx","tags":["story"],"kind":"stories/Loader","story":"Primary","parameters":{"__id":"stories-loader--primary","docsOnly":false,"fileName":"./src/stories/Loader.stories.tsx"}},"stories-navsectrion--primary":{"id":"stories-navsectrion--primary","name":"Primary","title":"stories/NavSectrion","importPath":"./src/stories/NavSectrion.stories.tsx","tags":["story"],"kind":"stories/NavSectrion","story":"Primary","parameters":{"__id":"stories-navsectrion--primary","docsOnly":false,"fileName":"./src/stories/NavSectrion.stories.tsx"}},"stories-navbarbutton--primary":{"id":"stories-navbarbutton--primary","name":"Primary","title":"stories/NavbarButton","importPath":"./src/stories/NavbarButton.stories.tsx","tags":["story"],"kind":"stories/NavbarButton","story":"Primary","parameters":{"__id":"stories-navbarbutton--primary","docsOnly":false,"fileName":"./src/stories/NavbarButton.stories.tsx"}},"stories-navbarbutton--active":{"id":"stories-navbarbutton--active","name":"Active","title":"stories/NavbarButton","importPath":"./src/stories/NavbarButton.stories.tsx","tags":["story"],"kind":"stories/NavbarButton","story":"Active","parameters":{"__id":"stories-navbarbutton--active","docsOnly":false,"fileName":"./src/stories/NavbarButton.stories.tsx"}},"stories-roundbutton--like":{"id":"stories-roundbutton--like","name":"Like","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Like","parameters":{"__id":"stories-roundbutton--like","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--share":{"id":"stories-roundbutton--share","name":"Share","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Share","parameters":{"__id":"stories-roundbutton--share","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--left-arrow":{"id":"stories-roundbutton--left-arrow","name":"Left Arrow","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Left Arrow","parameters":{"__id":"stories-roundbutton--left-arrow","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--down-arrow":{"id":"stories-roundbutton--down-arrow","name":"Down Arrow","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Down Arrow","parameters":{"__id":"stories-roundbutton--down-arrow","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--right-arrow":{"id":"stories-roundbutton--right-arrow","name":"Right Arrow","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Right Arrow","parameters":{"__id":"stories-roundbutton--right-arrow","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--play-button":{"id":"stories-roundbutton--play-button","name":"Play Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Play Button","parameters":{"__id":"stories-roundbutton--play-button","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--reminder-button":{"id":"stories-roundbutton--reminder-button","name":"Reminder Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Reminder Button","parameters":{"__id":"stories-roundbutton--reminder-button","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--repeat-button":{"id":"stories-roundbutton--repeat-button","name":"Repeat Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Repeat Button","parameters":{"__id":"stories-roundbutton--repeat-button","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--mix-button":{"id":"stories-roundbutton--mix-button","name":"Mix Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Mix Button","parameters":{"__id":"stories-roundbutton--mix-button","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-roundbutton--volume-button":{"id":"stories-roundbutton--volume-button","name":"Volume Button","title":"stories/RoundButton","importPath":"./src/stories/RoundButton.stories.tsx","tags":["story"],"kind":"stories/RoundButton","story":"Volume Button","parameters":{"__id":"stories-roundbutton--volume-button","docsOnly":false,"fileName":"./src/stories/RoundButton.stories.tsx"}},"stories-sharebutton--share-btn":{"id":"stories-sharebutton--share-btn","name":"Share Btn","title":"stories/ShareButton","importPath":"./src/stories/ShareButton.stories.tsx","tags":["story"],"kind":"stories/ShareButton","story":"Share Btn","parameters":{"__id":"stories-sharebutton--share-btn","docsOnly":false,"fileName":"./src/stories/ShareButton.stories.tsx"}},"stories-typography--regular":{"id":"stories-typography--regular","name":"Regular","title":"stories/Typography","importPath":"./src/stories/Typography.stories.tsx","tags":["story"],"kind":"stories/Typography","story":"Regular","parameters":{"__id":"stories-typography--regular","docsOnly":false,"fileName":"./src/stories/Typography.stories.tsx"}},"stories-typography--medium":{"id":"stories-typography--medium","name":"Medium","title":"stories/Typography","importPath":"./src/stories/Typography.stories.tsx","tags":["story"],"kind":"stories/Typography","story":"Medium","parameters":{"__id":"stories-typography--medium","docsOnly":false,"fileName":"./src/stories/Typography.stories.tsx"}},"stories-typography--semi-bold":{"id":"stories-typography--semi-bold","name":"Semi Bold","title":"stories/Typography","importPath":"./src/stories/Typography.stories.tsx","tags":["story"],"kind":"stories/Typography","story":"Semi Bold","parameters":{"__id":"stories-typography--semi-bold","docsOnly":false,"fileName":"./src/stories/Typography.stories.tsx"}}}} 2 | -------------------------------------------------------------------------------- /storybook-static/sb-manager/runtime.js: -------------------------------------------------------------------------------- 1 | import{Addon_TypesEnum,CHANNEL_CREATED,Provider,TELEMETRY_ERROR,UncaughtManagerError,addons,createBrowserChannel,dist_exports as dist_exports2,dist_exports2 as dist_exports3,dist_exports3 as dist_exports4,dist_exports4 as dist_exports5,dist_exports5 as dist_exports7,mockChannel,renderStorybookUI}from"./chunk-WZJAIZ64.js";import"./chunk-OQCANWBN.js";import"./chunk-TCCQ5FBZ.js";import{dist_exports,dist_exports2 as dist_exports6,require_react,require_react_dom,scope}from"./chunk-5AW67ZFX.js";import{__commonJS,__toESM}from"./chunk-ZEU7PDD3.js";var require_browser_dtector_umd_min=__commonJS({"../../node_modules/browser-dtector/browser-dtector.umd.min.js"(exports,module){(function(e,o){typeof exports=="object"&&typeof module<"u"?module.exports=o():typeof define=="function"&&define.amd?define(o):(e=typeof globalThis<"u"?globalThis:e||self).BrowserDetector=o()})(exports,function(){"use strict";function e(e2,o2){for(var r2=0;r21&&arguments[1]!==void 0?arguments[1]:-1,"})?")),r2=Number(e2).toString().match(o2);return r2?r2[0]:null},i=function(){return typeof window<"u"?window.navigator:null},t=function(){function t2(e2){var o2;(function(e3,o3){if(!(e3 instanceof o3))throw new TypeError("Cannot call a class as a function")})(this,t2),this.userAgent=e2||((o2=i())===null||o2===void 0?void 0:o2.userAgent)||null}var a,l,s;return a=t2,l=[{key:"parseUserAgent",value:function(e2){var t3,a2,l2,s2={},c=e2||this.userAgent||"",d=c.toLowerCase().replace(/\s\s+/g," "),u=/(edge)\/([\w.]+)/.exec(d)||/(edg)[/]([\w.]+)/.exec(d)||/(opr)[/]([\w.]+)/.exec(d)||/(opt)[/]([\w.]+)/.exec(d)||/(fxios)[/]([\w.]+)/.exec(d)||/(edgios)[/]([\w.]+)/.exec(d)||/(jsdom)[/]([\w.]+)/.exec(d)||/(samsungbrowser)[/]([\w.]+)/.exec(d)||/(electron)[/]([\w.]+)/.exec(d)||/(chrome)[/]([\w.]+)/.exec(d)||/(crios)[/]([\w.]+)/.exec(d)||/(opios)[/]([\w.]+)/.exec(d)||/(version)(applewebkit)[/]([\w.]+).*(safari)[/]([\w.]+)/.exec(d)||/(webkit)[/]([\w.]+).*(version)[/]([\w.]+).*(safari)[/]([\w.]+)/.exec(d)||/(applewebkit)[/]([\w.]+).*(safari)[/]([\w.]+)/.exec(d)||/(webkit)[/]([\w.]+)/.exec(d)||/(opera)(?:.*version|)[/]([\w.]+)/.exec(d)||/(msie) ([\w.]+)/.exec(d)||/(fennec)[/]([\w.]+)/.exec(d)||d.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(d)||d.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(d)||[],f=/(ipad)/.exec(d)||/(ipod)/.exec(d)||/(iphone)/.exec(d)||/(jsdom)/.exec(d)||/(windows phone)/.exec(d)||/(xbox)/.exec(d)||/(win)/.exec(d)||/(tablet)/.exec(d)||/(android)/.test(d)&&/(mobile)/.test(d)===!1&&["androidTablet"]||/(android)/.exec(d)||/(mac)/.exec(d)||/(linux)/.exec(d)||/(cros)/.exec(d)||[],p=u[5]||u[3]||u[1]||null,w=f[0]||null,x=u[4]||u[2]||null,b=i();p==="chrome"&&typeof(b==null||(t3=b.brave)===null||t3===void 0?void 0:t3.isBrave)=="function"&&(p="brave"),p&&(s2[p]=!0),w&&(s2[w]=!0);var v=!!(s2.tablet||s2.android||s2.androidTablet),m=!!(s2.ipad||s2.tablet||s2.androidTablet),g=!!(s2.android||s2.androidTablet||s2.tablet||s2.ipad||s2.ipod||s2.iphone||s2["windows phone"]),h=!!(s2.cros||s2.mac||s2.linux||s2.win),y=!!(s2.brave||s2.chrome||s2.crios||s2.opr||s2.safari||s2.edg||s2.electron),A=!!(s2.msie||s2.rv);return{name:(a2=o[p])!==null&&a2!==void 0?a2:null,platform:(l2=r[w])!==null&&l2!==void 0?l2:null,userAgent:c,version:x,shortVersion:x?n(parseFloat(x),2):null,isAndroid:v,isTablet:m,isMobile:g,isDesktop:h,isWebkit:y,isIE:A}}},{key:"getBrowserInfo",value:function(){var e2=this.parseUserAgent();return{name:e2.name,platform:e2.platform,userAgent:e2.userAgent,version:e2.version,shortVersion:e2.shortVersion}}}],s=[{key:"VERSION",get:function(){return"3.4.0"}}],l&&e(a.prototype,l),s&&e(a,s),Object.defineProperty(a,"prototype",{writable:!1}),t2}();return t})}});var REACT=__toESM(require_react()),REACTDOM=__toESM(require_react_dom());var values={react:REACT,"react-dom":REACTDOM,"@storybook/components":dist_exports7,"@storybook/channels":dist_exports4,"@storybook/core-events":dist_exports3,"@storybook/router":dist_exports2,"@storybook/theming":dist_exports6,"@storybook/api":dist_exports5,"@storybook/manager-api":dist_exports5,"@storybook/addons":{addons,types:Addon_TypesEnum,mockChannel},"@storybook/client-logger":dist_exports};var Keys=(Keys2=>(Keys2.react="__REACT__",Keys2["react-dom"]="__REACTDOM__",Keys2["@storybook/components"]="__STORYBOOKCOMPONENTS__",Keys2["@storybook/channels"]="__STORYBOOKCHANNELS__",Keys2["@storybook/core-events"]="__STORYBOOKCOREEVENTS__",Keys2["@storybook/router"]="__STORYBOOKROUTER__",Keys2["@storybook/theming"]="__STORYBOOKTHEMING__",Keys2["@storybook/api"]="__STORYBOOKAPI__",Keys2["@storybook/manager-api"]="__STORYBOOKAPI__",Keys2["@storybook/addons"]="__STORYBOOKADDONS__",Keys2["@storybook/client-logger"]="__STORYBOOKCLIENTLOGGER__",Keys2))(Keys||{});var import_browser_dtector=__toESM(require_browser_dtector_umd_min()),browserInfo;function getBrowserInfo(){return browserInfo||(browserInfo=new import_browser_dtector.default(scope.navigator?.userAgent).getBrowserInfo()),browserInfo}var errorMessages=["ResizeObserver loop completed with undelivered notifications.","ResizeObserver loop limit exceeded","Script error."],shouldSkipError=error=>errorMessages.includes(error?.message);function prepareForTelemetry(originalError){let error=originalError;return(originalError.target===scope||originalError.currentTarget===scope||originalError.srcElement===scope)&&(error=new Error(originalError.message),error.name=originalError.name||error.name),originalError.fromStorybook||(error=new UncaughtManagerError({error})),error.browserInfo=getBrowserInfo(),error}var{FEATURES,CONFIG_TYPE}=scope,ReactProvider=class extends Provider{constructor(){super();let channel=createBrowserChannel({page:"manager"});addons.setChannel(channel),channel.emit(CHANNEL_CREATED),this.addons=addons,this.channel=channel,scope.__STORYBOOK_ADDONS_CHANNEL__=channel,FEATURES?.storyStoreV7&&CONFIG_TYPE==="DEVELOPMENT"&&(this.serverChannel=this.channel,addons.setServerChannel(this.serverChannel))}getElements(type){return this.addons.getElements(type)}getConfig(){return this.addons.getConfig()}handleAPI(api){this.addons.loadAddons(api)}};Object.keys(Keys).forEach(key=>{scope[Keys[key]]=values[key]});scope.sendTelemetryError=error=>{shouldSkipError(error)||scope.__STORYBOOK_ADDONS_CHANNEL__.emit(TELEMETRY_ERROR,prepareForTelemetry(error))};scope.addEventListener("error",args=>{let error=args.error||args;scope.sendTelemetryError(error)});scope.addEventListener("unhandledrejection",({reason})=>{scope.sendTelemetryError(reason)});var{document}=scope,rootEl=document.getElementById("root");renderStorybookUI(rootEl,new ReactProvider); 2 | -------------------------------------------------------------------------------- /src/ui/Buttons/InteractiveButtons/ShareButton/ShareButton.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { 3 | FacebookShareButton, 4 | TelegramShareButton, 5 | TwitterShareButton, 6 | VKShareButton, 7 | WhatsappShareButton 8 | } from 'react-share' 9 | 10 | import styles from './ShareButton.module.scss' 11 | import { ShareButtonProps } from './types' 12 | 13 | function ShareButton({ title, hashtags, shareHandler }: ShareButtonProps) { 14 | const URL = `${window.location.protocol}//${window.location.host}${window.location.pathname}` 15 | 16 | return ( 17 |
18 |
19 | 33 | 52 | 75 | 98 | 112 | 150 |
151 |
152 | ) 153 | } 154 | 155 | export default ShareButton 156 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-backgrounds-3/manager-bundle.js: -------------------------------------------------------------------------------- 1 | try{ 2 | var ne=Object.create;var F=Object.defineProperty;var oe=Object.getOwnPropertyDescriptor;var ie=Object.getOwnPropertyNames;var ae=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var x=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,s)=>(typeof require<"u"?require:t)[s]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var L=(e,t)=>()=>(e&&(t=e(e=0)),t);var le=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ue=(e,t,s,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ie(t))!se.call(e,i)&&i!==s&&F(e,i,{get:()=>t[i],enumerable:!(o=oe(t,i))||o.enumerable});return e};var de=(e,t,s)=>(s=e!=null?ne(ae(e)):{},ue(t||!e||!e.__esModule?F(s,"default",{value:e,enumerable:!0}):s,e));var c=L(()=>{});var f=L(()=>{});var m=L(()=>{});var Q=le((J,D)=>{c();f();m();(function(e){if(typeof J=="object"&&typeof D<"u")D.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var t;typeof window<"u"||typeof window<"u"?t=window:typeof self<"u"?t=self:t=this,t.memoizerific=e()}})(function(){var e,t,s;return function o(i,g,l){function n(a,h){if(!g[a]){if(!i[a]){var d=typeof x=="function"&&x;if(!h&&d)return d(a,!0);if(r)return r(a,!0);var b=new Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}var p=g[a]={exports:{}};i[a][0].call(p.exports,function(y){var S=i[a][1][y];return n(S||y)},p,p.exports,o,i,g,l)}return g[a].exports}for(var r=typeof x=="function"&&x,u=0;u=0)return this.lastItem=this.list[r],this.list[r].val},l.prototype.set=function(n,r){var u;return this.lastItem&&this.isEqual(this.lastItem.key,n)?(this.lastItem.val=r,this):(u=this.indexOf(n),u>=0?(this.lastItem=this.list[u],this.list[u].val=r,this):(this.lastItem={key:n,val:r},this.list.push(this.lastItem),this.size++,this))},l.prototype.delete=function(n){var r;if(this.lastItem&&this.isEqual(this.lastItem.key,n)&&(this.lastItem=void 0),r=this.indexOf(n),r>=0)return this.size--,this.list.splice(r,1)[0]},l.prototype.has=function(n){var r;return this.lastItem&&this.isEqual(this.lastItem.key,n)?!0:(r=this.indexOf(n),r>=0?(this.lastItem=this.list[r],!0):!1)},l.prototype.forEach=function(n,r){var u;for(u=0;u0&&(B[O]={cacheItem:y,arg:arguments[O]},C?n(d,B):d.push(B),d.length>a&&r(d.shift())),p.wasMemoized=C,p.numArgs=O+1,A};return p.limit=a,p.wasMemoized=!1,p.cache=h,p.lru=d,p}};function n(a,h){var d=a.length,b=h.length,p,y,S;for(y=0;y=0&&(d=a[p],b=d.cacheItem.get(d.arg),!b||!b.size);p--)d.cacheItem.delete(d.arg)}function u(a,h){return a===h||a!==a&&h!==h}},{"map-or-similar":1}]},{},[3])(3)})});c();f();m();c();f();m();c();f();m();c();f();m();c();f();m();var Y=(()=>{let e;return typeof window<"u"?e=window:typeof globalThis<"u"?e=globalThis:typeof window<"u"?e=window:typeof self<"u"?e=self:e={},e})();c();f();m();function W(e){for(var t=[],s=1;s{if(e==="transparent")return"transparent";if(t.find(i=>i.value===e))return e;let o=t.find(i=>i.name===s);if(o)return o.value;if(s){let i=t.map(g=>g.name).join(", ");M.warn(W` 8 | Backgrounds Addon: could not find the default color "${s}". 9 | These are the available colors for your story based on your configuration: 10 | ${i}. 11 | `)}return"transparent"};c();f();m();var T=__REACT__,{Children:je,Component:Ve,Fragment:w,Profiler:Ze,PureComponent:Je,StrictMode:Qe,Suspense:Xe,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:et,cloneElement:tt,createContext:rt,createElement:nt,createFactory:ot,createRef:it,forwardRef:at,isValidElement:st,lazy:lt,memo:P,useCallback:U,useContext:ut,useDebugValue:dt,useEffect:ct,useImperativeHandle:ft,useLayoutEffect:mt,useMemo:j,useReducer:pt,useRef:ht,useState:V,version:gt}=__REACT__;c();f();m();var _t=__STORYBOOKAPI__,{ActiveTabs:Et,Consumer:vt,ManagerContext:Ot,Provider:It,addons:N,combineParameters:kt,controlOrMetaKey:Ct,controlOrMetaSymbol:xt,eventMatchesShortcut:At,eventToShortcut:Bt,isMacLike:Mt,isShortcutTaken:Lt,keyToSymbol:Rt,merge:wt,mockChannel:Pt,optionOrAltSymbol:Nt,shortcutMatchesShortcut:Gt,shortcutToHumanString:Ht,types:Z,useAddonState:Dt,useArgTypes:zt,useArgs:qt,useChannel:Kt,useGlobalTypes:Ft,useGlobals:G,useParameter:H,useSharedState:Yt,useStoryPrepared:Wt,useStorybookApi:$t,useStorybookState:Ut}=__STORYBOOKAPI__;var K=de(Q(),1);c();f();m();var rr=__STORYBOOKCOMPONENTS__,{A:nr,ActionBar:or,AddonPanel:ir,Badge:ar,Bar:sr,Blockquote:lr,Button:ur,ClipboardCode:dr,Code:cr,DL:fr,Div:mr,DocumentWrapper:pr,ErrorFormatter:hr,FlexBar:gr,Form:yr,H1:br,H2:Sr,H3:Tr,H4:_r,H5:Er,H6:vr,HR:Or,IconButton:z,IconButtonSkeleton:Ir,Icons:q,Img:kr,LI:Cr,Link:xr,ListItem:Ar,Loader:Br,OL:Mr,P:Lr,Placeholder:Rr,Pre:wr,ResetWrapper:Pr,ScrollArea:Nr,Separator:Gr,Spaced:Hr,Span:Dr,StorybookIcon:zr,StorybookLogo:qr,Symbols:Kr,SyntaxHighlighter:Fr,TT:Yr,TabBar:Wr,TabButton:$r,TabWrapper:Ur,Table:jr,Tabs:Vr,TabsState:Zr,TooltipLinkList:X,TooltipMessage:Jr,TooltipNote:Qr,UL:Xr,WithTooltip:ee,WithTooltipPure:en,Zoom:tn,codeCommon:rn,components:nn,createCopyToClipboardFunction:on,getStoryHref:an,icons:sn,interleaveSeparators:ln,nameSpaceClassNames:un,resetComponents:dn,withReset:cn}=__STORYBOOKCOMPONENTS__;c();f();m();var gn=__STORYBOOKTHEMING__,{CacheProvider:yn,ClassNames:bn,Global:Sn,ThemeProvider:Tn,background:_n,color:En,convert:vn,create:On,createCache:In,createGlobal:kn,createReset:Cn,css:xn,darken:An,ensure:Bn,ignoreSsrWarning:Mn,isPropValid:Ln,jsx:Rn,keyframes:wn,lighten:Pn,styled:te,themes:Nn,typography:Gn,useTheme:Hn,withTheme:Dn}=__STORYBOOKTHEMING__;var ce=te.span(({background:e})=>({borderRadius:"1rem",display:"block",height:"1rem",width:"1rem",background:e}),({theme:e})=>({boxShadow:`${e.appBorderColor} 0 0 0 1px inset`})),re=(0,K.default)(1e3)((e,t,s,o,i,g)=>({id:e||t,title:t,onClick:()=>{i({selected:s,name:t})},value:s,right:o?T.createElement(ce,{background:s}):void 0,active:g})),fe=(0,K.default)(10)((e,t,s)=>{let o=e.map(({name:i,value:g})=>re(null,i,g,!0,s,g===t));return t!=="transparent"?[re("reset","Clear background","transparent",null,s,!1),...o]:o}),me={default:null,disable:!0,values:[]},pe=P(function(){let e=H(I,me),[t,s]=V(!1),[o,i]=G(),g=o[I]?.value,l=j(()=>$(g,e.values,e.default),[e,g]);Array.isArray(e)&&M.warn("Addon Backgrounds api has changed in Storybook 6.0. Please refer to the migration guide: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md");let n=U(r=>{i({[I]:{...o[I],value:r}})},[e,o,i]);return e.disable?null:T.createElement(w,null,T.createElement(ee,{placement:"top",closeOnOutsideClick:!0,tooltip:({onHide:r})=>T.createElement(X,{links:fe(e.values,l,({selected:u})=>{l!==u&&n(u),r()})}),onVisibleChange:s},T.createElement(z,{key:"background",title:"Change the background of the preview",active:l!=="transparent"||t},T.createElement(q,{icon:"photo"}))))}),he=P(function(){let[e,t]=G(),{grid:s}=H(I,{grid:{disable:!1}});if(s?.disable)return null;let o=e[I]?.grid||!1;return T.createElement(z,{key:"background",active:o,title:"Apply a grid to the preview",onClick:()=>t({[I]:{...e[I],grid:!o}})},T.createElement(q,{icon:"grid"}))});N.register(R,()=>{N.add(R,{title:"Backgrounds",type:Z.TOOL,match:({viewMode:e})=>!!(e&&e.match(/^(story|docs)$/)),render:()=>T.createElement(w,null,T.createElement(pe,null),T.createElement(he,null))})}); 12 | }catch(e){ console.error("[Storybook] One of your manager-entries failed: " + import.meta.url, e); } 13 | -------------------------------------------------------------------------------- /storybook-static/sb-addons/essentials-viewport-4/manager-bundle.js: -------------------------------------------------------------------------------- 1 | try{ 2 | var ae=Object.create;var H=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,ue=Object.prototype.hasOwnProperty;var R=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var M=(e,t)=>()=>(e&&(t=e(e=0)),t);var de=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var me=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let p of pe(t))!ue.call(e,p)&&p!==o&&H(e,p,{get:()=>t[p],enumerable:!(n=le(t,p))||n.enumerable});return e};var ce=(e,t,o)=>(o=e!=null?ae(he(e)):{},me(t||!e||!e.__esModule?H(o,"default",{value:e,enumerable:!0}):o,e));var c=M(()=>{});var f=M(()=>{});var g=M(()=>{});var te=de((ee,V)=>{c();f();g();(function(e){if(typeof ee=="object"&&typeof V<"u")V.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var t;typeof window<"u"||typeof window<"u"?t=window:typeof self<"u"?t=self:t=this,t.memoizerific=e()}})(function(){var e,t,o;return function n(p,m,h){function r(s,y){if(!m[s]){if(!p[s]){var u=typeof R=="function"&&R;if(!y&&u)return u(s,!0);if(i)return i(s,!0);var b=new Error("Cannot find module '"+s+"'");throw b.code="MODULE_NOT_FOUND",b}var l=m[s]={exports:{}};p[s][0].call(l.exports,function(a){var d=p[s][1][a];return r(d||a)},l,l.exports,n,p,m,h)}return m[s].exports}for(var i=typeof R=="function"&&R,x=0;x=0)return this.lastItem=this.list[i],this.list[i].val},h.prototype.set=function(r,i){var x;return this.lastItem&&this.isEqual(this.lastItem.key,r)?(this.lastItem.val=i,this):(x=this.indexOf(r),x>=0?(this.lastItem=this.list[x],this.list[x].val=i,this):(this.lastItem={key:r,val:i},this.list.push(this.lastItem),this.size++,this))},h.prototype.delete=function(r){var i;if(this.lastItem&&this.isEqual(this.lastItem.key,r)&&(this.lastItem=void 0),i=this.indexOf(r),i>=0)return this.size--,this.list.splice(i,1)[0]},h.prototype.has=function(r){var i;return this.lastItem&&this.isEqual(this.lastItem.key,r)?!0:(i=this.indexOf(r),i>=0?(this.lastItem=this.list[i],!0):!1)},h.prototype.forEach=function(r,i){var x;for(x=0;x0&&(k[I]={cacheItem:a,arg:arguments[I]},E?r(u,k):u.push(k),u.length>s&&i(u.shift())),l.wasMemoized=E,l.numArgs=I+1,A};return l.limit=s,l.wasMemoized=!1,l.cache=y,l.lru=u,l}};function r(s,y){var u=s.length,b=y.length,l,a,d;for(a=0;a=0&&(u=s[l],b=u.cacheItem.get(u.arg),!b||!b.size);l--)u.cacheItem.delete(u.arg)}function x(s,y){return s===y||s!==s&&y!==y}},{"map-or-similar":1}]},{},[3])(3)})});c();f();g();c();f();g();c();f();g();c();f();g();var w="storybook/viewport",q="viewport",Ne=`${w}/update`,Ve=`${w}/configure`,Be=`${w}/setStoryDefaultViewport`,ze=`${w}/viewportChanged`,W=(e,t)=>e.indexOf(t),fe=(e,t)=>{let o=W(e,t);return o===e.length-1?e[0]:e[o+1]},ge=(e,t)=>{let o=W(e,t);return o<1?e[e.length-1]:e[o-1]},F=async(e,t,o)=>{await e.setAddonShortcut(w,{label:"Previous viewport",defaultShortcut:["shift","V"],actionName:"previous",action:()=>{let{selected:n,isRotated:p}=e.getAddonState(w);t({selected:ge(o,n),isRotated:p})}}),await e.setAddonShortcut(w,{label:"Next viewport",defaultShortcut:["V"],actionName:"next",action:()=>{let{selected:n,isRotated:p}=e.getAddonState(w);t({selected:fe(o,n),isRotated:p})}}),await e.setAddonShortcut(w,{label:"Reset viewport",defaultShortcut:["alt","V"],actionName:"reset",action:()=>{let{isRotated:n}=e.getAddonState(w);t({selected:"reset",isRotated:n})}})};c();f();g();var G={mobile1:{name:"Small mobile",styles:{height:"568px",width:"320px"},type:"mobile"},mobile2:{name:"Large mobile",styles:{height:"896px",width:"414px"},type:"mobile"},tablet:{name:"Tablet",styles:{height:"1112px",width:"834px"},type:"tablet"}};c();f();g();var S=__REACT__,{Children:$e,Component:je,Fragment:Y,Profiler:Xe,PureComponent:Ke,StrictMode:Ze,Suspense:Je,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Qe,cloneElement:et,createContext:tt,createElement:U,createFactory:it,createRef:rt,forwardRef:ot,isValidElement:nt,lazy:st,memo:$,useCallback:at,useContext:lt,useDebugValue:pt,useEffect:L,useImperativeHandle:ht,useLayoutEffect:ut,useMemo:dt,useReducer:mt,useRef:j,useState:X,version:ct}=__REACT__;c();f();g();var yt=__STORYBOOKAPI__,{ActiveTabs:bt,Consumer:wt,ManagerContext:St,Provider:It,addons:N,combineParameters:Tt,controlOrMetaKey:_t,controlOrMetaSymbol:vt,eventMatchesShortcut:Ot,eventToShortcut:Et,isMacLike:Pt,isShortcutTaken:Rt,keyToSymbol:Ct,merge:At,mockChannel:kt,optionOrAltSymbol:Lt,shortcutMatchesShortcut:Mt,shortcutToHumanString:Nt,types:K,useAddonState:Z,useArgTypes:Vt,useArgs:Bt,useChannel:zt,useGlobalTypes:Dt,useGlobals:Ht,useParameter:J,useSharedState:qt,useStoryPrepared:Wt,useStorybookApi:Q,useStorybookState:Ft}=__STORYBOOKAPI__;var D=ce(te(),1);c();f();g();var Jt=__STORYBOOKTHEMING__,{CacheProvider:Qt,ClassNames:ei,Global:ie,ThemeProvider:ti,background:ii,color:ri,convert:oi,create:ni,createCache:si,createGlobal:ai,createReset:li,css:pi,darken:hi,ensure:ui,ignoreSsrWarning:di,isPropValid:mi,jsx:ci,keyframes:fi,lighten:gi,styled:C,themes:xi,typography:yi,useTheme:bi,withTheme:re}=__STORYBOOKTHEMING__;c();f();g();var _i=__STORYBOOKCOMPONENTS__,{A:vi,ActionBar:Oi,AddonPanel:Ei,Badge:Pi,Bar:Ri,Blockquote:Ci,Button:Ai,ClipboardCode:ki,Code:Li,DL:Mi,Div:Ni,DocumentWrapper:Vi,ErrorFormatter:Bi,FlexBar:zi,Form:Di,H1:Hi,H2:qi,H3:Wi,H4:Fi,H5:Gi,H6:Yi,HR:Ui,IconButton:B,IconButtonSkeleton:$i,Icons:z,Img:ji,LI:Xi,Link:Ki,ListItem:Zi,Loader:Ji,OL:Qi,P:er,Placeholder:tr,Pre:ir,ResetWrapper:rr,ScrollArea:or,Separator:nr,Spaced:sr,Span:ar,StorybookIcon:lr,StorybookLogo:pr,Symbols:hr,SyntaxHighlighter:ur,TT:dr,TabBar:mr,TabButton:cr,TabWrapper:fr,Table:gr,Tabs:xr,TabsState:yr,TooltipLinkList:oe,TooltipMessage:br,TooltipNote:wr,UL:Sr,WithTooltip:ne,WithTooltipPure:Ir,Zoom:Tr,codeCommon:_r,components:vr,createCopyToClipboardFunction:Or,getStoryHref:Er,icons:Pr,interleaveSeparators:Rr,nameSpaceClassNames:Cr,resetComponents:Ar,withReset:kr}=__STORYBOOKCOMPONENTS__;var ye=(0,D.default)(50)(e=>[...be,...Object.entries(e).map(([t,{name:o,...n}])=>({...n,id:t,title:o}))]),P={id:"reset",title:"Reset viewport",styles:null,type:"other"},be=[P],we=(0,D.default)(50)((e,t,o,n,p)=>e.filter(m=>m.id!==P.id||t.id!==m.id).map(m=>({...m,onClick:()=>{o({...n,selected:m.id}),p()}}))),Se="storybook-preview-wrapper",Ie=({width:e,height:t,...o})=>({...o,height:e,width:t}),Te=C.div(()=>({display:"inline-flex"})),se=C.div(({theme:e})=>({display:"inline-block",textDecoration:"none",padding:10,fontWeight:e.typography.weight.bold,fontSize:e.typography.size.s2-1,lineHeight:"1",height:40,border:"none",borderTop:"3px solid transparent",borderBottom:"3px solid transparent",background:"transparent"})),_e=C(B)(()=>({display:"inline-flex",alignItems:"center"})),ve=C.div(({theme:e})=>({fontSize:e.typography.size.s2-1,marginLeft:10})),Oe=(e,t,o)=>{if(t===null)return;let n=typeof t=="function"?t(e):t;return o?Ie(n):n},Ee=$(re(({theme:e})=>{let{viewports:t=G,defaultOrientation:o="portrait",defaultViewport:n=P.id,disable:p}=J(q,{}),[m,h]=Z(w,{selected:n,isRotated:o==="landscape"}),r=ye(t),i=Q(),[x,s]=X(!1);r.find(d=>d.id===n)||console.warn(`Cannot find "defaultViewport" of "${n}" in addon-viewport configs, please check the "viewports" setting in the configuration.`),L(()=>{F(i,h,Object.keys(t))},[t]),L(()=>{h({selected:n||(m.selected&&t[m.selected]?m.selected:P.id),isRotated:o==="landscape"})},[o,n]);let{selected:y,isRotated:u}=m,b=r.find(d=>d.id===y)||r.find(d=>d.id===n)||r.find(d=>d.default)||P,l=j(),a=Oe(l.current,b.styles,u);return L(()=>{l.current=a},[b]),p||Object.entries(t).length===0?null:S.createElement(Y,null,S.createElement(ne,{placement:"top",tooltip:({onHide:d})=>S.createElement(oe,{links:we(r,b,h,m,d)}),closeOnOutsideClick:!0,onVisibleChange:s},S.createElement(_e,{key:"viewport",title:"Change the size of the preview",active:x||!!a,onDoubleClick:()=>{h({...m,selected:P.id})}},S.createElement(z,{icon:"grow"}),a?S.createElement(ve,null,u?`${b.title} (L)`:`${b.title} (P)`):null)),a?S.createElement(Te,null,S.createElement(ie,{styles:{'iframe[data-is-storybook="true"]':{margin:"auto",transition:"none",position:"relative",border:"1px solid black",boxShadow:"0 0 100px 100vw rgba(0,0,0,0.5)",...a},[`#${Se}`]:{padding:e.layoutMargin,alignContent:"center",alignItems:"center",justifyContent:"center",justifyItems:"center",overflow:"auto",display:"grid",gridTemplateColumns:"100%",gridTemplateRows:"100%"}}}),S.createElement(se,{title:"Viewport width"},a.width.replace("px","")),S.createElement(B,{key:"viewport-rotate",title:"Rotate viewport",onClick:()=>{h({...m,isRotated:!u})}},S.createElement(z,{icon:"transfer"})),S.createElement(se,{title:"Viewport height"},a.height.replace("px",""))):null)}));N.register(w,()=>{N.add(w,{title:"viewport / media-queries",type:K.TOOL,match:({viewMode:e})=>e==="story",render:()=>U(Ee,null)})}); 3 | }catch(e){ console.error("[Storybook] One of your manager-entries failed: " + import.meta.url, e); } 4 | --------------------------------------------------------------------------------