mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-10-29 14:56:26 +08:00
* Add cell image upload modal * Add controller for serving the images and handle this on markdown side * Use per-session images dir * Add etag header to session image responses * Adjust markdown image styling * Properly manage session images dir * Add tests * Set maximum file size for image uploads * Move images dir specifics to the Session module * Move images when nonpersistent session becomes persistent * Update lib/livebook_web/live/session_live.ex Co-authored-by: José Valim <jose.valim@dashbit.co> * Update lib/livebook_web/live/session_live.ex Co-authored-by: José Valim <jose.valim@dashbit.co> * Update lib/livebook_web/live/session_live/cell_upload_component.ex Co-authored-by: José Valim <jose.valim@dashbit.co> * Test that close gets rid of session temporary dir Co-authored-by: José Valim <jose.valim@dashbit.co>
126 lines
2.7 KiB
CSS
126 lines
2.7 KiB
CSS
/* Buttons */
|
|
|
|
.button {
|
|
@apply px-5 py-2 rounded-lg border border-transparent font-medium text-sm;
|
|
}
|
|
|
|
.button-blue {
|
|
@apply border-transparent bg-blue-600 text-white hover:bg-blue-700 focus:bg-blue-700;
|
|
}
|
|
|
|
.button-red {
|
|
@apply border-transparent bg-red-600 text-white hover:bg-red-700 focus:bg-red-700;
|
|
}
|
|
|
|
.button-gray {
|
|
@apply border-gray-200 bg-gray-100 text-gray-600 hover:bg-gray-200 focus:bg-gray-200;
|
|
}
|
|
|
|
.button-outlined-blue {
|
|
@apply bg-blue-50 border-blue-600 text-blue-600 hover:bg-blue-100 focus:bg-blue-100;
|
|
}
|
|
|
|
.button-outlined-red {
|
|
@apply bg-red-50 border-red-600 text-red-600 hover:bg-red-100 focus:bg-red-100;
|
|
}
|
|
|
|
.button-outlined-gray {
|
|
@apply bg-white border-gray-300 text-gray-600 hover:bg-gray-100 focus:bg-gray-100;
|
|
}
|
|
|
|
.button:disabled {
|
|
@apply cursor-default pointer-events-none border-transparent bg-gray-100 text-gray-400;
|
|
}
|
|
|
|
.button-small {
|
|
@apply px-2 py-1 bg-gray-50 border-gray-200 text-gray-600 hover:bg-gray-100 focus:bg-gray-100;
|
|
}
|
|
|
|
.button-square-icon {
|
|
@apply p-2 flex items-center justify-center;
|
|
}
|
|
|
|
.button-square-icon i {
|
|
@apply text-xl leading-none;
|
|
}
|
|
|
|
.choice-button {
|
|
@apply px-5 py-2 rounded-lg border text-gray-700 bg-white border-gray-200;
|
|
}
|
|
|
|
.choice-button.active {
|
|
@apply bg-blue-100 border-blue-600;
|
|
}
|
|
|
|
.icon-button {
|
|
@apply p-1 flex items-center justify-center text-gray-400 hover:text-gray-800;
|
|
}
|
|
|
|
.icon-button:focus {
|
|
@apply rounded-full bg-gray-100;
|
|
}
|
|
|
|
.icon-button i {
|
|
line-height: 1;
|
|
}
|
|
|
|
.icon-outlined-button {
|
|
@apply rounded-full border-2;
|
|
}
|
|
|
|
/* Form fields */
|
|
|
|
.input {
|
|
@apply w-full px-3 py-2 bg-gray-50 text-sm border border-gray-200 rounded-lg placeholder-gray-400 text-gray-600;
|
|
}
|
|
|
|
.switch-button {
|
|
@apply relative inline-block w-14 h-7 mr-2 select-none transition;
|
|
}
|
|
|
|
.switch-button__checkbox {
|
|
@apply appearance-none absolute block w-7 h-7 rounded-full bg-gray-400 border-[5px] border-gray-100 cursor-pointer transition-all duration-300;
|
|
}
|
|
|
|
.switch-button__bg {
|
|
@apply block h-full w-full rounded-full bg-gray-100 cursor-pointer transition-all duration-300;
|
|
}
|
|
|
|
.switch-button__checkbox:checked {
|
|
@apply bg-white border-blue-600;
|
|
transform: translateX(100%);
|
|
}
|
|
|
|
.switch-button__checkbox:checked + .switch-button__bg {
|
|
@apply bg-blue-600;
|
|
}
|
|
|
|
/* Custom scrollbars */
|
|
|
|
.tiny-scrollbar::-webkit-scrollbar {
|
|
width: 0.4rem;
|
|
height: 0.4rem;
|
|
}
|
|
|
|
.tiny-scrollbar::-webkit-scrollbar-thumb {
|
|
border-radius: 0.25rem;
|
|
@apply bg-gray-400;
|
|
}
|
|
|
|
.tiny-scrollbar::-webkit-scrollbar-track {
|
|
@apply bg-gray-100;
|
|
}
|
|
|
|
/* Tabs */
|
|
|
|
.tabs {
|
|
@apply w-full flex;
|
|
}
|
|
|
|
.tabs .tab {
|
|
@apply flex items-center space-x-2 px-3 py-2 border-b-2 text-gray-400 border-gray-100;
|
|
}
|
|
|
|
.tabs .tab.active {
|
|
@apply text-blue-600 border-blue-600;
|
|
}
|