Compare commits

..

34 Commits

Author SHA1 Message Date
Gorji c8ddc578e7 4040 3 years ago
Gorji 2222c27c62 some Fixes 4 years ago
Gorji be9c78966a set 4 years ago
Gorji 9042f31b7f fix 4 years ago
Gorji 57e7269d23 بهطثس 4 years ago
Gorji 23d89c9322 some messga fixes 4 years ago
Gorji 93982e50aa fix suggest 4 years ago
Gorji 5d8b70920a avatar 4 years ago
Reza_ashrafi 70c6ebcc5c reza add 2d support 4 years ago
Gorji 1f41ec6a12 Merge branch 'front' of https://git.sitenevis.com/Reza_ashrafi/ChatPWA into front 4 years ago
Gorji 3bda4d1fc0 some 4 years ago
Reza_ashrafi 087526d1c6 Merge branch 'front' of https://git.sitenevis.com/Reza_ashrafi/ChatPWA into front 4 years ago
Reza_ashrafi 55d88e895a ingreza added someth 4 years ago
Reza_ashrafi 36afd8c740 reza added somethins 4 years ago
Gorji cf527dea86 some Fixes 4 years ago
Reza_ashrafi d4e990a5db s 4 years ago
Reza_ashrafi 9b48a975ea reza added timer 4 years ago
Gorji e0c90cdcb2 need fix 4 years ago
Gorji 759bdc0bc3 redux fix 4 years ago
Gorji c4c16adeb3 eslint 4 years ago
Gorji ab8c506dd5 @media 4 years ago
Gorji 76af91c37c remove warning 4 years ago
Gorji 817fccd4fa some essential fixes 4 years ago
Reza_ashrafi 4cff5d7ea4 reza added Gallery 4 years ago
Reza_ashrafi af0ac4d462 reza added NavbarDrawer,Leaflet,Suggests Bar, search bar 4 years ago
Reza_ashrafi 50c5281e34 reza added 2d message to chat 4 years ago
Reza_ashrafi d8e92cf1bd reza added background images 4 years ago
Reza_ashrafi f10611c651 reza added document uploading 4 years ago
Reza_ashrafi 72ff8b2ba8 reza added Files view 4 years ago
Reza_ashrafi de82826d86 reza added auth component 4 years ago
Reza_ashrafi c7872dd9e8 reza added video and image and music 4 years ago
Reza_ashrafi 897310c992 reza added voice to chat 4 years ago
Reza_ashrafi 3d25ab8ccc reza added Chatroom and react vocie recorder 4 years ago
Reza_ashrafi 6423cdeddf reza added ChatList to project views 4 years ago
  1. 3
      .babelrc
  2. 23
      .eslintignore
  3. 19
      .eslintrc
  4. 23
      .prettierignore
  5. 16
      .prettierrc
  6. 5
      .vscode/extensions.json
  7. 15710
      package-lock.json
  8. 71
      package.json
  9. 11
      public/index.html
  10. 19
      src/App.css
  11. 20
      src/App.js
  12. 13
      src/Redux/actions/chat.js
  13. 7
      src/Redux/actions/index.js
  14. 13
      src/Redux/actions/message.js
  15. 3
      src/Redux/actions/public.js
  16. 9
      src/Redux/actions/user.js
  17. 7
      src/Redux/index.js
  18. 75
      src/Redux/proxy.js
  19. 49
      src/Redux/reducers/chat.js
  20. 7
      src/Redux/reducers/index.js
  21. 1135
      src/Redux/reducers/message.js
  22. 12
      src/Redux/reducers/public.js
  23. 15
      src/Redux/reducers/user.js
  24. 13
      src/Redux/store.js
  25. 32
      src/Router.js
  26. BIN
      src/assets/IRANSans/About_Different_formats.pdf
  27. BIN
      src/assets/IRANSans/About_Different_formats.png
  28. BIN
      src/assets/IRANSans/Farsi_numerals/Black.ttf
  29. BIN
      src/assets/IRANSans/Farsi_numerals/Bold.ttf
  30. BIN
      src/assets/IRANSans/Farsi_numerals/English to Farsi numbers help.pdf
  31. BIN
      src/assets/IRANSans/Farsi_numerals/Farsi_numerals.png
  32. BIN
      src/assets/IRANSans/Farsi_numerals/IRANSans(FaNum).ttf
  33. BIN
      src/assets/IRANSans/Farsi_numerals/IRANSans(FaNum)_Medium.ttf
  34. BIN
      src/assets/IRANSans/Farsi_numerals/IRANSans(FaNum)_UltraLight.ttf
  35. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/IRANSansMobile(FaNum).ttf
  36. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/IRANSansMobile(FaNum)_Black.ttf
  37. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/IRANSansMobile(FaNum)_Bold.ttf
  38. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/IRANSansMobile(FaNum)_Light.ttf
  39. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/IRANSansMobile(FaNum)_Medium.ttf
  40. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/IRANSansMobile(FaNum)_UltraLight.ttf
  41. BIN
      src/assets/IRANSans/Farsi_numerals/MobileFonts/MobileFonts.png
  42. BIN
      src/assets/IRANSans/Farsi_numerals/light.ttf
  43. 281
      src/assets/IRANSans/Farsi_numerals/webFonts/IRANSans.html
  44. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/WebFonts.png
  45. 86
      src/assets/IRANSans/Farsi_numerals/webFonts/css/fontiran.css
  46. 191
      src/assets/IRANSans/Farsi_numerals/webFonts/css/style.css
  47. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/eot/IRANSansWeb(FaNum).eot
  48. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/eot/IRANSansWeb(FaNum)_Black.eot
  49. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/eot/IRANSansWeb(FaNum)_Bold.eot
  50. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/eot/IRANSansWeb(FaNum)_Light.eot
  51. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/eot/IRANSansWeb(FaNum)_Medium.eot
  52. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot
  53. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/ttf/IRANSansWeb(FaNum).ttf
  54. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/ttf/IRANSansWeb(FaNum)_Black.ttf
  55. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf
  56. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/ttf/IRANSansWeb(FaNum)_Light.ttf
  57. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf
  58. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf
  59. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff/IRANSansWeb(FaNum).woff
  60. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff/IRANSansWeb(FaNum)_Black.woff
  61. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff/IRANSansWeb(FaNum)_Bold.woff
  62. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff/IRANSansWeb(FaNum)_Light.woff
  63. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff/IRANSansWeb(FaNum)_Medium.woff
  64. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff
  65. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff2/IRANSansWeb(FaNum).woff2
  66. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff2/IRANSansWeb(FaNum)_Black.woff2
  67. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2
  68. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff2/IRANSansWeb(FaNum)_Light.woff2
  69. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2
  70. BIN
      src/assets/IRANSans/Farsi_numerals/webFonts/fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2
  71. 18
      src/assets/IRANSans/FontLicense.txt
  72. BIN
      src/assets/IRANSans/IRANSans.ttf
  73. BIN
      src/assets/IRANSans/IRANSans5.jpg
  74. 81
      src/assets/IRANSans/IRANSans5_5.html
  75. BIN
      src/assets/IRANSans/IRANSans_Black.ttf
  76. BIN
      src/assets/IRANSans/IRANSans_Bold.ttf
  77. BIN
      src/assets/IRANSans/IRANSans_Light.ttf
  78. BIN
      src/assets/IRANSans/IRANSans_Medium.ttf
  79. BIN
      src/assets/IRANSans/IRANSans_UltraLight.ttf
  80. BIN
      src/assets/IRANSans/MobileFonts/IRANSansMobile.ttf
  81. BIN
      src/assets/IRANSans/MobileFonts/IRANSansMobile_Black.ttf
  82. BIN
      src/assets/IRANSans/MobileFonts/IRANSansMobile_Bold.ttf
  83. BIN
      src/assets/IRANSans/MobileFonts/IRANSansMobile_Light.ttf
  84. BIN
      src/assets/IRANSans/MobileFonts/IRANSansMobile_Medium.ttf
  85. BIN
      src/assets/IRANSans/MobileFonts/IRANSansMobile_UltraLight.ttf
  86. BIN
      src/assets/IRANSans/MobileFonts/MobileFonts.png
  87. BIN
      src/assets/IRANSans/MonoSpaced_Numral/IRANSansMonoSpacedNum.ttf
  88. BIN
      src/assets/IRANSans/MonoSpaced_Numral/IRANSansMonoSpacedNum_Black.ttf
  89. BIN
      src/assets/IRANSans/MonoSpaced_Numral/IRANSansMonoSpacedNum_Bold.ttf
  90. BIN
      src/assets/IRANSans/MonoSpaced_Numral/IRANSansMonoSpacedNum_Light.ttf
  91. BIN
      src/assets/IRANSans/MonoSpaced_Numral/IRANSansMonoSpacedNum_Medium.ttf
  92. BIN
      src/assets/IRANSans/MonoSpaced_Numral/IRANSansMonoSpacedNum_UltraLight.ttf
  93. BIN
      src/assets/IRANSans/MonoSpaced_Numral/MonoSpaced Numral.png
  94. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/IRANSansFaNum_Black.ttf
  95. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/IRANSansOnlyNumeral.ttf
  96. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/IRANSansOnlyNumeral_Bold.ttf
  97. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/IRANSansOnlyNumeral_Light.ttf
  98. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/IRANSansOnlyNumeral_UltraLight.ttf
  99. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/IRANSansOnlyNumral_Medium.ttf
  100. BIN
      src/assets/IRANSans/MonoSpaced_Numral/OnlyNumeral/woff/IRANSansOnlyNumeral.woff
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,3 @@
{
"plugins": ["wildcard"]
}

@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

@ -0,0 +1,19 @@
{
"parser": "babel-eslint",
"parserOptions": {
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"experimentalDecorators": true,
"jsx": true
},
"sourceType": "module"
},
"ecmaFeatures": {
"es6": true,
"airbnb": true
},
"rules": {
"semi": 2
}
// more configuration options here!
}

@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

@ -0,0 +1,16 @@
{
"printWidth": 100,
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"overrides": [
{
"files": ["*.html", "*.css", "*.scss"]
}
],
"no-multiple-empty-lines": [
{
"max": 1
}
]
}

@ -0,0 +1,5 @@
{
"recommendations": [
"rvest.vs-code-prettier-eslint"
]
}

15710
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -3,36 +3,71 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^4.11.4",
"@material-ui/icons": "^4.11.2",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"array-move": "^3.0.1",
"audio-react-recorder": "^1.0.4",
"axios": "^0.21.1",
"babel-eslint": "^10.1.0",
"babel-plugin-import-directory": "^1.1.0",
"babel-plugin-wildcard": "^7.0.0",
"bootstrap": "^4.6.0",
"create-index": "^2.6.0",
"history": "^5.0.0",
"jalali-moment": "^3.3.10",
"leaflet": "^1.7.1",
"node-sass": "^5.0.0",
"prettier": "^2.3.0",
"react": "^17.0.2",
"react-audio-player": "^0.17.0",
"react-dom": "^17.0.2",
"react-elastic-carousel": "^0.11.5",
"react-leaflet": "^3.2.0",
"react-player": "^2.9.0",
"react-redux": "^7.2.4",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"react-sortable-hoc": "^2.0.0",
"react-toastify": "^7.0.4",
"redux-devtools-extension": "^2.13.9",
"redux-thunk": "^2.3.0",
"sass": "^1.34.0",
"styled-components": "^5.3.0",
"web-vitals": "^1.0.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
"eject": "react-scripts eject",
"prettier": "prettier --write \"**/*\"",
"eslint": "eslint \"**/*.js\"",
"index": "create-index ./src/Redux -r"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
"browserslist": [
">0.2%",
"not dead",
"not op_mini all"
],
"devDependencies": {
"@imaginary-cloud/eslint-config-react": "1.0.1",
"eslint": "^7.15.0",
"eslint-config-airbnb": "18.1.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-config-prettier": "^7.0.0",
"eslint-import-resolver-babel-module": "^5.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "6.2.3",
"eslint-plugin-prettier": "^3.3.0",
"eslint-plugin-react": "7.19.0",
"eslint-plugin-react-hooks": "2.5.1",
"prettier": "^2.2.1"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
"plugins": [
"wildcard",
"import-directory"
]
}

@ -5,10 +5,7 @@
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<meta name="description" content="Web site created using create-react-app" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
@ -25,6 +22,12 @@
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
<link
rel="stylesheet"
href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css"
integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A=="
crossorigin=""
/>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

@ -1,7 +1,12 @@
@import 'assets/IRANSans/WebFonts/css/fontiran.css';
.App {
text-align: center;
}
#root {
}
.App-logo {
height: 40vmin;
pointer-events: none;
@ -36,3 +41,17 @@
transform: rotate(360deg);
}
}
a {
color: black !important;
}
* {
font-family: IRANSansNumeral !important;
box-sizing: border-box !important;
}
@font-face {
font-family: IRANSansNumeral;
src: url(assets/IRANSans/Farsi_numerals/IRANSans\(FaNum\)_Light.ttf);
}

@ -1,11 +1,15 @@
import './App.css';
function App() {
return (
<div className="App">
</div>
);
import React, { Component } from 'react';
import AppRouter from './Router';
import store from './Redux/store';
import { Provider } from 'react-redux';
class App extends Component {
render() {
return (
<Provider store={store}>
<AppRouter />
</Provider>
);
}
}
export default App;

@ -0,0 +1,13 @@
import proxy from '../proxy';
export const list =
(data = {}) =>
async (dispatch) =>
(await proxy.get('chat/list', data)).dispatch(dispatch);
export const info =
(data = {}) =>
async (dispatch) =>
(await proxy.get('chat/info', data)).dispatch(dispatch);
export const bio =
(data = {}) =>
async (dispatch) =>
(await proxy.get('chat/bio', data)).dispatch(dispatch);

@ -0,0 +1,7 @@
// @create-index
export { default as chat } from './chat.js';
export { default as message } from './message.js';
export { default as public } from './public.js';
export { default as user } from './user.js';

@ -0,0 +1,13 @@
import proxy from '../proxy';
export const list =
(data = {}) =>
async (dispatch) =>
(await proxy.get('message/list', data)).dispatch(dispatch);
export const send =
(data = {}) =>
async (dispatch) =>
(await proxy.post('message/send', data)).dispatch(dispatch);
export const sendKeys =
(data = {}) =>
async (dispatch) =>
(await proxy.post('message/sendKeys', data)).dispatch(dispatch);

@ -0,0 +1,3 @@
import proxy from '../proxy';
export const otp = (data) => async (dispatch) =>
(await proxy.get('public/otp', data)).dispatch(dispatch);

@ -0,0 +1,9 @@
import proxy from '../proxy';
export const login =
(data = {}) =>
async (dispatch) =>
(await proxy.login(data)).dispatch(dispatch);
export const logout =
(data = {}) =>
async (dispatch) =>
(await proxy.logout(data)).dispatch(dispatch);

@ -0,0 +1,7 @@
// @create-index
export { default as actions } from './actions';
export { default as proxy } from './proxy.js';
export { default as reducers } from './reducers';
export { default as store } from './store.js';

@ -0,0 +1,75 @@
import axios from 'axios';
import { toast } from 'react-toastify';
const baseURL = 'https://chatstory.ir/api/v1';
const token = '';
const loginURL = 'user/otp/login';
const logoutURL = 'user/logout';
window.baseURL = baseURL;
const Axios = axios.create({
withCredentials: true,
validateStatus: null,
baseURL,
});
class dispatch {}
class Proxy {
get = (url, params, opt = {}) => this.check(url, () => Axios.get(url, { params, ...opt }));
post = (url, params, opt = {}) => this.check(url, () => Axios.post(url, params, opt));
put = (url, params, opt = {}) => this.check(url, () => Axios.put(url, params, opt));
delete = (url, params, opt = {}) => this.check(url, () => Axios.delete(url, params, opt));
result = (url, data) => ({
...data,
dispatch: (dispatch) => {
dispatch({ type: url, data });
return data;
},
});
check = async (url, fetch) => {
let response = await fetch();
switch (response.status) {
case 200:
return this.result(url, response.data.data);
case 401:
if (await this.refresh()) return this.result(url, (await fetch()).data.data);
break;
default:
toast.error(response.data.message);
}
return false;
};
refresh = async () => {
let refresh = localStorage.getItem('refresh');
if (!refresh) window.location.href = '/';
let login = await this.login({}, { headers: { Authorization: `Bearer ${refresh}` } });
return login ? true : false;
};
login = async (data, opt = { headers: { Authorization: `Bearer ${token}` } }) => {
const login = await this.post(loginURL, data, opt);
if (!login || !login.refreshToken) return this.result('login', false);
localStorage.setItem('refresh', login.refreshToken);
delete login.refreshToken;
localStorage.setItem('userData', JSON.stringify(login));
if (data != {}) window.router.setState({ islogin: true });
return this.result('login', login);
};
logout = async () => {
this.post(logoutURL);
localStorage.removeItem('refresh');
localStorage.removeItem('userData');
window.router.setState({ islogin: false });
return this.result('logout', {});
};
status = () => {
let refresh = localStorage.getItem('refresh');
let userData = localStorage.getItem('userData');
if (!refresh) return false;
if (refresh == 'undefined') {
localStorage.removeItem('refresh');
localStorage.removeItem('userData');
return false;
}
return JSON.parse(userData);
};
}
const _proxy = new Proxy();
export default _proxy;

@ -0,0 +1,49 @@
const initialState = {
list: [
{
badge: '1',
description: null,
fileId: null,
id: 1001,
imageUrl: 'https://chatstory.ir/api/v1/file/download/null',
lastMessage: 'سلام',
name: 'شکافنده زمان',
pid: null,
price: 0,
status: 0,
type: 'chatStory',
updatedAt: '2021-04-13T23:42:12.775Z',
username: null,
},
],
info: {
fileId: null,
subTitle: 'آنلاین',
title: 'ساره',
users: [
{ id: 1, name: 'پلیر', displayName: 'پلیر' },
{ id: 2, name: 'ساره', displayName: 'ساره' },
],
},
bio: {
album: [],
images: [],
videos: [],
music: [],
documnet: [],
link: [],
},
};
export default function chat(state = initialState, action) {
let { type, data } = action;
switch (type) {
// case 'chat/list':
// return { ...state, list: data };
// case 'chat/info':
// return { ...state, info: data };
case 'chat/bio':
return { ...state, bio: data };
default:
return state;
}
}

@ -0,0 +1,7 @@
// @create-index
export { default as chat } from './chat.js';
export { default as message } from './message.js';
export { default as public } from './public.js';
export { default as user } from './user.js';

File diff suppressed because it is too large Load Diff

@ -0,0 +1,12 @@
const initialState = {
otp: null,
};
export default function publics(state = initialState, action) {
let { type, data } = action;
switch (type) {
case 'public/otp':
return { ...state, ...data };
default:
return state;
}
}

@ -0,0 +1,15 @@
import proxy from '../proxy';
const initialState = {
isLogin: proxy.status(),
};
export default function user(state = initialState, action) {
let { type, data } = action;
switch (type) {
case 'login':
return { ...state, ...proxy.status(), islogin: proxy.status(), ...data };
case 'logout':
return { ...state, islogin: proxy.status() };
default:
return state;
}
}

@ -0,0 +1,13 @@
import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import { combineReducers } from 'redux';
import * as reducers from './reducers';
import thunk from 'redux-thunk';
const initialState = {};
const middleware = [thunk];
const store = createStore(
combineReducers(reducers),
initialState,
composeWithDevTools(applyMiddleware(...middleware))
);
export default store;

@ -0,0 +1,32 @@
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import proxy from './Redux/proxy';
import Home from './views/Home/Home';
import ChatRoom from './views/ChatRoom';
import Auth from './views/Auth/Auth';
// import { connect } from 'react-redux';
class AppRouter extends Component {
constructor(props) {
super(props);
window.router = this;
}
state = {};
render() {
let home = (
<Route exact path={'/'}>
{proxy.status() ? <Home /> : <Auth />}
</Route>
);
return (
<Router>
<Switch>{home}</Switch>
<Route exact path={`/chatroom/:id`}>
<ChatRoom />
</Route>
</Router>
);
}
}
export default AppRouter; //connect((state) => ({ isLogin: state.user.isLogin }), {})(AppRouter);

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

@ -0,0 +1,281 @@
<!doctype html>
<html lang="fa">
<head>
<meta charset="utf-8">
<title>IRANSans Family Type face: خانواده فونت ایران سن سریف</title>
<meta name="fontiran.com:license" content="کد ۵ رقمی لایسنس">
<link href="css/style.css" rel="stylesheet">
</head>
<body dir="rtl">
<div class="wrapper">
<div class="mainbox">
<div class="titelbox">
<h1>بِسْمِ الله الرَّحْمَنِ الرَّحِيمِ</h1>
</div>
<div class="alphabet" style="line-height:210px" > د </div>
<div class="rightbox">
<br>
<span class="text-xlarge">ن وَالْقَلَمِ وَ مَا يَسْطُرُون</span>
<br>
<span class="text-xlarge"> نون؛ سوگند به قلم و آنچه می نويسند. </span>
<br>
<span class="text-large"> Noon. I swear by the pen and what the angels write </span>
<br>
<br>
</div>
</div>
<div class="mainbox">
<div class="titelbox">
<h1>نکاتی درباره تایپوگرافی وب</h1>
</div>
<div class="alphabet" style="line-height:330px" > خ </div>
<div class="rightbox">
<p>از زمان پیدایش نخستین وب سایت، متن ها یکی از اجزای مهم صفحات وب بودند. هر چند به مرور زمان با ورود تصاویر، صوت و فیلم کمی از بار مسئولیت متون کم شد اما هنوز جایگاه خود را از دست نداده اند و بخش مهمی از کار را به عهده دارند.</p>
<p>بسیاری از طراحان وب سایت به صورت تجربی بهترین ترکیب و ظاهر را برای نمایش متن ها انتخاب می کنند. اما اصولی وجود دارد که با رعایت آن ها، تاثیرپذیری و زیبایی سایت چند برابر خواهد شد.</p>
<p>در ادامه مطلب قصد داریم تعدادی از اصول مقدماتی تایپوگرافی را به اختصار مرور کنیم. هرچند بسیاری از دوستان با این نکات آشنا هستند؛ اما شاید مرور آن ها خالی از لطف نباشد.</p>
</div>
</div>
<div class="mainbox">
<div class="titelbox">
<h1>تاثیر اندازه فونت و سلسله مراتب تگها</h1>
</div>
<div class="alphabet" style="line-height:170px"> پ </div>
<div class="rightbox">
<p>فونت های داخل سایت باید به گونه ای قرار گیرند که کاربر به راحتی بتواند آن ها را بخواند. نوع فونت، وزن و کوچک (یا بزرگ) بودن اندازه آن ممکن است تمایل کاربر برای بازگشت به وب سایت را کاهش دهد. قواعد و قوانین زیادی برای انتخاب بهترین فونت وجود دارد.</p>
<p>در زیر می توانید ۵ وزن مختلف <strong>خانواده فونت ایران سن سریف</strong> را در شرایط یکسان مشاهده کنید. لازم به ذکر است برای این صفحه از وزن نازک (Light) استفاده شده است.</p>
</div>
</div>
<div class="mainbox">
<div class="mainbox2">
<div class="text-ultralight" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Ultra Light)</div>
<div class="text-light" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Light)</div>
<div class="text-regular" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Regular)</div>
<div class="text-medium" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Medium)</div>
<div class="text-bold" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Bold)</div>
<div class="text-black" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Black)</div>
</div>
</div>
<div class="mainboxnegativ">
<div class="mainbox2">
<div class="text-ultralight" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Ultra Light)</div>
<div class="text-light" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Light)</div>
<div class="text-regular" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Regular)</div>
<div class="text-medium" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Medium)</div>
<div class="text-bold" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Bold)</div>
<div class="text-black" style="font-size:1.4em">بیانِ زبان با گذشت زمان کهنه می شود و بیانِ قلم برای همیشه باقی می ماند (Black)</div>
</div>
</div>
<div class="mainbox">
<div class="titelbox">
<h1>تگهای هدینگ</h1>
</div>
<div class="alphabet" style="line-height:150px"> ی </div>
<div class="rightbox">
<p>در این بین، استفاده از تگ های هدینگ مناسب و رعایت سلسله مراتب آن ها، هم مفهوم نوشته را بهتر منتقل می کند و هم تاثیر قابل توجهی در نتایج موتورهای جستجو خواهد داشت. این نکته یکی از فاکتورهای مهم در بهینه سازی وب سایت برای موتورهای جستجو (Search Engine Optimization) است.</p>
<p>نمونه ای از خروجی تگ های هدینگ با سایز استاندارد مربوطه به فونت های <a href="http://fontiran.com" target="_blank">فونت ایران</a> را در زیر مشاهده می کنید.</p>
</div>
</div>
<div class="mainbox">
<div class="mainbox2">
<h1>(H1) نابرده رنج گنج میسر نمی شود. No gain without pain </h1>
<h2>(H2) نابرده رنج گنج میسر نمی شود. No gain without pain</h2>
<h3>(H3) نابرده رنج گنج میسر نمی شود. No gain without pain</h3>
<h4>(H4) نابرده رنج گنج میسر نمی شود. No gain without pain </h4>
<h5>(H5) نابرده رنج گنج میسر نمی شود. No gain without pain</h5>
<h6>(H6) نابرده رنج گنج میسر نمی شود. No gain without pain</h6>
</div>
</div>
<div class="mainboxnegativ">
<div class="mainbox2">
<h1>(H1) نابرده رنج گنج میسر نمی شود. No gain without pain </h1>
<h2>(H2) نابرده رنج گنج میسر نمی شود. No gain without pain</h2>
<h3>(H3) نابرده رنج گنج میسر نمی شود. No gain without pain</h3>
<h4>(H4) نابرده رنج گنج میسر نمی شود. No gain without pain </h4>
<h5>(H5) نابرده رنج گنج میسر نمی شود. No gain without pain</h5>
<h6>(H6) نابرده رنج گنج میسر نمی شود. No gain without pain</h6>
</div>
</div>
<div class="mainbox">
<div class="titelbox">
<h1>سطر و ستون بندی</h1>
</div>
<div class="alphabet" style="line-height:200px"> م </div>
<div class="rightbox">
<p>معمولاً هرگاه مقدار نوشته از یک سطر بیشتر شود ناگزیر به ستون بندی هستیم. و این کار ما را با چند متغییر مواجه خواهد کرد:</p>
<p>۱- <strong>عرض ستونهای متنی</strong> که حاوی حداقل۷ کلمه باشد بهترین انتخاب است. اگر ستون کوتاهتر باشد چشم بیننده در اثر حرکتهای زود به زود از پایان یک سطر به ابتدای سطر بعدی خسته خواهد شد. علاوه بر این لبه ستونهایی با عرض کم نیز همیشه دندانه ای و بی نظم خواهد بود. ستونهایی با عرض طولانی هم برای خواننده آزار دهنده است چرا که چشم در حرکت بازگشت از انتهای یک سطر به ابتدای سطر بعدی ممکن است دچار اشتباه شود.
<p>۲- <strong>لدینگ یا همان فاصله سطر </strong> هم در ستون بندی اهمیت دارد. ستونهای فشرده اگرچه به لحاظ گرافیکی منسجم و زیبا هستند اما عمل خواندن را مختل می کنند و در مقابل، فاصله سطر زیاد نیز باعث نازیبایی و خستگی چشم خواننده میشود. فاصله سطر همیشه می تواند با توجه به نوع فونت و عرض ستونها تغییر کند. بدین ترتیب که فونتهایی با دندانههای بلندتر و ستونهایی با عرض بیشتر به لدینگ بیشتری نیاز دارند.
<p>۳- <strong>همترازی </strong> هم یکی از متغییرهای پر بحث در ستون بندی است. اما به طور کوتاه و خلاصه باید گفت که بهتر است در متن فارسی از همترازی یا همان Justification استفاده نکنید. این عمل اگرچه لبه پاراگراف شما را مرتب خواهد کرد اما تنظیمات فاصله حروف را تغییر خواهد داد و در نتیجه باعث کاهش خوانایی خواهد شد. </div>
</div>
<div class="mainbox">
<div class="mainbox2negativ">(IRANSans Ultra Light)</div>
<div class="farsiparagraph"><span class="text-ultralight"> ایران سن سریف IRANSans سبکی ساده و ضخامت یکسان از قلم ایران است که با وجود حفظ ساختار قلمهای رایج ایرانی حال و هوای مدرن و امروزی دارد. سادگی شکل حروف و استفاده از حداقل شکستگی باعث شده است این تایپ فیس علاوه بر خوانا بودن زیبا و چشم نواز نیز باشد. این فونت با سبکهای طراحی کمینهگرا Minimal سازگاری خوبی دارد و همنشین مناسبی برای فونتهای سنسریف لاتین است. خانواده فونت ایران سنسریف در سال ۱۳۹۴ پرطرفدارترین فونت فارسی بوده است.</span></div>
<div class="englishparagraph"><span class="text-ultralight">
Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.
</span></div>
</div>
<div class="mainbox">
<div class="mainbox2negativ">(IRANSans Light)</div>
<div class="farsiparagraph"><span class="text-right">ایران سن سریف IRANSans سبکی ساده و ضخامت یکسان از قلم ایران است که با وجود حفظ ساختار قلمهای رایج ایرانی حال و هوای مدرن و امروزی دارد. سادگی شکل حروف و استفاده از حداقل شکستگی باعث شده است این تایپ فیس علاوه بر خوانا بودن زیبا و چشم نواز نیز باشد. این فونت با سبکهای طراحی کمینهگرا Minimal سازگاری خوبی دارد و همنشین مناسبی برای فونتهای سنسریف لاتین است. خانواده فونت ایران سنسریف در سال ۱۳۹۴ پرطرفدارترین فونت فارسی بوده است.</span></div>
<div class="englishparagraph"><span class="text-right">
Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.
</span></div>
</div>
<div class="mainbox">
<div class="mainbox2negativ">(IRANSans Regular)</div>
<div class="farsiparagraph"><span class="text-regular">ایران سن سریف IRANSans سبکی ساده و ضخامت یکسان از قلم ایران است که با وجود حفظ ساختار قلمهای رایج ایرانی حال و هوای مدرن و امروزی دارد. سادگی شکل حروف و استفاده از حداقل شکستگی باعث شده است این تایپ فیس علاوه بر خوانا بودن زیبا و چشم نواز نیز باشد. این فونت با سبکهای طراحی کمینهگرا Minimal سازگاری خوبی دارد و همنشین مناسبی برای فونتهای سنسریف لاتین است. خانواده فونت ایران سنسریف در سال ۱۳۹۴ پرطرفدارترین فونت فارسی بوده است.</span></div>
<div class="englishparagraph"><span class="text-regular">
Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.
</span></div>
</div>
<div class="mainbox">
<div class="mainbox2negativ">(IRANSans Medium)</div>
<div class="farsiparagraph"><span class="text-medium">ایران سن سریف IRANSans سبکی ساده و ضخامت یکسان از قلم ایران است که با وجود حفظ ساختار قلمهای رایج ایرانی حال و هوای مدرن و امروزی دارد. سادگی شکل حروف و استفاده از حداقل شکستگی باعث شده است این تایپ فیس علاوه بر خوانا بودن زیبا و چشم نواز نیز باشد. این فونت با سبکهای طراحی کمینهگرا Minimal سازگاری خوبی دارد و همنشین مناسبی برای فونتهای سنسریف لاتین است. خانواده فونت ایران سنسریف در سال ۱۳۹۴ پرطرفدارترین فونت فارسی بوده است.</span></div>
<div class="englishparagraph"><span class="text-medium">
Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.</span>
</div>
</div>
<div class="mainbox">
<div class="mainbox2negativ">(IRANSans Bold)</div>
<div class="farsiparagraph"><span class="text-bold">ایران سن سریف IRANSans سبکی ساده و ضخامت یکسان از قلم ایران است که با وجود حفظ ساختار قلمهای رایج ایرانی حال و هوای مدرن و امروزی دارد. سادگی شکل حروف و استفاده از حداقل شکستگی باعث شده است این تایپ فیس علاوه بر خوانا بودن زیبا و چشم نواز نیز باشد. این فونت با سبکهای طراحی کمینهگرا Minimal سازگاری خوبی دارد و همنشین مناسبی برای فونتهای سنسریف لاتین است. خانواده فونت ایران سنسریف در سال ۱۳۹۴ پرطرفدارترین فونت فارسی بوده است.</span></div>
<div class="englishparagraph"><span class="text-bold">
Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.</span>
</div>
</div>
<div class="mainbox">
<div class="mainbox2negativ">(IRANSans Black)</div>
<div class="farsiparagraph"><span class="text-black">ایران سن سریف IRANSans سبکی ساده و ضخامت یکسان از قلم ایران است که با وجود حفظ ساختار قلمهای رایج ایرانی حال و هوای مدرن و امروزی دارد. سادگی شکل حروف و استفاده از حداقل شکستگی باعث شده است این تایپ فیس علاوه بر خوانا بودن زیبا و چشم نواز نیز باشد. این فونت با سبکهای طراحی کمینهگرا Minimal سازگاری خوبی دارد و همنشین مناسبی برای فونتهای سنسریف لاتین است. خانواده فونت ایران سنسریف در سال ۱۳۹۴ پرطرفدارترین فونت فارسی بوده است.</span></div>
<div class="englishparagraph"><span class="text-black">
Roboto has a dual nature. It has a mechanical skeleton and the forms are largely geometric. At the same time, the font features friendly and open curves. While some grotesks distort their letterforms to force a rigid rhythm, Roboto doesn’t compromise, allowing letters to be settled into their natural width. This makes for a more natural reading rhythm more commonly found in humanist and serif types.</span>
</div>
</div>
<div class="mainbox">
<div class="titelbox">
<h1>اعداد و علائم در فونت فارسی</h1>
</div>
<div class="alphabet" style="line-height:470px"> ظ </div>
<div class="rightbox">
<p><span class="text-xlarge">اعداد فارسی: <strong>۱۲۳۴۵۶۷۸۹۰</strong></span><br>
<span class="text-xlarge">اعداد عربی: <strong>۱۲۳٤٥٦۷۸۹۰</strong></span><br>
<span class="text-xlarge">اعداد انگلیسی: <strong>1234567890</strong></span></p>
<p>برای تایپ اعداد فارسی در محیط وب از <a href="https://fa.wikipedia.org/wiki/%D9%88%DB%8C%DA%A9%DB%8C%E2%80%8C%D9%BE%D8%AF%DB%8C%D8%A7:%D9%81%D8%A7%D8%B1%D8%B3%DB%8C%E2%80%8C%D9%86%D9%88%DB%8C%D8%B3%DB%8C">کیبورد استاندارد فارسی</a> استفاده کنید. در ویندوز ۸ و یا بالاتر این کیبورد، با نام Persian(Standard)Keyboard در لیست کیبوردهای ویندوز وجود دارد. همچنین می توانید از <a href="http://persian-computing.ir/download/Iranian_Standard_Persian_Keyboard_(ISIRI_9147)_(Version_2.0).zip">این آدرس</a> آن را دانلود و نصب کنید.</p>
<span>
<p>با استفاده از کیبورد استاندارد میتوانید ممیز فارسی را تایپ کنید.<br>
<span>میانبر این علامت کلیدهای <span class="text-medium">Shift+3</span> است. به این شکل: <strong class="text-xlarge">۳٫۱۴</strong></span><br>
<span >ممیز فارسی با علامت اسلش تفاوت دارد :<strong class="text-xlarge">۳/۱۴</strong></span>
</p>
<p>با استفاده از کیبورد استاندارد میتوانید جداکننده هزارگان فارسی را تایپ کنید.<br>
<span>میانبر این علامت کلیدهای <strong>Shift+2</strong> است. به این شکل: <strong class="text-xlarge">۹٬۲۱۰٬۰۰۰</strong></span><br>
<span >این علامت با جدا کننده هزارگان انگلیسی تفاوت دارد : <strong class="text-xlarge">۹,۲۱۰,۰۰۰</strong></span>
</p>
</div>
</div>
<div class="mainbox">
<div class="titelbox">
<h1> نسبتهای طلایی</h1>
</div>
<div class="alphabet2">
<div style="padding-left:20px">
۳٫۷۷۷ &divide; ۱٫۶۱۸ = <span class="text-regular text-underline">۲٫۳۳۵</span>
<br>
۶٫۱۱۲ &divide; ۱٫۶۱۸ = <span class="text-regular text-underline">۳٫۷۷۷</span>
<br>
۹٫۸۸۹ &divide; ۱٫۶۱۸ = <span class="text-regular text-underline">۶٫۱۱۲</span>
<br>
۱۶ &divide; ۱٫۶۱۸ = <span class="text-regular text-underline">۹٫۸۸۹</span>
<br>
.......................................
<br>
۱۶ &times; ۱٫۶۱۸ = <span class="text-regular text-underline">۲۵٫۸۸۸</span>
<br>
۲۵٫۸۸۸ &times; ۱٫۶۱۸ = <span class="text-regular text-underline">۴۱٫۸۸۷</span>
<br>
۴۱٫۸۸۷ &times; ۱٫۶۱۸ = <span class="text-regular text-underline">۶۷٫۷۷۳</span>
<br>
۶۷٫۷۷۳ &times; ۱٫۶۱۸ = <span class="text-regular text-underline">۱۰۹٫۶۵۶</span>
</div>
</div>
<div class="rightbox">
<p>اهمیت اندازه فونت در خوانایی و زیبا شدن صفحه وب سایت بر کسی پوشیده نیست. در کنار این بحث، موارد دیگری مانند ارتفاع خطوط، فاصله ها، ابعاد قسمت های مختلف و ... نیز در بحث تایپوگرافی اهمیت زیادی دارند.</p>
<p>برای محاسبه این اعداد می توانیم از سری اعداد متناسب (Modular Scale) استفاده کنیم. در حقیقت از تعدادی عدد پشت سر هم که بر اساس مضرب خاصی تشکیل شده اند برای تنظیمات ارتفاع خط، فاصله ها، ابعاد و ... استفاده می کنیم. نسبت (عدد) طلایی همان مضرب اعداد است.</p>
<p>به عنوان مثال می خواهیم از سایز 16px <strong>فونت ایران سن سریف</strong> به عنوان فونت و سایز اصلی متن صفحات استفاده کنیم. عدد فی (phi) یونانی که معادل ۱٫۶۱۸۰۳۳۹۸۸۷ (به اختصار ۱٫۶۱۸) است را به عنوان نسبت طلایی در نظر می گیریم. بنابراین سری اعدادی به شکل روبرو خواهیم داشت:</p>
<p>
به کمک این اعداد و استفاده از آن ها در صفحات وب سایت خود می توانیم خوانایی و زیبایی آن را افزایش دهیم. علاوه بر آن، اگر از واحدهای نسبی مانند em استفاده شود، امکانات بیشتری در اختیار طراح و بازدیدکننده خواهد بود. البته <strong>سری اعداد بر مبنای نسبت طلایی</strong> فقط در تایپوگرافی وب سایت کاربرد ندارد.
این اعداد می تواند ادامه داشته باشد (<span class="text-regular text-underline">۱٬۲۱۵٫۹۸۱</span> ، <span class="text-regular text-underline">۱٬۹۶۷٫۴۵۷</span> ، <span class="text-regular text-underline">۳٬۱۸۳٫۳۴۵</span> و ...).
</p>
</div>
</div>
<div class="mainbox">
<div class="titelbox"><h1>خوانایی لینکها</h1> </div>
<div class="alphabet" style="line-height:470px"> غ </div>
<div class="rightbox">
<p>شاید بتوانیم از لینک ها (hyperlinks) به عنوان مهم ترین بخش وب سایت ها در ارتباط با سئو (SEO) و نیز یکی از پرکاربردترین اجزای وب سایت نام ببریم. بنابراین بازدیدکننده باید بتواند به راحتی آن ها را از سایر محتوای صفحه تشخیص داده و متن لینک شده را به سرعت و بدون مزاحمت مشاهده کند.</p>
<p>به صورت پیش فرض، متن هایی که داخل یک هایپرلینک قرار می گیرند، زیر خط دار یا underline می شوند (مانند این <a href="http://fontiran.com" target="_blank">لینک یا پیوند به صفحه اصلی فونت ایران</a>). در بسیاری از فونت های فارسی، این خط روی متن و نقطه ها قرار می گیرد (مانند این <a href="http://fontiran.com" target="_blank" style="font-family: Tahoma;">لینک یا پیوند به صفحه اصلی فونت ایران با فونت تاهوما</a>).</p>
<p>در صورت بروز این مشکل، یا باید خط زیرین تمام تگ های «a» غیر فعال شود و یا با ترفندهایی به شکل دیگر ایجاد شود (مانند قرار دادن border-bottom برای تگ های «a»).</p>
<p>همچنین پیشنهاد می کنیم از قراردادن افکت ها و transition های آزاردهنده روی لینک ها پرهیز کرده و برای راحتی کاربر از padding و color با کانتراست مناسب نسبت به زمینه استفاده کنید.</p>
</div>
</div>
<div class="mainbox">
<div class="rightbox">
<br>
در این فایل سعی کردیم همراه با یک مطلب آموزشی کوتاه، نحوه استفاده از خانواده فونت ایران سن سریف و پیش نمایشی از قسمت های مختلف آن را مرور کنیم.
<br>
برای مشاهده راهنمای نحوه قراردادن فونت ها در وب سایت خود، به <a href="http://fontiran.com/?p=874" target="_blank">این آدرس</a> مراجعه کنید.
<br>
<br>
</div>
<div class="alphabet" style="line-height:60px">ء</div>
</div>
<br>
<div class="footer">
Copyright (c) 2015 by <a href="http://fontiran.com">www.fontiran.com</a> (Moslem Ebrahimi). All rights reserved.
<br>
To use this font, it is necessary to obtain the license from www.fontiran.com
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

@ -0,0 +1,86 @@
/**
*
* Name: IRAN Sans-Serif Font
* Version: 5.0
* Author: Moslem Ebrahimi (moslemebrahimi.com)
* Created on: Dec 25, 2012
* Updated on: Sep 01, 2017
* Website: http://fontiran.com
* Copyright: Commercial/Proprietary Software
--------------------------------------------------------------------------------------
فونت های ایران سن سریف یک نرم افزار مالکیتی محسوب می شود. جهت آگاهی از قوانین استفاده از این فونت ها لطفا به وب سایت (فونت ایران دات کام) مراجعه نمایید
--------------------------------------------------------------------------------------
IRAN Sans-serif fonts are considered a proprietary software. To gain information about the laws regarding the use of these fonts, please visit www.fontiran.com
--------------------------------------------------------------------------------------
This set of fonts are used in this project under the license: (.....)
--------------------------------------------------------------------------------------
*
**/
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 900;
src: url('../fonts/eot/IRANSansWeb(FaNum)_Black.eot');
src: url('../fonts/eot/IRANSansWeb(FaNum)_Black.eot?#iefix') format('embedded-opentype'),
/* IE6-8 */ url('../fonts/woff2/IRANSansWeb(FaNum)_Black.woff2') format('woff2'),
/* FF39+,Chrome36+, Opera24+*/ url('../fonts/woff/IRANSansWeb(FaNum)_Black.woff') format('woff'),
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('../fonts/ttf/IRANSansWeb(FaNum)_Black.ttf')
format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: bold;
src: url('../fonts/eot/IRANSansWeb(FaNum)_Bold.eot');
src: url('../fonts/eot/IRANSansWeb(FaNum)_Bold.eot?#iefix') format('embedded-opentype'),
/* IE6-8 */ url('../fonts/woff2/IRANSansWeb(FaNum)_Bold.woff2') format('woff2'),
/* FF39+,Chrome36+, Opera24+*/ url('../fonts/woff/IRANSansWeb(FaNum)_Bold.woff') format('woff'),
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('../fonts/ttf/IRANSansWeb(FaNum)_Bold.ttf')
format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 500;
src: url('../fonts/eot/IRANSansWeb(FaNum)_Medium.eot');
src: url('../fonts/eot/IRANSansWeb(FaNum)_Medium.eot?#iefix') format('embedded-opentype'),
/* IE6-8 */ url('../fonts/woff2/IRANSansWeb(FaNum)_Medium.woff2') format('woff2'),
/* FF39+,Chrome36+, Opera24+*/ url('../fonts/woff/IRANSansWeb(FaNum)_Medium.woff')
format('woff'),
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('../fonts/ttf/IRANSansWeb(FaNum)_Medium.ttf')
format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 300;
src: url('../fonts/eot/IRANSansWeb(FaNum)_Light.eot');
src: url('../fonts/eot/IRANSansWeb(FaNum)_Light.eot?#iefix') format('embedded-opentype'),
/* IE6-8 */ url('../fonts/woff2/IRANSansWeb(FaNum)_Light.woff2') format('woff2'),
/* FF39+,Chrome36+, Opera24+*/ url('../fonts/woff/IRANSansWeb(FaNum)_Light.woff') format('woff'),
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('../fonts/ttf/IRANSansWeb(FaNum)_Light.ttf')
format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: 200;
src: url('../fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot');
src: url('../fonts/eot/IRANSansWeb(FaNum)_UltraLight.eot?#iefix') format('embedded-opentype'),
/* IE6-8 */ url('../fonts/woff2/IRANSansWeb(FaNum)_UltraLight.woff2') format('woff2'),
/* FF39+,Chrome36+, Opera24+*/ url('../fonts/woff/IRANSansWeb(FaNum)_UltraLight.woff')
format('woff'),
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('../fonts/ttf/IRANSansWeb(FaNum)_UltraLight.ttf')
format('truetype');
}
@font-face {
font-family: IRANSans;
font-style: normal;
font-weight: normal;
src: url('../fonts/eot/IRANSansWeb(FaNum).eot');
src: url('../fonts/eot/IRANSansWeb(FaNum).eot?#iefix') format('embedded-opentype'),
/* IE6-8 */ url('../fonts/woff2/IRANSansWeb(FaNum).woff2') format('woff2'),
/* FF39+,Chrome36+, Opera24+*/ url('../fonts/woff/IRANSansWeb(FaNum).woff') format('woff'),
/* FF3.6+, IE9, Chrome6+, Saf5.1+*/ url('../fonts/ttf/IRANSansWeb(FaNum).ttf')
format('truetype');
}

@ -0,0 +1,191 @@
@import url(fontiran.css); /* لینک فایلی که وظیفه بارگذاری فونت ها را برعهده دارد */
body {
font-family: IRANSans !important;
font-weight: 300;
direction: rtl;
background-color: #e2e2e2;
margin: 0;
}
h1,
h2,
h3,
h4,
h5,
h6,
input,
textarea {
font-family: IRANSans !important;
}
h1 {
font-weight: bold;
}
.wrapper {
max-width: 900px;
margin: 0 auto;
}
.ltr {
direction: ltr;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-left {
text-align: left;
}
.text-small {
font-size: 0.8em;
}
.text-xsmall {
font-size: 0.6em;
}
.text-large {
font-size: 1.2em;
}
.text-xlarge {
font-size: 1.4em;
}
.text-underline {
text-decoration: underline;
}
.text-ultralight {
font-weight: 200;
}
.text-light {
font-weight: 300;
}
.text-regular {
font-weight: normal;
}
.text-medium {
font-weight: 500;
}
.text-bold {
font-weight: bold;
}
.text-black {
font-weight: 900;
}
blockquote {
font-weight: 500;
padding: 10px;
border: 1px dashed #666666;
}
.mainbox {
width: 100%;
background-color: #efefef;
display: table;
margin-bottom: 30px;
border-right: 8px solid #ffff33;
}
.mainboxnegativ {
width: 100%;
background-color: #000000;
display: table;
margin-bottom: 30px;
border-right: 8px solid #ffff33;
color: #f9f9f9;
}
.mainbox2 {
font-size: 1em;
width: 90%;
padding-right: 20px;
padding-top: 10px;
padding-bottom: 10px;
}
.mainbox3 {
width: 100%;
background-color: #b8b8b8;
display: table;
margin-bottom: 30px;
border-right: 8px solid #bd70ff;
}
.mainbox2negativ {
font-size: 1em;
color: #f9f9f9;
background-color: #000000;
padding-right: 20px;
}
.farsiparagraph {
font-size: 1em;
width: 47%;
float: right;
padding-right: 20px;
padding-top: 10px;
padding-bottom: 10px;
}
.englishparagraph {
font-size: 1em;
width: 47%;
float: left;
direction: ltr;
padding-left: 20px;
padding-top: 10px;
padding-bottom: 10px;
}
.rightbox {
width: 60%;
padding-right: 20px;
padding-left: 5px;
float: right;
margin-left: 10px;
margin-bottom: 0px;
min-width: 0px;
background-color: #f7f7f7;
}
.titelbox {
width: 60%;
padding-right: 25px;
padding-left: 0px;
float: right;
margin-left: 10px;
margin-bottom: 0px;
min-width: 0px;
background-color: #f2f2f2;
color: #4b4b4b;
}
.lefttbox {
padding-right: 20px;
padding-left: 4px;
float: right;
margin-bottom: 10px;
min-width: 0px;
}
.alphabet {
width: 35%;
float: left;
font-size: 21em;
text-align: center;
font-weight: 500;
color: #999999;
}
.alphabet2 {
width: 35%;
float: left;
direction: ltr;
font-size: 1.6em;
text-align: left;
font-weight: 500;
color: #333333;
margin-top: 100px;
}
.footer {
font-weight: 300;
font-size: 0.7em;
text-align: center;
direction: ltr;
margin-bottom: 0px;
padding-bottom: 0px;
}

@ -0,0 +1,18 @@
IRAN Sans-serif fonts are considered a proprietary software.
To gain information about the laws regarding the use of these fonts, please visit www.fontiran.com
This set of fonts are used in this project under the license: (.....)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
In case you use this set of fonts in a software product, write the license code in the specified place and place this file next to the fonts.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
فونت های ايران سنسریف يک نرم افزار مالکيتی محسوب می شود جهت آگاهی از قوانين استفاده از اين فونتها لطفاً به وبسايت
www.fontiran.com
مراجعه نماييد
اين مجموعه فونت تحت اجازه نامه
(.....)
در اين پروژه استفاده می شود
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
در صورت استفاده از این مجموعه فونت در یک محصول نرم افزاری یا وبسایت کد ۵ رقمی لایسنس خود را در محل مشخص شده (.....) درج کنید و این فایل را در کنار فونت ها قرار دهید.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8" />
<title>IRANSans Family Type face: خانواده فونت ایران سن سریف</title>
<meta name="fontiran.com:license" content="کد ۵ رقمی لایسنس" />
<link href="WebFonts/css/style.css" rel="stylesheet" />
<style type="text/css">
a:link {
color: #9600f0;
text-decoration: none;
}
a:visited {
color: #9600f0;
text-decoration: none;
}
a:hover {
color: #ff0093;
text-decoration: none;
}
a:active {
color: #ff0033;
text-decoration: none;
}
</style>
</head>
<body dir="rtl">
<div class="wrapper">
<p></p>
<br /><br /><br />
<div class="mainbox3">
<div class="titelbox">
<h1>اگر از خدمات فونت ایران رضایت دارید:</h1>
</div>
<div style="float: left">
<br />
<br />
<img alt="" src="IRANSans5.jpg" width="324" height="366" />
</div>
<div class="rightbox">
<p>
<br />
<span class="text-xlarge" style="padding-right: 22px">لطفاً:</span>
<br />
<span class="text-xlarge"> ۱) فایلهای درون این بسته را به اشتراک نگذارید.</span>
<br />
<span class="text-xlarge"> ۲) همکاران خود را به خرید این محصول ترغیب کنید.</span>
<br />
<span class="text-xlarge"> ۳) برای محصولات خود اجازهنامه تهیه کنید.</span>
<br />
<span class="text-xlarge"
>۴) طبق راهنما، کد ۵ رقمی اجازهنامه را در محصول خود درج کنید و کاربران خود را از
کپیرایت این محصول آگاه کنید.</span
><br />
</p>
<p>
<a href="http://fontiran.com/licenses"
>کدامیک از محصولات و شرکتها با خرید اجازهنامه از حقوق ما حمایت کردهاند؟</a
>
</p>
<p>
<a href="http://fontiran.com/?p=1039"
>کدام سایتها و نرم افزارها بدون اجازهنامه از فونت ایران استفاده میکنند؟</a
>
</p>
<br />
</div>
</div>
<br />
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save