0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-03-24 22:41:28 -05:00

feat(console,phrases): add organization creation guide (part 1)

This commit is contained in:
Charles Zhao 2023-10-25 20:30:35 +08:00
parent 2b15b13bbf
commit 4fd99b44c5
No known key found for this signature in database
GPG key ID: 3EBD576D8B273301
28 changed files with 981 additions and 0 deletions

View file

@ -0,0 +1,15 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.8001 11.2V17.6H27.2001V11.2H20.8001ZM19.2001 8C18.3164 8 17.6001 8.71634 17.6001 9.6V19.2C17.6001 20.0837 18.3164 20.8 19.2001 20.8H28.8001C29.6837 20.8 30.4001 20.0837 30.4001 19.2V9.6C30.4001 8.71634 29.6837 8 28.8001 8H19.2001ZM11.2 30.3994V36.7994H17.6V30.3994H11.2ZM9.6 27.1994C8.71634 27.1994 8 27.9158 8 28.7994V38.3994C8 39.2831 8.71634 39.9994 9.6 39.9994H19.2C20.0837 39.9994 20.8 39.2831 20.8 38.3994V28.7994C20.8 27.9158 20.0837 27.1994 19.2 27.1994H15.9999V25.6003H31.9999V27.1994H28.8001C27.9165 27.1994 27.2001 27.9158 27.2001 28.7994V38.3994C27.2001 39.2831 27.9165 39.9994 28.8001 39.9994H38.4001C39.2838 39.9994 40.0001 39.2831 40.0001 38.3994V28.7994C40.0001 27.9158 39.2838 27.1994 38.4001 27.1994H35.1999V25.6003C35.1999 23.833 33.7672 22.4003 31.9999 22.4003H25.6001V20.8006H22.4001L22.4001 22.4003H15.9999C14.2325 22.4003 12.7999 23.833 12.7999 25.6003V27.1994H9.6ZM30.4002 36.7994V30.3994H36.8001V36.7994H30.4002Z" fill="url(#paint0_linear_9450_17742)"/>
<circle cx="7" cy="19" r="1.5" stroke="#78767F"/>
<rect x="36.879" y="7" width="3" height="3" rx="0.5" transform="rotate(-45 36.879 7)" stroke="#78767F"/>
<rect x="18.7071" y="44.8281" width="3" height="3" rx="0.5" transform="rotate(-45 18.7071 44.8281)" stroke="#78767F"/>
<path d="M20.8 11.2002V17.6002H27.2V11.2002H20.8Z" fill="#FAABFF" fill-opacity="0.3"/>
<path opacity="0.6" d="M11.2 30.3994V36.7994H17.6V30.3994H11.2Z" fill="#FAABFF" fill-opacity="0.3"/>
<path d="M30.4001 30.3994V36.7994H36.8001V30.3994H30.4001Z" fill="#FAABFF" fill-opacity="0.3"/>
<defs>
<linearGradient id="paint0_linear_9450_17742" x1="13.5" y1="35.6662" x2="34.9996" y2="12.6661" gradientUnits="userSpaceOnUse">
<stop stop-color="#5D34F2"/>
<stop offset="1" stop-color="#FF88FA"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,15 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.8001 11.2V17.6H27.2001V11.2H20.8001ZM19.2001 8C18.3164 8 17.6001 8.71634 17.6001 9.6V19.2C17.6001 20.0837 18.3164 20.8 19.2001 20.8H28.8001C29.6837 20.8 30.4001 20.0837 30.4001 19.2V9.6C30.4001 8.71634 29.6837 8 28.8001 8H19.2001ZM11.2 30.3994V36.7994H17.6V30.3994H11.2ZM9.6 27.1994C8.71634 27.1994 8 27.9158 8 28.7994V38.3994C8 39.2831 8.71634 39.9994 9.6 39.9994H19.2C20.0837 39.9994 20.8 39.2831 20.8 38.3994V28.7994C20.8 27.9158 20.0837 27.1994 19.2 27.1994H15.9999V25.6003H31.9999V27.1994H28.8001C27.9165 27.1994 27.2001 27.9158 27.2001 28.7994V38.3994C27.2001 39.2831 27.9165 39.9994 28.8001 39.9994H38.4001C39.2838 39.9994 40.0001 39.2831 40.0001 38.3994V28.7994C40.0001 27.9158 39.2838 27.1994 38.4001 27.1994H35.1999V25.6003C35.1999 23.833 33.7672 22.4003 31.9999 22.4003H25.6001V20.8006H22.4001L22.4001 22.4003H15.9999C14.2325 22.4003 12.7999 23.833 12.7999 25.6003V27.1994H9.6ZM30.4002 36.7994V30.3994H36.8001V36.7994H30.4002Z" fill="url(#paint0_linear_9448_17722)"/>
<circle cx="7" cy="19" r="1.5" stroke="#FFD5FF"/>
<rect x="36.879" y="7" width="3" height="3" rx="0.5" transform="rotate(-45 36.879 7)" stroke="#E6DEFF"/>
<rect x="18.7071" y="44.8281" width="3" height="3" rx="0.5" transform="rotate(-45 18.7071 44.8281)" stroke="#E6DEFF"/>
<path opacity="0.6" d="M20.8 11.2002V17.6002H27.2V11.2002H20.8Z" fill="#FAABFF"/>
<path opacity="0.6" d="M11.2 30.3994V36.7994H17.6V30.3994H11.2Z" fill="#FAABFF"/>
<path opacity="0.6" d="M30.4001 30.3994V36.7994H36.8001V30.3994H30.4001Z" fill="#FAABFF"/>
<defs>
<linearGradient id="paint0_linear_9448_17722" x1="13.5" y1="35.6662" x2="34.9996" y2="12.6661" gradientUnits="userSpaceOnUse">
<stop stop-color="#5D34F2"/>
<stop offset="1" stop-color="#FF88FA"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -0,0 +1,44 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 12C7 9.79086 8.79086 8 11 8L37 8C39.2091 8 41 9.79086 41 12V30C41 32.2091 39.2091 34 37 34H11C8.79086 34 7 32.2091 7 30L7 12Z" fill="url(#paint0_linear_9450_17840)"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="14" y="36" width="20" height="4" rx="2" fill="#AF9EFF"/>
<circle cx="35" cy="28" r="5" fill="url(#paint1_linear_9450_17840)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.3482 27.3754C32.1041 27.6195 32.1041 28.0152 32.3482 28.2593L34.1158 30.0269L34.116 30.0271C34.36 30.2712 34.7558 30.2712 34.9998 30.0271C35.0042 30.0227 35.0085 30.0183 35.0127 30.0139L37.6513 27.3753C37.8954 27.1312 37.8954 26.7354 37.6513 26.4914C37.4072 26.2473 37.0115 26.2473 36.7674 26.4914L34.5577 28.7011L33.2321 27.3754C32.988 27.1314 32.5923 27.1314 32.3482 27.3754Z" fill="url(#paint2_linear_9450_17840)"/>
<defs>
<linearGradient id="paint0_linear_9450_17840" x1="35.5104" y1="10.9792" x2="20.4222" y2="35.5618" gradientUnits="userSpaceOnUse">
<stop stop-color="#F07EFF"/>
<stop offset="1" stop-color="#FFF480"/>
</linearGradient>
<linearGradient id="paint1_linear_9450_17840" x1="35.9375" y1="23" x2="33.125" y2="32.6875" gradientUnits="userSpaceOnUse">
<stop stop-color="#80E670"/>
<stop offset="1" stop-color="#50AC56"/>
</linearGradient>
<linearGradient id="paint2_linear_9450_17840" x1="36.4061" y1="25.6567" x2="33.7498" y2="30.0317" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#E9F2E9"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -0,0 +1,44 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 12C7 9.79086 8.79086 8 11 8L37 8C39.2091 8 41 9.79086 41 12V30C41 32.2091 39.2091 34 37 34H11C8.79086 34 7 32.2091 7 30L7 12Z" fill="url(#paint0_linear_9450_17778)"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="10.25" y="14.25" width="6.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="19.25" y="14.25" width="18.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="10.25" y="21.25" width="6.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="19.25" y="21.25" width="18.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="10.25" y="28.25" width="6.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" fill="#AF9EFF"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" stroke="#191C1D" stroke-width="0.5"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" stroke="#C4C7C7" stroke-opacity="0.02" stroke-width="0.5"/>
<rect x="19.25" y="28.25" width="18.5" height="0.5" rx="0.25" stroke="#CABEFF" stroke-opacity="0.14" stroke-width="0.5"/>
<rect x="14" y="36" width="20" height="4" rx="2" fill="#7958FF"/>
<circle cx="35" cy="28" r="5" fill="url(#paint1_linear_9450_17778)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.3482 27.3754C32.1041 27.6195 32.1041 28.0152 32.3482 28.2593L34.1158 30.0269L34.116 30.0271C34.36 30.2712 34.7558 30.2712 34.9998 30.0271C35.0042 30.0227 35.0085 30.0183 35.0127 30.0139L37.6513 27.3753C37.8954 27.1312 37.8954 26.7354 37.6513 26.4914C37.4072 26.2473 37.0115 26.2473 36.7674 26.4914L34.5577 28.7011L33.2321 27.3754C32.988 27.1314 32.5923 27.1314 32.3482 27.3754Z" fill="url(#paint2_linear_9450_17778)"/>
<defs>
<linearGradient id="paint0_linear_9450_17778" x1="35.5104" y1="10.9792" x2="20.4222" y2="35.5618" gradientUnits="userSpaceOnUse">
<stop stop-color="#F07EFF"/>
<stop offset="1" stop-color="#FFF480"/>
</linearGradient>
<linearGradient id="paint1_linear_9450_17778" x1="35.9375" y1="23" x2="33.125" y2="32.6875" gradientUnits="userSpaceOnUse">
<stop stop-color="#80E670"/>
<stop offset="1" stop-color="#50AC56"/>
</linearGradient>
<linearGradient id="paint2_linear_9450_17778" x1="36.4061" y1="25.6567" x2="33.7498" y2="30.0317" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="#E9F2E9"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4 KiB

View file

@ -0,0 +1,26 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6999_105958)">
<rect width="48" height="48" rx="8" fill="#F7F8F8" fill-opacity="0.12"/>
<rect x="5" y="5" width="30.8" height="30.8" rx="8" fill="url(#paint0_linear_6999_105958)" fill-opacity="0.8"/>
<circle cx="20.4" cy="15.7811" r="4.62" fill="#F5EEFF"/>
<rect x="15.0098" y="14.2412" width="6.16" height="0.77" rx="0.385" fill="#2D2C61"/>
<rect x="22.71" y="14.2412" width="3.08" height="0.77" rx="0.385" fill="#2D2C61"/>
<path d="M13.47 26.5614C13.47 24.0099 15.5384 21.9414 18.09 21.9414H22.71C25.2615 21.9414 27.33 24.0099 27.33 26.5614V28.1014C27.33 28.9519 26.6405 29.6414 25.79 29.6414H15.01C14.1595 29.6414 13.47 28.9519 13.47 28.1014V26.5614Z" fill="#FAABFF"/>
<path opacity="0.7" fill-rule="evenodd" clip-rule="evenodd" d="M34.72 26.6344C34.72 26.2091 35.0647 25.8644 35.49 25.8644H37.03C37.4552 25.8644 37.8 26.2091 37.8 26.6344V28.1744H34.72V26.6344ZM34.7199 44.3445C34.7199 44.7697 35.0647 45.1145 35.4899 45.1145H37.0299C37.4552 45.1145 37.7999 44.7697 37.7999 44.3445V42.8045H34.7199V44.3445ZM27.4049 37.0303C26.9797 37.0303 26.6349 36.6855 26.6349 36.2603V34.7203C26.6349 34.295 26.9797 33.9503 27.4049 33.9503H28.9449V37.0303H27.4049ZM45.1149 37.0303C45.5402 37.0303 45.8849 36.6855 45.8849 36.2603V34.7203C45.8849 34.295 45.5402 33.9503 45.1149 33.9503H43.5749V37.0303H45.1149Z" fill="#CABEFF"/>
<path opacity="0.7" fill-rule="evenodd" clip-rule="evenodd" d="M28.9096 30.3166C28.6089 30.0159 28.6089 29.5283 28.9096 29.2276L29.9985 28.1387C30.2992 27.838 30.7867 27.838 31.0875 28.1387L32.1764 29.2276L29.9985 31.4055L28.9096 30.3166ZM41.4323 42.8395C41.733 43.1402 42.2206 43.1402 42.5213 42.8395L43.6102 41.7506C43.9109 41.4499 43.9109 40.9624 43.6102 40.6617L42.5213 39.5727L40.3434 41.7506L41.4323 42.8395ZM31.0877 42.8401C30.787 43.1408 30.2995 43.1408 29.9988 42.8401L28.9098 41.7511C28.6091 41.4504 28.6091 40.9629 28.9098 40.6622L29.9987 39.5732L32.1766 41.7511L31.0877 42.8401ZM43.6104 30.317C43.9111 30.0163 43.9111 29.5288 43.6104 29.2281L42.5214 28.1391C42.2207 27.8384 41.7332 27.8384 41.4325 28.1391L40.3436 29.2281L42.5215 31.406L43.6104 30.317Z" fill="#CABEFF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.2598 43.191C40.5124 43.191 43.9598 39.7436 43.9598 35.491C43.9598 31.2384 40.5124 27.791 36.2598 27.791C32.0072 27.791 28.5598 31.2384 28.5598 35.491C28.5598 39.7436 32.0072 43.191 36.2598 43.191ZM36.2598 38.5712C37.9608 38.5712 39.3398 37.1923 39.3398 35.4912C39.3398 33.7902 37.9608 32.4112 36.2598 32.4112C34.5587 32.4112 33.1798 33.7902 33.1798 35.4912C33.1798 37.1923 34.5587 38.5712 36.2598 38.5712Z" fill="url(#paint1_linear_6999_105958)"/>
</g>
<defs>
<linearGradient id="paint0_linear_6999_105958" x1="32.5" y1="7" x2="4" y2="40.5" gradientUnits="userSpaceOnUse">
<stop stop-color="#5E35F3"/>
<stop offset="1" stop-color="#F5A7FF"/>
</linearGradient>
<linearGradient id="paint1_linear_6999_105958" x1="27.8112" y1="42.091" x2="42.7548" y2="30.0127" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFF06A"/>
<stop offset="1" stop-color="#E54AFE"/>
</linearGradient>
<clipPath id="clip0_6999_105958">
<rect width="48" height="48" rx="8" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,26 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_6929_103505)">
<rect width="48" height="48" rx="8" fill="#F3EFFA"/>
<rect x="5" y="5" width="30.8" height="30.8" rx="8" fill="url(#paint0_linear_6929_103505)" fill-opacity="0.8"/>
<circle cx="20.4" cy="15.7811" r="4.62" fill="#F5EEFF"/>
<rect x="15.0098" y="14.2412" width="6.16" height="0.77" rx="0.385" fill="#2D2C61"/>
<rect x="22.71" y="14.2412" width="3.08" height="0.77" rx="0.385" fill="#2D2C61"/>
<path d="M13.47 26.5614C13.47 24.0099 15.5384 21.9414 18.09 21.9414H22.71C25.2615 21.9414 27.33 24.0099 27.33 26.5614V28.1014C27.33 28.9519 26.6405 29.6414 25.79 29.6414H15.01C14.1595 29.6414 13.47 28.9519 13.47 28.1014V26.5614Z" fill="#FAABFF"/>
<path opacity="0.7" fill-rule="evenodd" clip-rule="evenodd" d="M34.72 26.6344C34.72 26.2091 35.0647 25.8644 35.49 25.8644H37.03C37.4552 25.8644 37.8 26.2091 37.8 26.6344V28.1744H34.72V26.6344ZM34.7199 44.3445C34.7199 44.7697 35.0647 45.1145 35.4899 45.1145H37.0299C37.4552 45.1145 37.7999 44.7697 37.7999 44.3445V42.8045H34.7199V44.3445ZM27.4049 37.0303C26.9797 37.0303 26.6349 36.6855 26.6349 36.2603V34.7203C26.6349 34.295 26.9797 33.9503 27.4049 33.9503H28.9449V37.0303H27.4049ZM45.1149 37.0303C45.5402 37.0303 45.8849 36.6855 45.8849 36.2603V34.7203C45.8849 34.295 45.5402 33.9503 45.1149 33.9503H43.5749V37.0303H45.1149Z" fill="#7958FF"/>
<path opacity="0.7" fill-rule="evenodd" clip-rule="evenodd" d="M28.9096 30.3166C28.6089 30.0159 28.6089 29.5283 28.9096 29.2276L29.9985 28.1387C30.2992 27.838 30.7867 27.838 31.0875 28.1387L32.1764 29.2276L29.9985 31.4055L28.9096 30.3166ZM41.4323 42.8395C41.733 43.1402 42.2206 43.1402 42.5213 42.8395L43.6102 41.7506C43.9109 41.4499 43.9109 40.9624 43.6102 40.6617L42.5213 39.5727L40.3434 41.7506L41.4323 42.8395ZM31.0877 42.8401C30.787 43.1408 30.2995 43.1408 29.9988 42.8401L28.9098 41.7511C28.6091 41.4504 28.6091 40.9629 28.9098 40.6622L29.9987 39.5732L32.1766 41.7511L31.0877 42.8401ZM43.6104 30.317C43.9111 30.0163 43.9111 29.5288 43.6104 29.2281L42.5214 28.1391C42.2207 27.8384 41.7332 27.8384 41.4325 28.1391L40.3436 29.2281L42.5215 31.406L43.6104 30.317Z" fill="#7958FF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.2598 43.191C40.5124 43.191 43.9598 39.7436 43.9598 35.491C43.9598 31.2384 40.5124 27.791 36.2598 27.791C32.0072 27.791 28.5598 31.2384 28.5598 35.491C28.5598 39.7436 32.0072 43.191 36.2598 43.191ZM36.2598 38.5712C37.9608 38.5712 39.3398 37.1923 39.3398 35.4912C39.3398 33.7902 37.9608 32.4112 36.2598 32.4112C34.5587 32.4112 33.1798 33.7902 33.1798 35.4912C33.1798 37.1923 34.5587 38.5712 36.2598 38.5712Z" fill="url(#paint1_linear_6929_103505)"/>
</g>
<defs>
<linearGradient id="paint0_linear_6929_103505" x1="32.5" y1="7" x2="4" y2="40.5" gradientUnits="userSpaceOnUse">
<stop stop-color="#5E35F3"/>
<stop offset="1" stop-color="#F5A7FF"/>
</linearGradient>
<linearGradient id="paint1_linear_6929_103505" x1="27.8112" y1="42.091" x2="42.7548" y2="30.0127" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFF06A"/>
<stop offset="1" stop-color="#E54AFE"/>
</linearGradient>
<clipPath id="clip0_6929_103505">
<rect width="48" height="48" rx="8" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -2,6 +2,7 @@
.container {
height: 80px;
flex-shrink: 0;
.actions {
height: 100%;

View file

@ -28,6 +28,7 @@ import Mfa from '@/pages/Mfa';
import NotFound from '@/pages/NotFound';
import OrganizationDetails from '@/pages/OrganizationDetails';
import Organizations from '@/pages/Organizations';
import OrganizationGuide from '@/pages/Organizations/Guide';
import Profile from '@/pages/Profile';
import ChangePasswordModal from '@/pages/Profile/containers/ChangePasswordModal';
import LinkEmailModal from '@/pages/Profile/containers/LinkEmailModal';
@ -157,6 +158,7 @@ function ConsoleContent() {
<Route path="create" element={<Organizations />} />
<Route path="settings" element={<Organizations tab="settings" />} />
<Route path=":id/*" element={<OrganizationDetails />} />
<Route path="guide" element={<OrganizationGuide />} />
</Route>
)}
<Route path="profile">

View file

@ -0,0 +1,36 @@
@use '@/scss/underscore' as _;
@use '@/scss/dimensions' as dim;
.container {
display: flex;
flex-direction: column;
align-items: center;
gap: _.unit(6);
.card {
display: flex;
flex-direction: column;
width: 100%;
max-width: dim.$guide-main-content-max-width;
padding: _.unit(12);
gap: _.unit(6);
.image {
width: 100%;
}
.icon {
width: 48px;
height: 48px;
flex-shrink: 0;
}
.title {
font: var(--font-title-1);
}
.subtitle {
font: var(--font-body-2);
}
}
}

View file

@ -0,0 +1,44 @@
import { Theme } from '@logto/schemas';
import classNames from 'classnames';
import { useTranslation } from 'react-i18next';
import OrganizationFeatureDark from '@/assets/icons/organization-feature-dark.svg';
import OrganizationFeature from '@/assets/icons/organization-feature.svg';
import PermissionFeatureDark from '@/assets/icons/permission-feature-dark.svg';
import PermissionFeature from '@/assets/icons/permission-feature.svg';
import workflowImage from '@/assets/images/organization-workflow.webp';
import Card from '@/ds-components/Card';
import useTheme from '@/hooks/use-theme';
import * as styles from './index.module.scss';
const icons = {
[Theme.Light]: { OrganizationIcon: OrganizationFeature, PermissionIcon: PermissionFeature },
[Theme.Dark]: {
OrganizationIcon: OrganizationFeatureDark,
PermissionIcon: PermissionFeatureDark,
},
};
function Step1() {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console.organizations.guide' });
const theme = useTheme();
const { OrganizationIcon, PermissionIcon } = icons[theme];
return (
<div className={classNames(styles.container)}>
<Card className={styles.card}>
<OrganizationIcon className={styles.icon} />
<div className={styles.title}>{t('brief_title')}</div>
<img className={styles.image} src={workflowImage} alt="Organization workflow" />
<div className={styles.subtitle}>{t('brief_introduction')}</div>
</Card>
<Card className={styles.card}>
<PermissionIcon className={styles.icon} />
<div className={styles.title}>{t('step_1')}</div>
</Card>
</div>
);
}
export default Step1;

View file

@ -0,0 +1,16 @@
@use '@/scss/underscore' as _;
.modalContainer {
height: 100vh;
width: 100vw;
display: flex;
flex-direction: column;
background: var(--color-base);
.content {
flex: 1;
overflow: hidden;
width: 100%;
padding: _.unit(6);
}
}

View file

@ -0,0 +1,57 @@
import { useCallback, useState } from 'react';
import Modal from 'react-modal';
import ActionBar from '@/components/ActionBar';
import Button from '@/ds-components/Button';
import DsModalHeader from '@/ds-components/ModalHeader';
import OverlayScrollbar from '@/ds-components/OverlayScrollbar';
import useTenantPathname from '@/hooks/use-tenant-pathname';
import * as modalStyles from '@/scss/modal.module.scss';
import Step1 from './Step1';
import * as styles from './index.module.scss';
const totalSteps = 3;
function Guide() {
const { navigate } = useTenantPathname();
const [currentStep, setCurrentStep] = useState(1);
const onClose = useCallback(() => {
navigate('/organizations');
}, [navigate]);
const onClickNext = useCallback(() => {
setCurrentStep(Math.min(currentStep + 1, totalSteps));
}, [currentStep]);
const onClickBack = useCallback(() => {
setCurrentStep(Math.max(1, currentStep - 1));
}, [currentStep]);
return (
<Modal shouldCloseOnEsc isOpen className={modalStyles.fullScreen} onRequestClose={onClose}>
<div className={styles.modalContainer}>
<DsModalHeader
title="organizations.guide.title"
subtitle="organizations.guide.subtitle"
onClose={onClose}
/>
<OverlayScrollbar className={styles.content}>
{currentStep === 1 && <Step1 />}
</OverlayScrollbar>
<ActionBar step={currentStep} totalSteps={totalSteps}>
{currentStep === totalSteps && (
<Button title="general.done" type="primary" onClick={onClose} />
)}
{currentStep < totalSteps && (
<Button title="general.next" type="primary" onClick={onClickNext} />
)}
{currentStep > 1 && <Button title="general.back" onClick={onClickBack} />}
</ActionBar>
</div>
</Modal>
);
}
export default Guide;

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -23,6 +23,31 @@ const organization = {
role: 'Role',
create_role_placeholder: 'Users with view-only permissions.',
search_permission_placeholder: 'Type to search for permissions',
guide: {
title: 'Start with guides',
subtitle: 'Jumpstart your app development process with our guides',
brief_title: "First, let's understand how organizations works in Logto",
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
step_1: 'Step 1: Define organization permissions',
step_2: 'Step 2: Define organization roles',
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
step_3: 'Step 3: Create your first organization',
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
more_next_steps: 'More next steps',
add_members: 'Add members to your organization',
add_members_action: 'Bulk add members and assign roles',
add_enterprise_connector: 'Add enterprise SSO',
add_enterprise_connector_action: 'Set up enterprise SSO',
organization_permissions: 'Organization permissions',
permission_name: 'Permission name',
permissions: 'Permissions',
organization_roles: 'Organization roles',
role_name: 'Role name',
organization_name: 'Organization name',
},
};
export default Object.freeze(organization);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);

View file

@ -43,6 +43,51 @@ const organizations = {
create_role_placeholder: 'Users with view-only permissions.',
/** UNTRANSLATED */
search_permission_placeholder: 'Type to search for permissions',
guide: {
/** UNTRANSLATED */
title: 'Start with guides',
/** UNTRANSLATED */
subtitle: 'Jumpstart your app development process with our guides',
/** UNTRANSLATED */
brief_title: "First, let's understand how organizations works in Logto",
/** UNTRANSLATED */
brief_introduction:
"In a multi-tenant app, it's important to set clear authorization rules to keep each tenant's data separate. Think of each tenant of your product as its own Logto organization, and they should naturally share the same access control template by default. <a>Learn more</a>",
/** UNTRANSLATED */
step_1: 'Step 1: Define organization permissions',
/** UNTRANSLATED */
step_2: 'Step 2: Define organization roles',
/** UNTRANSLATED */
step_2_description:
'"Organization roles" represent a set of roles given to each organization at the start. These roles are determined by the global permissions you have set in previous screen. Similar with org permission, once you finish this setting for the first time, you wont need to do this every-time you create a new organization.',
/** UNTRANSLATED */
step_3: 'Step 3: Create your first organization',
/** UNTRANSLATED */
step_3_description:
"Let's create your first organization. It comes with a unique ID and serves as a container for handling various more business-toward identities, such as partners, customers, and their access control.",
/** UNTRANSLATED */
more_next_steps: 'More next steps',
/** UNTRANSLATED */
add_members: 'Add members to your organization',
/** UNTRANSLATED */
add_members_action: 'Bulk add members and assign roles',
/** UNTRANSLATED */
add_enterprise_connector: 'Add enterprise SSO',
/** UNTRANSLATED */
add_enterprise_connector_action: 'Set up enterprise SSO',
/** UNTRANSLATED */
organization_permissions: 'Organization permissions',
/** UNTRANSLATED */
permission_name: 'Permission name',
/** UNTRANSLATED */
permissions: 'Permissions',
/** UNTRANSLATED */
organization_roles: 'Organization roles',
/** UNTRANSLATED */
role_name: 'Role name',
/** UNTRANSLATED */
organization_name: 'Organization name',
},
};
export default Object.freeze(organizations);