diff --git a/src/app/assets/main.css b/src/app/assets/main.css
index 700c0c50d2a455e96f37e462491da7a6554d1e29..b47853571053b9a5d0bfbe1237d5e80d18155216 100644
--- a/src/app/assets/main.css
+++ b/src/app/assets/main.css
@@ -35,6 +35,15 @@
--orange-700: #c2410c;
--orange-800: #9a3412;
--orange-900: #7c2d12;
+ --amber-100: #fef3c7;
+ --amber-200: #fde68a;
+ --amber-300: #fcd34d;
+ --amber-400: #fbbf24;
+ --amber-500: #f59e0b;
+ --amber-600: #d97706;
+ --amber-700: #b45309;
+ --amber-800: #92400e;
+ --amber-900: #78350f;
--yellow-100: #fef9c3;
--yellow-200: #fef08a;
--yellow-300: #fde047;
@@ -283,3 +292,25 @@ input[type=file]::-webkit-file-upload-button {
transform: scale(1);
}
}
+.v-enter-active,
+.v-leave-active {
+ transition: all 0.5s ease;
+}
+.fading-enter-active,
+.fading-leave-active {
+ transition: opacity 0.3s ease-in-out;
+}
+.fading-enter-active {
+ animation: fading-in 0.5s;
+}
+.fading-leave-active {
+ animation: fading-in 0.5s reverse;
+}
+@keyframes fading-in {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
diff --git a/src/app/components.d.ts b/src/app/components.d.ts
index 7e47a2db77889b99a29dc74cfac6934f064ba619..1ab8f7298ab927ef2745fa7d644dc2a4f38cb6b1 100644
--- a/src/app/components.d.ts
+++ b/src/app/components.d.ts
@@ -46,9 +46,12 @@ declare module 'vue' {
PageHeader: typeof import('./../modules/PageHeader.vue')['default']
PageMenuButton: typeof import('./../components/PageMenuButton.vue')['default']
ParagraphIcon: typeof import('./../shared/icons/ParagraphIcon.vue')['default']
+ ParagraphItem: typeof import('./../modules/entities/ParagraphItem.vue')['default']
+ ParagraphSettings: typeof import('./../components/entities/settings/ParagraphSettings.vue')['default']
PlusIcon: typeof import('./../shared/icons/PlusIcon.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
+ SaveIcon: typeof import('./../shared/icons/SaveIcon.vue')['default']
SettingsIcon: typeof import('./../shared/icons/SettingsIcon.vue')['default']
SheetPage: typeof import('./../pages/[uuid]/SheetPage.vue')['default']
SidebarMenuContent: typeof import('./../modules/SidebarMenuContent.vue')['default']
diff --git a/src/app/helpers/index.ts b/src/app/helpers/index.ts
index 4c49b394013c6c74a1fc528845fdeede499b1bb7..ecfbbd7bd6a6d24153ece9e7aee436e9a9b00ff5 100644
--- a/src/app/helpers/index.ts
+++ b/src/app/helpers/index.ts
@@ -100,6 +100,8 @@ export const convertThemeToColorWhiteDefault = (theme: string | undefined) => {
return '#22c55e';
case 'yellow':
return '#eab308';
+ case 'amber':
+ return '#f59e0b';
case 'orange':
return '#f97316';
case 'pink':
@@ -120,6 +122,47 @@ export const convertThemeToColorWhiteDefault = (theme: string | undefined) => {
return '#ffffff';
};
+export const convert800ThemeToColorGrayDefault = (theme: string | undefined) => {
+ if (!theme) return '#9294a1';
+ switch (theme) {
+ case 'white':
+ return '#ffffff';
+ case 'slate':
+ return '#1e293b';
+ case 'blue':
+ return '#1e40af';
+ case 'sky':
+ return '#075985';
+ case 'teal':
+ return '#115e59';
+ case 'lime':
+ return '#3f6212';
+ case 'green':
+ return '#166534';
+ case 'yellow':
+ return '#854d0e';
+ case 'amber':
+ return '#92400e';
+ case 'orange':
+ return '#9a3412';
+ case 'pink':
+ return '#9d174d';
+ case 'fuchsia':
+ return '#86198f';
+ case 'purple':
+ return '#6b21a8';
+ case 'indigo':
+ return '#3730a3';
+ case 'rose':
+ return '#9f1239';
+ case 'red':
+ return '#991b1b';
+ case 'black':
+ return '#000000';
+ }
+ return '#9294a1';
+};
+
export const convertThemeToColorBlackDefault = (theme: string | undefined) => {
if (!theme) return '#000000';
switch (theme) {
@@ -139,6 +182,8 @@ export const convertThemeToColorBlackDefault = (theme: string | undefined) => {
return '#22c55e';
case 'yellow':
return '#eab308';
+ case 'amber':
+ return '#f59e0b';
case 'orange':
return '#f97316';
case 'pink':
diff --git a/src/app/interfaces/environment.ts b/src/app/interfaces/environment.ts
index f468b7fa11391eaaac9496658e7857ee2d21cc43..ca52344f5a818ea6d65ae5df621b8ae844afd34e 100644
--- a/src/app/interfaces/environment.ts
+++ b/src/app/interfaces/environment.ts
@@ -38,12 +38,10 @@ export interface IEntity {
}
export type TTheme =
- | 'white'
| 'slate'
| 'blue'
| 'sky'
| 'teal'
- | 'lime'
| 'green'
| 'yellow'
| 'orange'
@@ -52,5 +50,4 @@ export type TTheme =
| 'purple'
| 'indigo'
| 'rose'
- | 'red'
- | 'black';
+ | 'red';
diff --git a/src/components/entities/settings/ParagraphSettings.vue b/src/components/entities/settings/ParagraphSettings.vue
new file mode 100644
index 0000000000000000000000000000000000000000..0849e8d59b71121a606c7e3ebe79663adf038b77
--- /dev/null
+++ b/src/components/entities/settings/ParagraphSettings.vue
@@ -0,0 +1,207 @@
+
+
+
+
+ Edit paragraph
+
+
+ -
+
+
Title
+
+ Off
+
+ On
+
+
+
+
+ -
+
+
Paragraph width
+
+ Half
+
+ Full
+
+
+
+
+
+
+
+ {{ newEntityData.title ?? 'Title' }}
+
+
+
+
{{ newEntityData.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/entities/settings/TextSettings.vue b/src/components/entities/settings/TextSettings.vue
deleted file mode 100644
index 99845110f8719a1a0880b900ee82013c41938773..0000000000000000000000000000000000000000
--- a/src/components/entities/settings/TextSettings.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
- Edit paragraph
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/modules/entities/EntityItem.vue b/src/modules/entities/EntityItem.vue
index efbe165202721b88b6a3e5516856b304ae7cd9c1..bf826024af4df2e196220067423cab7e6f491e2f 100644
--- a/src/modules/entities/EntityItem.vue
+++ b/src/modules/entities/EntityItem.vue
@@ -18,7 +18,7 @@ const entity = useVModel(props, 'entity', emit);
:entityData="entity as IDivider"
:isEditMode="isEditMode"
/>
- {
const editText = () => {
editEntity({ ...entityData.value, text: entityData.value.text });
};
-
+const saveChanges = (newState: IParagraph) => {
+ editEntity(newState);
+ entityData.value = newState;
+};
const { textarea, triggerResize } = useTextareaAutosize({ styleProp: 'minHeight' });
@@ -72,7 +75,7 @@ const { textarea, triggerResize } = useTextareaAutosize({ styleProp: 'minHeight'
@input="triggerResize"
/>
-
+
{
};
const colors = [
- 'white',
'slate',
'blue',
'sky',
@@ -39,6 +38,7 @@ const colors = [
'lime',
'green',
'yellow',
+ 'amber',
'orange',
'pink',
'fuchsia',
@@ -132,9 +132,9 @@ const colors = [
+interface Props {
+ color?: string;
+ size?: string | number;
+}
+defineProps();
+
+
+
+
+
+
+
diff --git a/src/shared/ui/Button.vue b/src/shared/ui/Button.vue
index 03f1c154a579b44601f89a86b45ab30dfccdfb50..e5be3f0c151a07c8bf5e029749a7219e6a2e513d 100644
--- a/src/shared/ui/Button.vue
+++ b/src/shared/ui/Button.vue
@@ -12,7 +12,6 @@ interface Props {
| 'blue'
| 'sky'
| 'teal'
- | 'lime'
| 'green'
| 'yellow'
| 'orange'
@@ -30,7 +29,6 @@ interface Props {
| 'blue'
| 'sky'
| 'teal'
- | 'lime'
| 'green'
| 'yellow'
| 'orange'
@@ -47,7 +45,6 @@ interface Props {
| 'blue'
| 'sky'
| 'teal'
- | 'lime'
| 'green'
| 'yellow'
| 'orange'
@@ -103,26 +100,26 @@ const buttonPadding = computed(() => {
>
{{ label ?? 'Button' }}
-
-
{{ label ?? 'Button' }}
+
+
@@ -131,7 +128,7 @@ const buttonPadding = computed(() => {
position: relative;
border-radius: 5px;
display: flex;
- gap: 5px;
+ gap: 8px;
align-items: center;
user-select: none;
}
@@ -156,8 +153,8 @@ const buttonPadding = computed(() => {
.flex-column {
flex-direction: column;
}
-.order-2 {
- order: 2;
+.order-1 {
+ order: 1;
}
.bold {
font-weight: bold;
diff --git a/src/shared/ui/Drawer.vue b/src/shared/ui/Drawer.vue
index 0bdb3c6855a2d9275dd02e987a27d5beef747656..14effc424a2dba575f8f689532a62996fe58d379 100644
--- a/src/shared/ui/Drawer.vue
+++ b/src/shared/ui/Drawer.vue
@@ -11,7 +11,6 @@ interface Props {
| 'blue'
| 'sky'
| 'teal'
- | 'lime'
| 'green'
| 'yellow'
| 'orange'
diff --git a/src/shared/ui/Modal.vue b/src/shared/ui/Modal.vue
index 46d74a31fda6e0e258a86121ef00b789c6347459..71618bc64584f06893f926275fb0dcf66f25ddd0 100644
--- a/src/shared/ui/Modal.vue
+++ b/src/shared/ui/Modal.vue
@@ -11,7 +11,6 @@ interface Props {
| 'blue'
| 'sky'
| 'teal'
- | 'lime'
| 'green'
| 'yellow'
| 'orange'
@@ -22,6 +21,7 @@ interface Props {
| 'rose'
| 'red'
| 'black';
+ width?: number | string;
}
const props = defineProps();
const themeColor = computed(() => convertThemeToColorWhiteDefault(props.theme));
@@ -45,7 +45,7 @@ const isVisible = useVModel(props, 'isVisible', emit);
]"
>
convertThemeToColorBlackDefault(props.bac
class="marksList"
:style="`width: ${width ?? 200}px; margin-bottom: 5px; font-size: 10px`"
>
- |
+ |