<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://izara.io/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pack</id>
	<title>Izara Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://izara.io/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pack"/>
	<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php/Special:Contributions/Pack"/>
	<updated>2026-05-03T11:59:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3189</id>
		<title>2025-04-18 - frontend page-output output npm library</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3189"/>
		<updated>2025-04-18T07:23:25Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Output library=&lt;br /&gt;
==PageOutputMain==&lt;br /&gt;
*use with object not have section&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
import { PageOutputMain } from &amp;quot;@frozengirls/page-output-output&amp;quot;;&lt;br /&gt;
//provide props&lt;br /&gt;
     &amp;lt;PageOutputMain&lt;br /&gt;
                objId={menuConfigId}//objectId eg. formObjectEditId&lt;br /&gt;
                tableBody={menuConfig} //objConfig&lt;br /&gt;
                ElementComponent={ElementOutput} //output element component&lt;br /&gt;
                name={MENU_OUTPUT_SLICE_NAME}//reducer name from reduxStoreConsts file&lt;br /&gt;
     /&amp;gt;&lt;br /&gt;
//recieve props&lt;br /&gt;
export const ElementOutput = ({&lt;br /&gt;
  elementIndex, //index of element eg. 0,1,2&lt;br /&gt;
  objId,//objectId eg. formObjectEditId&lt;br /&gt;
  elementId,//uuid of element &lt;br /&gt;
  tableBody,//objConfig&lt;br /&gt;
  name&lt;br /&gt;
}) =&amp;gt; {}&lt;br /&gt;
              &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==PageOutputSectionMain==&lt;br /&gt;
*use with object have section&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
import { PageOutputMain } from &amp;quot;@frozengirls/page-output-output&amp;quot;;&lt;br /&gt;
//provide props&lt;br /&gt;
  &amp;lt;PageOutputSectionMain&lt;br /&gt;
          objId={objId} //objectId eg. formObjectEditId&lt;br /&gt;
          tableBody={tableConfig} //objConfig&lt;br /&gt;
          sectionData={tableConfigUtils.sortResultData} //array of data &lt;br /&gt;
          ElementComponent={sectionConfigs} //output element component but separate section type&lt;br /&gt;
          sectionConfigs={sectionConfigs}&lt;br /&gt;
          name={NAME} //reducer name from reduxStoreConsts file&lt;br /&gt;
          cssPrefixes={[]} //for send cssStyle&lt;br /&gt;
     /&amp;gt;&lt;br /&gt;
//recieve props&lt;br /&gt;
&lt;br /&gt;
export const ElementOutput = ({&lt;br /&gt;
  elementIndex, //index of element eg. 0,1,2&lt;br /&gt;
  objId,//objectId eg. formObjectEditId&lt;br /&gt;
  elementId,//uuid of element &lt;br /&gt;
  tableBody,//objConfig&lt;br /&gt;
  name&lt;br /&gt;
}) =&amp;gt; {}&lt;br /&gt;
&lt;br /&gt;
///output element component for section pageoutput example&lt;br /&gt;
const sectionConfigs = {&lt;br /&gt;
  records: {&lt;br /&gt;
    elementOutputComponent: RecordElementOutput, // recordElementOutput&lt;br /&gt;
  },&lt;br /&gt;
  headerFooter: {&lt;br /&gt;
    elementOutputComponent: HeaderFooterElementOutput, // headerFooterElementOutput&lt;br /&gt;
  },&lt;br /&gt;
};&lt;br /&gt;
              &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend page-output output npm library| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3188</id>
		<title>2025-04-18 - frontend page-output output npm library</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3188"/>
		<updated>2025-04-18T07:15:53Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Output library=&lt;br /&gt;
==PageOutputMain==&lt;br /&gt;
*use with object not have section&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
import { PageOutputMain } from &amp;quot;@frozengirls/page-output-output&amp;quot;;&lt;br /&gt;
//provide props&lt;br /&gt;
     &amp;lt;PageOutputMain&lt;br /&gt;
                objId={menuConfigId}//objectId eg. formObjectEditId&lt;br /&gt;
                tableBody={menuConfig} //objConfig&lt;br /&gt;
                ElementComponent={ElementOutput} //output element component&lt;br /&gt;
                name={MENU_OUTPUT_SLICE_NAME}//reducer name from reduxStoreConsts file&lt;br /&gt;
//recieve props&lt;br /&gt;
export const ElementOutput = ({&lt;br /&gt;
  elementIndex, //index of element eg. 0,1,2&lt;br /&gt;
  objId,//objectId eg. formObjectEditId&lt;br /&gt;
  elementId,//uuid of element &lt;br /&gt;
  tableBody,//objConfig&lt;br /&gt;
  name&lt;br /&gt;
}) =&amp;gt; {}&lt;br /&gt;
              /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend page-output output npm library| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3187</id>
		<title>2025-04-18 - frontend page-output output npm library</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3187"/>
		<updated>2025-04-18T06:58:07Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend page-output output npm library| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3186</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3186"/>
		<updated>2025-04-18T06:55:33Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
=Root-config=&lt;br /&gt;
==import explain==&lt;br /&gt;
===key===&lt;br /&gt;
* Application name &lt;br /&gt;
* format Organization_name/Project_name eg. @izaraFrontends/root-config&lt;br /&gt;
===value===&lt;br /&gt;
* sorce of microfrontend file&lt;br /&gt;
* example path of sorce izara-frontend-core-user-details_pack/src/izaraFrontends-user-detail.js&lt;br /&gt;
*example imports&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;imports&amp;quot;: {&lt;br /&gt;
        &amp;quot;@izaraFrontends/root-config&amp;quot;: &amp;quot;//localhost:9000/izaraFrontends-root-config.js&amp;quot;,&lt;br /&gt;
        &amp;quot;@izaraFrontends/user-detail&amp;quot;: &amp;quot;//localhost:9002/izaraFrontends-user-detail.js&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==registerApplication==&lt;br /&gt;
===izaraFrontends-root-config.js===&lt;br /&gt;
*all aplication register here don't need to change anything&lt;br /&gt;
===index.ejs===&lt;br /&gt;
*create route of aplication here&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;route path=&amp;quot;login&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;application name=&amp;quot;@izaraFrontends/authentication&amp;quot;&amp;gt;&amp;lt;/application&amp;gt;&lt;br /&gt;
      &amp;lt;/route&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3185</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3185"/>
		<updated>2025-04-18T06:47:31Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
=Root-config=&lt;br /&gt;
==import explain==&lt;br /&gt;
===key===&lt;br /&gt;
* micro-frontend name &lt;br /&gt;
* format Organization_name/Project_name eg. @izaraFrontends/root-config&lt;br /&gt;
===value===&lt;br /&gt;
* sorce of microfrontend file&lt;br /&gt;
* example path of sorce izara-frontend-core-user-details_pack/src/izaraFrontends-user-detail.js&lt;br /&gt;
*example imports&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;imports&amp;quot;: {&lt;br /&gt;
        &amp;quot;@izaraFrontends/root-config&amp;quot;: &amp;quot;//localhost:9000/izaraFrontends-root-config.js&amp;quot;,&lt;br /&gt;
        &amp;quot;@izaraFrontends/user-detail&amp;quot;: &amp;quot;//localhost:9002/izaraFrontends-user-detail.js&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3184</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3184"/>
		<updated>2025-04-18T06:46:14Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
=Root-config=&lt;br /&gt;
==import explain==&lt;br /&gt;
===key===&lt;br /&gt;
* micro-frontend name &lt;br /&gt;
* format Organization_name/Project_name eg. @izaraFrontends/root-config&lt;br /&gt;
===value===&lt;br /&gt;
* sorce of microfrontend file&lt;br /&gt;
* eg .izara-frontend-core-user-details_pack/src/izaraFrontends-user-detail.js&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;quot;imports&amp;quot;: {&lt;br /&gt;
        &amp;quot;@izaraFrontends/root-config&amp;quot;: &amp;quot;//localhost:9000/izaraFrontends-root-config.js&amp;quot;,&lt;br /&gt;
        &amp;quot;@izaraFrontends/user-detail&amp;quot;: &amp;quot;//localhost:9002/izaraFrontends-user-detail.js&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3183</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3183"/>
		<updated>2025-04-18T06:34:50Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
=Root-config=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3182</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3182"/>
		<updated>2025-04-18T06:32:53Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
=Root-config=&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3181</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3181"/>
		<updated>2025-04-18T06:32:33Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
=Root-config=&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3180</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3180"/>
		<updated>2025-04-18T06:13:31Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt; eg. table-config &lt;br /&gt;
&lt;br /&gt;
=Open port &amp;amp; Run script =&lt;br /&gt;
*start root-config&lt;br /&gt;
   npm start &lt;br /&gt;
*start other micro-frontend&lt;br /&gt;
   npm start -- --port 9001(set port) &lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3179</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3179"/>
		<updated>2025-04-18T06:08:18Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Install=&lt;br /&gt;
==Global Install==&lt;br /&gt;
*install in shell only one time when never install single-spa in Local computer before. &lt;br /&gt;
&lt;br /&gt;
   npm install -g create-single-spa &lt;br /&gt;
&lt;br /&gt;
==Install single-spa project==&lt;br /&gt;
   npx create-single-spa &lt;br /&gt;
&lt;br /&gt;
===Organization name=== &lt;br /&gt;
*izaraFrontends &lt;br /&gt;
&lt;br /&gt;
===Project name=== &lt;br /&gt;
*&amp;lt;your repository name&amp;gt;   eg. table-config &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_responsive&amp;diff=3178</id>
		<title>2025-04-18 - frontend responsive</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_responsive&amp;diff=3178"/>
		<updated>2025-04-18T03:11:24Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Concept=&lt;br /&gt;
*Provide window size to children component by useContext&lt;br /&gt;
*component will receive width, height, size of usinge window&lt;br /&gt;
*component choose output jsx to return follow window size from useConText&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend responsive| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_responsive&amp;diff=3177</id>
		<title>2025-04-18 - frontend responsive</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_responsive&amp;diff=3177"/>
		<updated>2025-04-18T03:03:30Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=Concept=&lt;br /&gt;
*Provide window size to children component by useContext&lt;br /&gt;
*component will receive width, height, size of usinge window&lt;br /&gt;
*component choose output jsx to return follow window size from useConText&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend responsive| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3173</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3173"/>
		<updated>2025-04-18T00:35:40Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents - translation| 2025-04-12]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3172</id>
		<title>2025-04-18 - single spa</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_single_spa&amp;diff=3172"/>
		<updated>2025-04-18T00:35:29Z</updated>

		<summary type="html">&lt;p&gt;Pack: Created page with &amp;quot; 2025-04-18  2025-04-18&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - Creating 2025-04-18 - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3171</id>
		<title>2025-04-18 - frontend page-output output npm library</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_page-output_output_npm_library&amp;diff=3171"/>
		<updated>2025-04-18T00:35:18Z</updated>

		<summary type="html">&lt;p&gt;Pack: Created page with &amp;quot; 2025-04-18  2025-04-18&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend page-output output npm library| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_responsive&amp;diff=3170</id>
		<title>2025-04-18 - frontend responsive</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-18_-_frontend_responsive&amp;diff=3170"/>
		<updated>2025-04-18T00:35:05Z</updated>

		<summary type="html">&lt;p&gt;Pack: Created page with &amp;quot; 2025-04-18  2025-04-18&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend responsive| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3169</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3169"/>
		<updated>2025-04-18T00:34:20Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;br /&gt;
[[2025-04-18 - frontend responsive]]&lt;br /&gt;
[[2025-04-18 - frontend page-output output npm library]]&lt;br /&gt;
[[2025-04-18 - single spa]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents - translation| 2025-04-12]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3168</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3168"/>
		<updated>2025-04-18T00:33:51Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;br /&gt;
[2025-04-18 - frontend responsive]&lt;br /&gt;
[2025-04-18 - frontend page-output output npm library]&lt;br /&gt;
[2025-04-18 - single spa]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents - translation| 2025-04-12]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Category:Working_documents_-_frontend_responsive&amp;diff=3167</id>
		<title>Category:Working documents - frontend responsive</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Category:Working_documents_-_frontend_responsive&amp;diff=3167"/>
		<updated>2025-04-18T00:32:10Z</updated>

		<summary type="html">&lt;p&gt;Pack: Created page with &amp;quot; 2025-04-18  2025-04-18&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend responsive| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3166</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3166"/>
		<updated>2025-04-18T00:30:52Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents - translation| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend responsive| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend page-output output npm library| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - single spa| 2025-04-18]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3165</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3165"/>
		<updated>2025-04-18T00:29:53Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents - translation| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend responsive| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - frontend page-output output npm library| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents| 2025-04-18]]&lt;br /&gt;
[[Category:Working documents - single spa| 2025-04-12]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3164</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3164"/>
		<updated>2025-04-18T00:20:53Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-12]]&lt;br /&gt;
[[Category:Working documents - translation| 2025-04-12]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3160</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3160"/>
		<updated>2025-04-17T08:39:45Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept &amp;amp; Process=&lt;br /&gt;
*Use useSelecter isLogin in user-detail reducer for get trigger when login process is done&lt;br /&gt;
*check if login by get access_token from local_storage.&lt;br /&gt;
*querry userId from backend if login and set it in local_storage.&lt;br /&gt;
*use userId to querry user_detail.&lt;br /&gt;
*Must set User-detal component as parent of menu-output.&lt;br /&gt;
&lt;br /&gt;
=Why user-detail have to set as parent of menu-output=&lt;br /&gt;
*Menu-Output is always mount on the web page, so every page will see the output menu also makes the user details component always mount.&lt;br /&gt;
*If user-detail not mount userdetail can't be query and if userdetail not query component will not know web page already login or not. &lt;br /&gt;
*After login menu-output will check login and decide which component should output between login component and not login component by check user detail had already query user-detail or not.&lt;br /&gt;
&lt;br /&gt;
=Query userId=&lt;br /&gt;
==backend==&lt;br /&gt;
*Phee create api for get user-detail ask Phee if have problem with get userId.&lt;br /&gt;
*for query backen that have authentication require send header with query.&lt;br /&gt;
*Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  const objBackend = {&lt;br /&gt;
    method: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    url: &amp;quot;https://xpxz4ia541.execute-api.us-east-2.amazonaws.com/Test/baseUserId/get&amp;quot;,//if phee re-deploy service api will change ask Phee if can't connect to api.&lt;br /&gt;
    headers: { //require for query api backen with auth.&lt;br /&gt;
      Authorization: &amp;quot;Bearer &amp;quot; + localStorage.getItem(&amp;quot;access_token&amp;quot;),&lt;br /&gt;
      Accept: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
      &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    body: {},&lt;br /&gt;
  };&lt;br /&gt;
  const { data: userIdData } = useGetUserIdQuery(objBackend, {&lt;br /&gt;
    skip://not query backend if condition true, It good way to set condition for query.&lt;br /&gt;
      !localStorage.getItem(&amp;quot;access_token&amp;quot;) || &lt;br /&gt;
      (localStorage.getItem(&amp;quot;access_token&amp;quot;) &amp;amp;&amp;amp; localStorage.getItem(&amp;quot;userId&amp;quot;)),&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*backend have to give cors policy to allow frontend can get backend if see erro about cors policy ask Phee set this.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;headers&amp;quot;: {&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Origin&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Methods&amp;quot;: &amp;quot;GET, POST, PUT, DELETE, OPTIONS&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Headers&amp;quot;: &amp;quot;Content-Type, Authorization&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3159</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3159"/>
		<updated>2025-04-17T08:37:15Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept &amp;amp; Process=&lt;br /&gt;
*Use useSelecter isLogin in user-detail reducer for get trigger when login process is done&lt;br /&gt;
*check if login by get access_token from local_storage.&lt;br /&gt;
*querry userId from backend if login and set it in local_storage.&lt;br /&gt;
*use userId to querry user_detail.&lt;br /&gt;
*Must set Uset-detal component as parent of menu-output.&lt;br /&gt;
&lt;br /&gt;
=Why user-detail have to set as parent of menu-output=&lt;br /&gt;
*Menu-Output is always mount on the web page, so every page will see the output menu also makes the user details component always mount.&lt;br /&gt;
*If user-detail not mount userdetail can't be query and if userdetail not query component will not know web page already login or not. &lt;br /&gt;
*After login menu-output will check login and decide which component should output between login component and not login component by check user detail had already query user-detail or not.&lt;br /&gt;
&lt;br /&gt;
=Query userId=&lt;br /&gt;
==backend==&lt;br /&gt;
*Phee is the one who create api for get user-detail ask Phee if have problem with get userId.&lt;br /&gt;
*for query backen that have authentication require send header with query.&lt;br /&gt;
*Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  const objBackend = {&lt;br /&gt;
    method: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    url: &amp;quot;https://xpxz4ia541.execute-api.us-east-2.amazonaws.com/Test/baseUserId/get&amp;quot;,//if phee re-deploy service api will change ask Phee if can't connect to api.&lt;br /&gt;
    headers: { //require for query api backen with auth.&lt;br /&gt;
      Authorization: &amp;quot;Bearer &amp;quot; + localStorage.getItem(&amp;quot;access_token&amp;quot;),&lt;br /&gt;
      Accept: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
      &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    body: {},&lt;br /&gt;
  };&lt;br /&gt;
  const { data: userIdData } = useGetUserIdQuery(objBackend, {&lt;br /&gt;
    skip://not query backend if condition true, It good way to set condition for query.&lt;br /&gt;
      !localStorage.getItem(&amp;quot;access_token&amp;quot;) || &lt;br /&gt;
      (localStorage.getItem(&amp;quot;access_token&amp;quot;) &amp;amp;&amp;amp; localStorage.getItem(&amp;quot;userId&amp;quot;)),&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*backend have to give cors policy to allow frontend can get backend if see erro about cors policy ask Phee set this.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;headers&amp;quot;: {&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Origin&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Methods&amp;quot;: &amp;quot;GET, POST, PUT, DELETE, OPTIONS&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Headers&amp;quot;: &amp;quot;Content-Type, Authorization&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3158</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3158"/>
		<updated>2025-04-17T08:31:42Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept &amp;amp; Process=&lt;br /&gt;
*Use useSelecter isLogin in user-detail reducer for get trigger when login process is done&lt;br /&gt;
*check if login by get access_token from local_storage.&lt;br /&gt;
*querry userId from backend if login and set it in local_storage.&lt;br /&gt;
*use userId to querry user_detail.&lt;br /&gt;
*Must set Uset-detal component as parent of menu-output.&lt;br /&gt;
&lt;br /&gt;
=Why user-detail have to set as parent of menu-output=&lt;br /&gt;
*Menu-output it always mount on web page every single page will see menu-output that make user-detail component always mount too.&lt;br /&gt;
*If user-detail not mount userdetail can't be query and if userdetail not query component will not know web page already login or not. &lt;br /&gt;
*After login menu-output will check login and decide which component should output between login component and not login component by check user detail had already query user-detail or not.&lt;br /&gt;
&lt;br /&gt;
=query userId=&lt;br /&gt;
==backend==&lt;br /&gt;
*Phee is the one who create api for get user-detail ask Phee if have problem with get userId.&lt;br /&gt;
*for query backen that have authentication require send header with query.&lt;br /&gt;
*Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  const objBackend = {&lt;br /&gt;
    method: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    url: &amp;quot;https://xpxz4ia541.execute-api.us-east-2.amazonaws.com/Test/baseUserId/get&amp;quot;,//if phee re-deploy service api will change ask Phee if can't connect to api.&lt;br /&gt;
    headers: { //require for query api backen with auth.&lt;br /&gt;
      Authorization: &amp;quot;Bearer &amp;quot; + localStorage.getItem(&amp;quot;access_token&amp;quot;),&lt;br /&gt;
      Accept: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
      &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    body: {},&lt;br /&gt;
  };&lt;br /&gt;
  const { data: userIdData } = useGetUserIdQuery(objBackend, {&lt;br /&gt;
    skip://not query backend if condition true, It good way to set condition for query.&lt;br /&gt;
      !localStorage.getItem(&amp;quot;access_token&amp;quot;) || &lt;br /&gt;
      (localStorage.getItem(&amp;quot;access_token&amp;quot;) &amp;amp;&amp;amp; localStorage.getItem(&amp;quot;userId&amp;quot;)),&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*backend have to give cors policy to allow frontend can get backend if see erro about cors policy ask Phee set this.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;headers&amp;quot;: {&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Origin&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Methods&amp;quot;: &amp;quot;GET, POST, PUT, DELETE, OPTIONS&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Headers&amp;quot;: &amp;quot;Content-Type, Authorization&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3157</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3157"/>
		<updated>2025-04-17T08:28:32Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept=&lt;br /&gt;
*check if login by get access_token from local_storage.&lt;br /&gt;
*querry userId from backend if login and set it in local_storage.&lt;br /&gt;
*use userId to querry user_detail.&lt;br /&gt;
*Must set Uset-detal component as parent of menu-output.&lt;br /&gt;
&lt;br /&gt;
=Why user-detail have to set as parent of menu-output=&lt;br /&gt;
*Menu-output it always mount on web page every single page will see menu-output that make user-detail component always mount too.&lt;br /&gt;
*If user-detail not mount userdetail can't be query and if userdetail not query component will not know web page already login or not. &lt;br /&gt;
*After login menu-output will check login and decide which component should output between login component and not login component by check user detail had already query user-detail or not.&lt;br /&gt;
&lt;br /&gt;
=query userId=&lt;br /&gt;
==backend==&lt;br /&gt;
*Phee is the one who create api for get user-detail ask Phee if have problem with get userId.&lt;br /&gt;
*for query backen that have authentication require send header with query.&lt;br /&gt;
*Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  const objBackend = {&lt;br /&gt;
    method: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    url: &amp;quot;https://xpxz4ia541.execute-api.us-east-2.amazonaws.com/Test/baseUserId/get&amp;quot;,//if phee re-deploy service api will change ask Phee if can't connect to api.&lt;br /&gt;
    headers: { //require for query api backen with auth.&lt;br /&gt;
      Authorization: &amp;quot;Bearer &amp;quot; + localStorage.getItem(&amp;quot;access_token&amp;quot;),&lt;br /&gt;
      Accept: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
      &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    body: {},&lt;br /&gt;
  };&lt;br /&gt;
  const { data: userIdData } = useGetUserIdQuery(objBackend, {&lt;br /&gt;
    skip://not query backend if condition true, It good way to set condition for query.&lt;br /&gt;
      !localStorage.getItem(&amp;quot;access_token&amp;quot;) || &lt;br /&gt;
      (localStorage.getItem(&amp;quot;access_token&amp;quot;) &amp;amp;&amp;amp; localStorage.getItem(&amp;quot;userId&amp;quot;)),&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*backend have to give cors policy to allow frontend can get backend if see erro about cors policy ask Phee set this.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;headers&amp;quot;: {&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Origin&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Methods&amp;quot;: &amp;quot;GET, POST, PUT, DELETE, OPTIONS&amp;quot;,&lt;br /&gt;
    &amp;quot;Access-Control-Allow-Headers&amp;quot;: &amp;quot;Content-Type, Authorization&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3156</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3156"/>
		<updated>2025-04-17T08:24:48Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept=&lt;br /&gt;
*check if login by get access_token from local_storage&lt;br /&gt;
*querry userId from backend if login and set it in local_storage&lt;br /&gt;
*use userId to querry user_detail&lt;br /&gt;
*Must set Uset-detal component as parent of menu-output&lt;br /&gt;
&lt;br /&gt;
=Why user-detail have to set as parent of menu-output=&lt;br /&gt;
*Menu-output it always mount on web page every single page will see menu-output that make user-detail component always mount too.&lt;br /&gt;
*If user-detail not mount userdetail can't be query and if userdetail not query component will not know web page already login or not. &lt;br /&gt;
*After login menu-output will check login and decide which component should output between login component and not login component by check user detail had already query user-detail or not.&lt;br /&gt;
&lt;br /&gt;
=query userId=&lt;br /&gt;
==backend==&lt;br /&gt;
*phee is the one who create api for get user-detail ask phee if have problem with get userId&lt;br /&gt;
*for query backen that have authentication require send header with query&lt;br /&gt;
*Example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  const objBackend = {&lt;br /&gt;
    method: &amp;quot;GET&amp;quot;,&lt;br /&gt;
    url: &amp;quot;https://xpxz4ia541.execute-api.us-east-2.amazonaws.com/Test/baseUserId/get&amp;quot;,//if phee re-deploy service api will change ask phee if can't connect to api.&lt;br /&gt;
    headers: { //require for query api backen with auth.&lt;br /&gt;
      Authorization: &amp;quot;Bearer &amp;quot; + localStorage.getItem(&amp;quot;access_token&amp;quot;),&lt;br /&gt;
      Accept: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
      &amp;quot;Content-Type&amp;quot;: &amp;quot;application/json&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    body: {},&lt;br /&gt;
  };&lt;br /&gt;
  const { data: userIdData } = useGetUserIdQuery(objBackend, {&lt;br /&gt;
    skip://not query backend if condition true, It the good way for set condition for query&lt;br /&gt;
      !localStorage.getItem(&amp;quot;access_token&amp;quot;) || &lt;br /&gt;
      (localStorage.getItem(&amp;quot;access_token&amp;quot;) &amp;amp;&amp;amp; localStorage.getItem(&amp;quot;userId&amp;quot;)),&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3151</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3151"/>
		<updated>2025-04-17T08:11:58Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept=&lt;br /&gt;
*check if login by get access_token from local_storage&lt;br /&gt;
*querry userId from backend if login and set it in local_storage&lt;br /&gt;
*use userId to querry user_detail&lt;br /&gt;
*Must to set Uset-detal component as parent of menu-output&lt;br /&gt;
&lt;br /&gt;
=Why user-detail have to set as parent of menu-output=&lt;br /&gt;
*Menu-output it always mount on web page every single page will see menu-output.&lt;br /&gt;
*After login menu-output will check login and decide which component should output between login component and not login component by check user detail had already query user-detail or not.&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3150</id>
		<title>2025-03-17 User Detail</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-17_User_Detail&amp;diff=3150"/>
		<updated>2025-04-17T07:22:59Z</updated>

		<summary type="html">&lt;p&gt;Pack: Created page with &amp;quot;=Concept=&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Concept=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3149</id>
		<title>2025-03-20 - Frontend Authentication with Redux</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3149"/>
		<updated>2025-04-17T07:22:38Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=concept=&lt;br /&gt;
*use both of javascript funtion and react&lt;br /&gt;
*use redux for trigger longin in [[2025-034-17 User Detial]]&lt;br /&gt;
*trigger another tab is doesn't work for now because each tab has own store login work when use just one tab now &lt;br /&gt;
*if use more than one tab another tab must refresh to update login&lt;br /&gt;
&lt;br /&gt;
=Why use Redux=&lt;br /&gt;
*Single page SPA will render only one time after fist mount component if nothing change like useState hook component will not re-render&lt;br /&gt;
*When authentication work done with login and redirect to current page and user-detail component that already mount before login &lt;br /&gt;
*User-detail component will not re-render becase it not anything change in component, So they can't see anythig set in local_storage &lt;br /&gt;
*If not have access_token component can not querry userId from backend &lt;br /&gt;
*If not have userId component can't querry user-detail&lt;br /&gt;
*To fix it use redux by change some property in reducer and user-detail will trigger it change by useSelecter then compoonent will re-render &lt;br /&gt;
=Process=&lt;br /&gt;
*fist, Component will call loginStart function then check accessToken and accessToken_expire from local storage before login with AWS cognito&lt;br /&gt;
*after login with AWS cognito will redirect to login component for get accessToken, accessToken_expire, refresh_token and set them in local_storage&lt;br /&gt;
*after everything set before redirect to current page componet will update loginStatus by isLogin property in user_detail reducer for trigger user-detail&lt;br /&gt;
*then redirect to current page&lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* [[2025-034-17 User Detial]]&lt;br /&gt;
* [[Frontend Styles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-03-20]]&lt;br /&gt;
[[Category:Working documents - Frontend Authentication with Redux| 2025-03-20]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3148</id>
		<title>2025-03-20 - Frontend Authentication with Redux</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3148"/>
		<updated>2025-04-17T07:19:49Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=concept=&lt;br /&gt;
*use both of javascript funtion and react&lt;br /&gt;
*use redux for trigger longin in user-detail&lt;br /&gt;
*trigger another tab is doesn't work for now because each tab has own store login work when use just one tab now &lt;br /&gt;
*if use more than one tab another tab must refresh to update login&lt;br /&gt;
&lt;br /&gt;
=Why use Redux=&lt;br /&gt;
*Single page SPA will render only one time after fist mount component if nothing change like useState hook component will not re-render&lt;br /&gt;
*When authentication work done with login and redirect to current page and user-detail component that already mount before login &lt;br /&gt;
*User-detail component will not re-render becase it not anything change in component, So they can't see anythig set in local_storage &lt;br /&gt;
*If not have access_token component can not querry userId from backend &lt;br /&gt;
*If not have userId component can't querry user-detail&lt;br /&gt;
*To fix it use redux by change some property in reducer and user-detail will trigger it change by useSelecter then compoonent will re-render &lt;br /&gt;
=Process=&lt;br /&gt;
*fist, Component will call loginStart function then check accessToken and accessToken_expire from local storage before login with AWS cognito&lt;br /&gt;
*after login with AWS cognito will redirect to login component for get accessToken, accessToken_expire, refresh_token and set them in local_storage&lt;br /&gt;
*after everything set before redirect to current page componet will update loginStatus by isLogin property in user_detail reducer for trigger user-detail&lt;br /&gt;
*then redirect to current page&lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* [[User Detial]]&lt;br /&gt;
* [[Frontend Styles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-03-20]]&lt;br /&gt;
[[Category:Working documents - Frontend Authentication with Redux| 2025-03-20]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3147</id>
		<title>2025-03-20 - Frontend Authentication with Redux</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3147"/>
		<updated>2025-04-17T07:04:54Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=concept=&lt;br /&gt;
*use both of javascript funtion and react&lt;br /&gt;
*use redux for trigger longin in user-detail&lt;br /&gt;
*trigger another tab is doesn't work for now because each tab has own store login work when use just one tab now &lt;br /&gt;
*if use more than one tab another tab must refresh to update login&lt;br /&gt;
&lt;br /&gt;
=Process=&lt;br /&gt;
*fist, Component will call loginStart function then check accessToken and accessToken_expire from local storage before login with AWS cognito&lt;br /&gt;
*after login with AWS cognito will redirect to login component for get accessToken, accessToken_expire, refresh_token and set them in local_storage&lt;br /&gt;
*after everything set before redirect to current page componet will update loginStatus by isLogin property in user_detail reducer for trigger user-detail&lt;br /&gt;
*then redirect to current page&lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* [[User Detial]]&lt;br /&gt;
* [[Frontend Styles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-03-20]]&lt;br /&gt;
[[Category:Working documents - Frontend Authentication with Redux| 2025-03-20]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3146</id>
		<title>2025-03-20 - Frontend Authentication with Redux</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3146"/>
		<updated>2025-04-17T06:36:21Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=concept=&lt;br /&gt;
*use both of javascript funtion and react&lt;br /&gt;
*use redux for trigger longin in user-detail&lt;br /&gt;
*fist, Component will call loginStart function then check accessToken and accessToken_expire from local storage before login with AWS cognito&lt;br /&gt;
*after login with AWS cognito will redirect to login component &lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* [[User Detial]]&lt;br /&gt;
* [[Frontend Styles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-03-20]]&lt;br /&gt;
[[Category:Working documents - Frontend Authentication with Redux| 2025-03-20]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3143</id>
		<title>2025-03-20 - Frontend Authentication with Redux</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-03-20_-_Frontend_Authentication_with_Redux&amp;diff=3143"/>
		<updated>2025-04-17T05:47:56Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=concept=&lt;br /&gt;
ี*use redux for trigger longin in user-detail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== other ==&lt;br /&gt;
* [[User Detial]]&lt;br /&gt;
* [[Frontend Styles]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-03-20]]&lt;br /&gt;
[[Category:Working documents - Frontend Authentication with Redux| 2025-03-20]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3142</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3142"/>
		<updated>2025-04-17T03:51:20Z</updated>

		<summary type="html">&lt;p&gt;Pack: /* Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
==Concept==&lt;br /&gt;
*Every styleComponet tag can use the same fotmat and every html Tag can use the same styleComponet tag and send propperties to each styleComponet tag for use different cssStyle.&lt;br /&gt;
*store all css as object in themeStylesDefault.js.&lt;br /&gt;
*mixed cssStyle from defaultCss and objTypeCss.&lt;br /&gt;
*defaultCss is look like &amp;quot;tabulation_section_dataType_sort&amp;quot;, It only first index of cssPrefix join by &amp;quot;_&amp;quot; with cssSuffix &lt;br /&gt;
*objTypeCss is look the same daefaultCss but insert serviceTag and objectType after fist index separate by &amp;quot;_&amp;quot;,It look like &amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;&lt;br /&gt;
*objTypeCss can cut objectType and left only serviceTag, So objTypeCss can have 2 style.It look like &amp;quot;tabulation_serviceTag_section_dataType_sort&amp;quot;&lt;br /&gt;
*objTypeCss will always ovewrite defaultCss (can read more in createComponent function process)&lt;br /&gt;
&lt;br /&gt;
==StyleTag Name Format==&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==StyleTag Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
*type object(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;tableConfig_serviceTag_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto; padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableConfig_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableConfig_serviceTag_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableOutput_serviceTag_objectType_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row; padding: 5px; padding-right: 10px;  transition: 0.3s;  z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableOutput_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row; padding: 5px;  padding-right: 10px; background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableOutput_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags===&lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tableConfig_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tableConfig_serviceTag_section_dataType_sort&amp;quot;,&amp;quot;tableConfig_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 `color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===function process===&lt;br /&gt;
*Use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*When searching for styleTag in themeStylesDefault, the function starts searching for styleTag from the last index first, then searches the second index, and then the first index.&lt;br /&gt;
*The last index is defaultStyleTag , which does not specify an objType , but the remaining two indexes are objTypeStyeTag , which does specify an objType , with this process objTypeStyeTag will overwrite defaultStyleTag .&lt;br /&gt;
*ThemeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*Create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  `color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;`&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===cssPrefixs=== &lt;br /&gt;
*type array(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item. &lt;br /&gt;
*Reade more and watch example in createCssPrefixs function.&lt;br /&gt;
===suffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
*Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
*Reade more and watch example in createCssSuffix function.&lt;br /&gt;
===return result===&lt;br /&gt;
*type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tableOutput_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tableOutput_objectType_section_dataType_sort&amp;quot;,&amp;quot;tableOutput_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== &lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType.It look like [&amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3141</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3141"/>
		<updated>2025-04-17T03:46:51Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
==Concept==&lt;br /&gt;
*store all css as object in themeStylesDefault.js.&lt;br /&gt;
*mixed cssStyle from defaultCss and objTypeCss.&lt;br /&gt;
*defaultCss is look like &amp;quot;tabulation_section_dataType_sort&amp;quot;, It only first index of cssPrefix join by &amp;quot;_&amp;quot; with cssSuffix &lt;br /&gt;
*objTypeCss is look the same daefaultCss but insert serviceTag and objectType after fist index separate by &amp;quot;_&amp;quot;,It look like &amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;&lt;br /&gt;
*objTypeCss can cut objectType and left only serviceTag, So objTypeCss can have 2 style.It look like &amp;quot;tabulation_serviceTag_section_dataType_sort&amp;quot;&lt;br /&gt;
*objTypeCss will always ovewrite defaultCss (can read more in createComponent function process)&lt;br /&gt;
&lt;br /&gt;
==StyleTag Name Format==&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==StyleTag Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
*type object(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;tableConfig_serviceTag_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto; padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableConfig_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableConfig_serviceTag_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableOutput_serviceTag_objectType_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row; padding: 5px; padding-right: 10px;  transition: 0.3s;  z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableOutput_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row; padding: 5px;  padding-right: 10px; background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tableOutput_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags===&lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tableConfig_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tableConfig_serviceTag_section_dataType_sort&amp;quot;,&amp;quot;tableConfig_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 `color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===function process===&lt;br /&gt;
*Use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*When searching for styleTag in themeStylesDefault, the function starts searching for styleTag from the last index first, then searches the second index, and then the first index.&lt;br /&gt;
*The last index is defaultStyleTag , which does not specify an objType , but the remaining two indexes are objTypeStyeTag , which does specify an objType , with this process objTypeStyeTag will overwrite defaultStyleTag .&lt;br /&gt;
*ThemeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*Create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  `color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;`&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===cssPrefixs=== &lt;br /&gt;
*type array(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item. &lt;br /&gt;
*Reade more and watch example in createCssPrefixs function.&lt;br /&gt;
===suffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
*Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
*Reade more and watch example in createCssSuffix function.&lt;br /&gt;
===return result===&lt;br /&gt;
*type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tableOutput_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tableOutput_objectType_section_dataType_sort&amp;quot;,&amp;quot;tableOutput_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== &lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType.It look like [&amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3140</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3140"/>
		<updated>2025-04-17T03:26:35Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
==Concept==&lt;br /&gt;
*store all css as object in themeStylesDefault.js.&lt;br /&gt;
*mixed cssStyle from defaultCss and objTypeCss.&lt;br /&gt;
*defaultCss is look like &amp;quot;tabulation_section_dataType_sort&amp;quot;, It only first index of cssPrefix join by &amp;quot;_&amp;quot; with cssSuffix &lt;br /&gt;
*objTypeCss is look the same daefaultCss but insert serviceTag and objectType after fist index separate by &amp;quot;_&amp;quot;,It look like &amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;&lt;br /&gt;
*objTypeCss can cut objectType and left only serviceTag, So objTypeCss can have 2 style.It look like &amp;quot;tabulation_serviceTag_section_dataType_sort&amp;quot;&lt;br /&gt;
*objTypeCss will always ovewrite defaultCss (can read more in createComponent function process)&lt;br /&gt;
&lt;br /&gt;
==StyleTag Name Format==&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==StyleTag Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
*type object(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;componentXNavbar&amp;quot;: &amp;quot;width: auto;  flex-direction: row;  padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;navbar&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;specificInThisCOmpnonentBuyingNavbar&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(223, 232, 204);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;    padding-right: 10px;    background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags===&lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_ComplexFilter_filterData_section_dataType_sort&amp;quot;,&amp;quot;tabulation_ComplexFilter_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
 `color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;`&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
===function process===&lt;br /&gt;
*use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*themeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  `color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;`&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===cssPrefixs=== &lt;br /&gt;
*type array(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item. &lt;br /&gt;
*Reade more and watch example in createCssPrefixs function.&lt;br /&gt;
===suffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
*Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
*Reade more and watch example in createCssSuffix function.&lt;br /&gt;
===return result===&lt;br /&gt;
*type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== &lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType.It look like [&amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3139</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3139"/>
		<updated>2025-04-17T02:29:10Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
&lt;br /&gt;
===StyleTag Name Format===&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===StyleTag Syntax===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
*type object(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;componentXNavbar&amp;quot;: &amp;quot;width: auto;  flex-direction: row;  padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;navbar&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;specificInThisCOmpnonentBuyingNavbar&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(223, 232, 204);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;    padding-right: 10px;    background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags===&lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_ComplexFilter_filterData_section_dataType_sort&amp;quot;,&amp;quot;tabulation_ComplexFilter_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&lt;br /&gt;
===function process===&lt;br /&gt;
*use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*themeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===createCssPrefixs=== &lt;br /&gt;
*type array(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item&lt;br /&gt;
===createCssSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
===return result===&lt;br /&gt;
*type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== &lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType. &lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3138</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3138"/>
		<updated>2025-04-17T02:28:06Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
&lt;br /&gt;
===StyleTag Name Format===&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===StyleTag Syntax===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
*type object(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;componentXNavbar&amp;quot;: &amp;quot;width: auto;  flex-direction: row;  padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;navbar&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;specificInThisCOmpnonentBuyingNavbar&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(223, 232, 204);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;    padding-right: 10px;    background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags===&lt;br /&gt;
*type array(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_ComplexFilter_filterData_section_dataType_sort&amp;quot;,&amp;quot;tabulation_ComplexFilter_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&lt;br /&gt;
===function process===&lt;br /&gt;
*use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*themeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===createCssPrefixs=== &lt;br /&gt;
*type array(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item&lt;br /&gt;
===createCssSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
===return result===&lt;br /&gt;
*type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== &lt;br /&gt;
type string(requried)&lt;br /&gt;
Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== &lt;br /&gt;
type array(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType. &lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== &lt;br /&gt;
*type string(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== &lt;br /&gt;
*type string(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
*type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3137</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3137"/>
		<updated>2025-04-17T02:26:21Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
&lt;br /&gt;
===StyleTag Name Format===&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===StyleTag Syntax===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
type object(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;componentXNavbar&amp;quot;: &amp;quot;width: auto;  flex-direction: row;  padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;navbar&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;specificInThisCOmpnonentBuyingNavbar&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(223, 232, 204);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;    padding-right: 10px;    background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags===&lt;br /&gt;
type array(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_ComplexFilter_filterData_section_dataType_sort&amp;quot;,&amp;quot;tabulation_ComplexFilter_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== &lt;br /&gt;
type string(can be undefined)&lt;br /&gt;
Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&lt;br /&gt;
===function process===&lt;br /&gt;
*use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*themeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===createCssPrefixs=== &lt;br /&gt;
type array(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item&lt;br /&gt;
===createCssSuffix=== &lt;br /&gt;
type string(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== &lt;br /&gt;
type string(requried)&lt;br /&gt;
Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== &lt;br /&gt;
type array(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType. &lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== &lt;br /&gt;
type string(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== &lt;br /&gt;
type string(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3136</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3136"/>
		<updated>2025-04-17T02:23:31Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
&lt;br /&gt;
===StyleTag Name Format===&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===StyleTag Syntax===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== &lt;br /&gt;
(object)(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;componentXNavbar&amp;quot;: &amp;quot;width: auto;  flex-direction: row;  padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;navbar&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;specificInThisCOmpnonentBuyingNavbar&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(223, 232, 204);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;    padding-right: 10px;    background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags=== (array)(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_ComplexFilter_filterData_section_dataType_sort&amp;quot;,&amp;quot;tabulation_ComplexFilter_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== (string)(can be undefined)&lt;br /&gt;
Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&lt;br /&gt;
===function process===&lt;br /&gt;
*use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*themeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===createCssPrefixs=== (array)(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item&lt;br /&gt;
===createCssSuffix=== (string)(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== (string)(requried)&lt;br /&gt;
Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== (array)(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType. &lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== (string)(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== (string)(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3135</id>
		<title>2025-04-08 - Frontend Styles</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-08_-_Frontend_Styles&amp;diff=3135"/>
		<updated>2025-04-17T02:22:29Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= styled-components concept=&lt;br /&gt;
&lt;br /&gt;
===StyleTag Name Format===&lt;br /&gt;
&lt;br /&gt;
* use &amp;quot;Izara&amp;quot; + html tag + &amp;quot;Style&amp;quot;&lt;br /&gt;
* html tag = same tag with styled.tag&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
const IzaraInputStyle = styled.input&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===StyleTag Syntax===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
export const IzaraTextSpanStyle = styled.span`&lt;br /&gt;
  ${(props) =&amp;gt; createComponent(props)}&lt;br /&gt;
`;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=function=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==createComponent==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===themeStyle=== (object)(can be undefined)&lt;br /&gt;
*object from userStyles get from userDetail in store after login, It store styletag as key and css as value&lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
themeStyle = {&lt;br /&gt;
  styles: {&lt;br /&gt;
    &amp;quot;componentXNavbar&amp;quot;: &amp;quot;width: auto;  flex-direction: row;  padding: 5px;  padding-right: 10px;  background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;navbar&amp;quot;: &amp;quot;width: auto;    flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;specificInThisCOmpnonentBuyingNavbar&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;  background: rgb(223, 232, 204);   transition: 0.3s;  z-index: 5;  35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_datatype&amp;quot;: &amp;quot;width: auto;  flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(223, 232, 204);   transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_buyingNavbar_navbar_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;    padding-right: 10px;    background: rgb(204, 214, 166);  transition: 0.3s;  z-index: 5;  height: 35px;&amp;quot;,&lt;br /&gt;
    &amp;quot;tabulation_datatype&amp;quot;: &amp;quot;width: auto;   flex-direction: row;   padding: 5px;   padding-right: 10px;    background: rgb(199, 242, 164);  transition: 0.3s;   z-index: 5;   height: 35px;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===styletags=== (array)(can be undefined)&lt;br /&gt;
*list of use styletag create from createStyleTags function &lt;br /&gt;
eg.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_ComplexFilter_filterData_section_dataType_sort&amp;quot;,&amp;quot;tabulation_ComplexFilter_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===overwritecssstyles=== (string)(can be undefined)&lt;br /&gt;
Css value obtained from the objectConfig followed by the style tag as a key.&lt;br /&gt;
&lt;br /&gt;
===function process===&lt;br /&gt;
*use styleTags to get CssStyle from themeStyle and themeStylesDefault&lt;br /&gt;
*themeStylesDefault is object from local create by dev,It store styletag as key and css as value like themeStyle object&lt;br /&gt;
*create usingCss style by mixed cssStyle from styleTags with cssStyle from overwritecssstyles&lt;br /&gt;
===return result===&lt;br /&gt;
type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
  color: blue;&lt;br /&gt;
  margin: 0px 3px;&lt;br /&gt;
  background-color: transparent;&lt;br /&gt;
  transition: 0.3s;&lt;br /&gt;
  font-size: 17px;&lt;br /&gt;
  display: flex;&lt;br /&gt;
  align-items: center;&lt;br /&gt;
    :hover{&lt;br /&gt;
      opacity: 0.6;&lt;br /&gt;
      color: #B3DBD8 ;&lt;br /&gt;
    }&lt;br /&gt;
  color: red;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* About CSS, if the same property exists, such as in the CSS example above, with two color properties, the CSS will cause the bottom line property to overwrite the top line property. In the example, red overwrites blue.&lt;br /&gt;
&lt;br /&gt;
==createStyleTags==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===createCssPrefixs=== (array)(requried)&lt;br /&gt;
*List of string create by createCssPrefixs function store at least 1 item but not more than 3 item&lt;br /&gt;
===createCssSuffix=== (string)(requried)&lt;br /&gt;
*A string generated by the createCssSuffix function that indicates where this cssStyle will be applied on the page, such as rows, cells, or table. &lt;br /&gt;
Conditions can be added after the &amp;quot;_&amp;quot; to further specify or describe the style, such as color, row range, or column range.&lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
[&amp;quot;tabulation_serviceTag_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_objectType_section_dataType_sort&amp;quot;,&amp;quot;tabulation_section_dataType_sort&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssPrefixs==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultPrefix=== (string)(requried)&lt;br /&gt;
Specifies which objectConfig is using this cssStyle. eg. menuOutput, tableConfig, sitePageConfig, tableOutput.&lt;br /&gt;
===cssPrefixes=== (array)(can be undefined)&lt;br /&gt;
*List of ObjTypes must have 2 items, fist index is serviceTag second is objectType. &lt;br /&gt;
===return result===&lt;br /&gt;
type array&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;]&lt;br /&gt;
//have cssPrefixes&lt;br /&gt;
[&amp;quot;tableConfig&amp;quot;, &amp;quot;serviceTag&amp;quot;, &amp;quot;objectType&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createCssSuffix==&lt;br /&gt;
===Parameter===&lt;br /&gt;
===defaultSuffix=== (string)(requried)&lt;br /&gt;
*Specifies where this cssStyle will be applied on the page, such as rows, cells, or tables.&lt;br /&gt;
===localSuffix=== (string)(can be undefined)&lt;br /&gt;
*Specify or further explain defaultSuffix. A string can be a single word or a combination of words, and each word must be separated by &amp;quot;_&amp;quot;. eg. &amp;quot;background_blue&amp;quot;, &amp;quot;rowSpan_2&amp;quot;&lt;br /&gt;
===return result===&lt;br /&gt;
type string&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
//if not have localSuffix&lt;br /&gt;
&amp;quot;row&amp;quot;&lt;br /&gt;
//have localSuffix&lt;br /&gt;
&amp;quot;row_rowSpan_2&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Working documents| 2025-04-08]]&lt;br /&gt;
[[Category:Working documents - Frontend Styles| 2025-04-08]]&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3134</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3134"/>
		<updated>2025-04-17T02:19:34Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;br /&gt;
*don't need to do anything with this library&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3129</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3129"/>
		<updated>2025-04-15T08:05:26Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
//for use defaultNS only if reference word come frome another namespace that not set in defaultNS reference word will not found.&lt;br /&gt;
MyTranslation(&amp;quot;reference_word&amp;quot;)&lt;br /&gt;
//if want to use reference word in another namespace but namespace must have to set in ns.&lt;br /&gt;
MyTranslation(&amp;quot;nameSpace_name:reference_word&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3128</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3128"/>
		<updated>2025-04-15T06:26:01Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
&lt;br /&gt;
==i18n==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
i18n&lt;br /&gt;
  .use(Backend) // load translation using xhr -&amp;gt; see /public/locales. We will add locales in the next step&lt;br /&gt;
  .use(LanguageDetector) // detect user language&lt;br /&gt;
  .use(initReactI18next) // pass the i18n instance to react-i18next.&lt;br /&gt;
  .init({&lt;br /&gt;
    fallbackLng, // if user computer language is not on the list of available languages, than we will be using the fallback language specified earlier&lt;br /&gt;
    debug: true,&lt;br /&gt;
    lng: &amp;quot;en&amp;quot;,&lt;br /&gt;
    // whitelist: availableLanguages,&lt;br /&gt;
    interpolation: {&lt;br /&gt;
      escapeValue: false,&lt;br /&gt;
    },&lt;br /&gt;
    react: {&lt;br /&gt;
      useSuspense: false,&lt;br /&gt;
    },&lt;br /&gt;
    backend: {&lt;br /&gt;
      loadPath:&lt;br /&gt;
        &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;,&lt;br /&gt;
      crossDomain: true,&lt;br /&gt;
      allowMultiLoading: true,&lt;br /&gt;
    },&lt;br /&gt;
    ns,//get all translated word in namespace follow by list of ns then store it in i18n.store.data&lt;br /&gt;
    defaultNS: &amp;quot;buying&amp;quot;, //use this namespace first &lt;br /&gt;
  });&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
{MyTranslation(&amp;quot;greeting&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3127</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3127"/>
		<updated>2025-04-15T05:05:05Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
format&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
{MyTranslation(&amp;quot;greeting&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===changeLanguage===&lt;br /&gt;
*set new language &lt;br /&gt;
example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
changeLanguage(&amp;quot;jp&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3126</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3126"/>
		<updated>2025-04-15T04:45:21Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
*send reference word to i18n for output translated word follow by current using language&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
{MyTranslation(&amp;quot;greeting&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3125</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3125"/>
		<updated>2025-04-15T02:19:11Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
==function==&lt;br /&gt;
===MyTranslation===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{MyTranslation(&amp;quot;greeting&amp;quot;)}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3124</id>
		<title>2025-04-12- translation</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=2025-04-12-_translation&amp;diff=3124"/>
		<updated>2025-04-15T00:59:36Z</updated>

		<summary type="html">&lt;p&gt;Pack: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Translation Microfrontend=&lt;br /&gt;
==function==&lt;br /&gt;
&lt;br /&gt;
==S3==&lt;br /&gt;
*Store translations of each language in their respective directory.&lt;br /&gt;
===S3 tree===&lt;br /&gt;
   /translations-language&lt;br /&gt;
     /locales&lt;br /&gt;
      /{language_name} &lt;br /&gt;
       -{namespace_name}.json&lt;br /&gt;
&lt;br /&gt;
===.json file===&lt;br /&gt;
* key = reference word&lt;br /&gt;
* value = translated word&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;greeting&amp;quot;: &amp;quot;Hello&amp;quot;,&lt;br /&gt;
  &amp;quot;text&amp;quot;: &amp;quot;Thank you for visiting our website.&amp;quot;,&lt;br /&gt;
  &amp;quot;language&amp;quot;: &amp;quot;Language&amp;quot;,&lt;br /&gt;
  &amp;quot;Hi&amp;quot;: &amp;quot;What's up&amp;quot;,&lt;br /&gt;
  &amp;quot;Hello&amp;quot;: &amp;quot;greeting from translation&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Object link===&lt;br /&gt;
*format&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/{{lng}}/{{ns}}.json&amp;quot;&lt;br /&gt;
*example&lt;br /&gt;
   &amp;quot;https://translations-language.s3.us-east-2.amazonaws.com/locales/en/buying.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Translation NPM Library=&lt;/div&gt;</summary>
		<author><name>Pack</name></author>
	</entry>
</feed>