@umbra.ui/core 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/controls/InlineDropdown/InlineDropdown.vue +290 -0
- package/dist/components/controls/InlineDropdown/README.md +35 -0
- package/dist/components/controls/InlineDropdown/theme.css +40 -0
- package/dist/components/dialogs/Alert/Alert.vue +122 -11
- package/dist/components/dialogs/Alert/theme.css +20 -0
- package/dist/components/dialogs/Toast/useToast.d.ts +1 -1
- package/dist/components/inputs/AutogrowRichTextView/AutogrowRichTextView.vue +128 -0
- package/dist/components/inputs/AutogrowRichTextView/README.md +86 -0
- package/dist/components/inputs/AutogrowRichTextView/editor.css +211 -0
- package/dist/components/inputs/AutogrowRichTextView/theme.css +28 -0
- package/dist/components/inputs/InputCryptoAddress/InputCryptoAddress.vue +512 -0
- package/dist/components/inputs/InputCryptoAddress/README.md +45 -0
- package/dist/components/inputs/InputCryptoAddress/theme.css +80 -0
- package/dist/components/inputs/Tags/TagBar.vue +7 -4
- package/dist/components/inputs/Tags/theme.css +4 -0
- package/dist/components/inputs/search/README.md +64 -736
- package/dist/components/inputs/search/SearchOverlay.vue +376 -0
- package/dist/components/inputs/search/SearchResultCell.vue +205 -0
- package/dist/components/inputs/search/theme.css +66 -21
- package/dist/components/inputs/search/types.d.ts +27 -5
- package/dist/components/inputs/search/types.d.ts.map +1 -1
- package/dist/components/inputs/search/types.ts +33 -5
- package/dist/components/menus/ActionMenu/ActionMenu.vue +29 -7
- package/dist/components/menus/ActionMenu/theme.css +1 -1
- package/dist/components/menus/ActionMenu/types.d.ts +9 -0
- package/dist/components/menus/ActionMenu/types.d.ts.map +1 -0
- package/dist/components/menus/ActionMenu/types.js +1 -0
- package/dist/components/menus/ActionMenu/types.ts +9 -0
- package/dist/components/models/Popover/Popover.vue +6 -84
- package/dist/css/umbra-ui.css +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/package.json +21 -16
- package/src/components/controls/InlineDropdown/InlineDropdown.vue +290 -0
- package/src/components/controls/InlineDropdown/README.md +35 -0
- package/src/components/controls/InlineDropdown/theme.css +40 -0
- package/src/components/dialogs/Alert/Alert.vue +122 -11
- package/src/components/dialogs/Alert/theme.css +20 -0
- package/src/components/inputs/AutogrowRichTextView/AutogrowRichTextView.vue +128 -0
- package/src/components/inputs/AutogrowRichTextView/README.md +86 -0
- package/src/components/inputs/AutogrowRichTextView/editor.css +211 -0
- package/src/components/inputs/AutogrowRichTextView/theme.css +28 -0
- package/src/components/inputs/InputCryptoAddress/InputCryptoAddress.vue +512 -0
- package/src/components/inputs/InputCryptoAddress/README.md +45 -0
- package/src/components/inputs/InputCryptoAddress/theme.css +80 -0
- package/src/components/inputs/Tags/TagBar.vue +7 -4
- package/src/components/inputs/Tags/theme.css +4 -0
- package/src/components/inputs/search/README.md +64 -736
- package/src/components/inputs/search/SearchOverlay.vue +376 -0
- package/src/components/inputs/search/SearchResultCell.vue +205 -0
- package/src/components/inputs/search/theme.css +66 -21
- package/src/components/inputs/search/types.ts +33 -5
- package/src/components/menus/ActionMenu/ActionMenu.vue +29 -7
- package/src/components/menus/ActionMenu/theme.css +1 -1
- package/src/components/menus/ActionMenu/types.ts +9 -0
- package/src/components/models/Popover/Popover.vue +6 -84
- package/src/index.ts +13 -3
- package/src/vue.d.ts +7 -26
- package/src/components/inputs/search/SearchBar.vue +0 -394
- package/src/components/inputs/search/SearchResults.vue +0 -310
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, onBeforeUnmount, ref, watch } from "vue";
|
|
3
|
+
import { EditorContent, useEditor } from "@tiptap/vue-3";
|
|
4
|
+
import StarterKit from "@tiptap/starter-kit";
|
|
5
|
+
import { Markdown } from "@tiptap/markdown";
|
|
6
|
+
import Highlight from "@tiptap/extension-highlight";
|
|
7
|
+
import Placeholder from "@tiptap/extension-placeholder";
|
|
8
|
+
import Underline from "@tiptap/extension-underline";
|
|
9
|
+
import "./theme.css";
|
|
10
|
+
import "./editor.css";
|
|
11
|
+
|
|
12
|
+
export interface Props {
|
|
13
|
+
text?: string;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const emit = defineEmits(["update:text", "onBlur"]);
|
|
18
|
+
|
|
19
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
20
|
+
text: "",
|
|
21
|
+
placeholder: "Start writing...",
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const isUpdatingFromProps = ref(false);
|
|
25
|
+
|
|
26
|
+
type MarkdownEditor = {
|
|
27
|
+
getJSON: () => unknown;
|
|
28
|
+
storage?: {
|
|
29
|
+
markdown?: {
|
|
30
|
+
getMarkdown?: () => string;
|
|
31
|
+
serialize?: (doc: unknown) => string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const getMarkdownFromEditor = (activeEditor: MarkdownEditor) => {
|
|
37
|
+
const storage = activeEditor.storage?.markdown;
|
|
38
|
+
if (storage?.getMarkdown) {
|
|
39
|
+
return storage.getMarkdown();
|
|
40
|
+
}
|
|
41
|
+
if (storage?.serialize) {
|
|
42
|
+
return storage.serialize(activeEditor.getJSON());
|
|
43
|
+
}
|
|
44
|
+
return "";
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const editor = useEditor({
|
|
48
|
+
content: props.text,
|
|
49
|
+
contentType: "markdown",
|
|
50
|
+
extensions: [
|
|
51
|
+
StarterKit,
|
|
52
|
+
Markdown,
|
|
53
|
+
Highlight,
|
|
54
|
+
Underline,
|
|
55
|
+
Placeholder.configure({
|
|
56
|
+
placeholder: props.placeholder,
|
|
57
|
+
}),
|
|
58
|
+
],
|
|
59
|
+
editorProps: {
|
|
60
|
+
attributes: {
|
|
61
|
+
class: "tiptap",
|
|
62
|
+
spellcheck: "true",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
onUpdate: ({ editor: activeEditor }: { editor: MarkdownEditor }) => {
|
|
66
|
+
if (isUpdatingFromProps.value) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const markdown = getMarkdownFromEditor(activeEditor);
|
|
70
|
+
emit("update:text", markdown);
|
|
71
|
+
},
|
|
72
|
+
onBlur: ({ editor: activeEditor }: { editor: MarkdownEditor }) => {
|
|
73
|
+
const markdown = getMarkdownFromEditor(activeEditor);
|
|
74
|
+
emit("onBlur", markdown);
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const editorMarkdown = computed(() =>
|
|
79
|
+
editor.value ? getMarkdownFromEditor(editor.value) : ""
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
watch(
|
|
83
|
+
() => props.text,
|
|
84
|
+
(newValue) => {
|
|
85
|
+
if (!editor.value || newValue === editorMarkdown.value) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
isUpdatingFromProps.value = true;
|
|
89
|
+
editor.value.commands.setContent(newValue, false, {
|
|
90
|
+
contentType: "markdown",
|
|
91
|
+
});
|
|
92
|
+
isUpdatingFromProps.value = false;
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
onBeforeUnmount(() => {
|
|
97
|
+
editor.value?.destroy();
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const focusEditor = () => {
|
|
101
|
+
editor.value?.commands.focus();
|
|
102
|
+
};
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
<template>
|
|
106
|
+
<div :class="$style.container" @click="focusEditor">
|
|
107
|
+
<EditorContent :editor="editor" :class="$style.editor" />
|
|
108
|
+
</div>
|
|
109
|
+
</template>
|
|
110
|
+
|
|
111
|
+
<style module>
|
|
112
|
+
.container {
|
|
113
|
+
padding: var(--autogrow-padding, 1.176rem);
|
|
114
|
+
border-radius: var(--autogrow-border-radius, 0.706rem);
|
|
115
|
+
background-color: var(--autogrow-bg);
|
|
116
|
+
border: 1px solid var(--autogrow-border);
|
|
117
|
+
transition: border-color 0.2s ease-in-out;
|
|
118
|
+
cursor: text;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.container:has(.ProseMirror-focused) {
|
|
122
|
+
border-color: var(--autogrow-focus-border);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.editor {
|
|
126
|
+
width: 100%;
|
|
127
|
+
}
|
|
128
|
+
</style>
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# AutogrowRichTextView
|
|
2
|
+
|
|
3
|
+
A rich text input component that supports Markdown, built with Vue 3 and Tiptap. The editor grows naturally with content and serializes to Markdown for storage or processing.
|
|
4
|
+
|
|
5
|
+
## Installation/Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { AutogrowRichTextView } from "@umbra-ui/core";
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
**Dependencies:**
|
|
12
|
+
|
|
13
|
+
- Vue 3.x
|
|
14
|
+
- @tiptap/vue-3
|
|
15
|
+
- @tiptap/starter-kit
|
|
16
|
+
- @tiptap/markdown
|
|
17
|
+
- @tiptap/extension-highlight
|
|
18
|
+
- @tiptap/extension-placeholder
|
|
19
|
+
|
|
20
|
+
## Basic Usage
|
|
21
|
+
|
|
22
|
+
```vue
|
|
23
|
+
<script setup lang="ts">
|
|
24
|
+
import { ref } from "vue";
|
|
25
|
+
import { AutogrowRichTextView } from "@umbra-ui/core";
|
|
26
|
+
|
|
27
|
+
const text = ref("# Hello\n\nThis is **markdown**.");
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<AutogrowRichTextView v-model:text="text" />
|
|
32
|
+
</template>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Props
|
|
36
|
+
|
|
37
|
+
| Prop Name | Type | Required | Default | Description |
|
|
38
|
+
| ------------- | -------- | -------- | -------------------- | ------------------------------------- |
|
|
39
|
+
| `text` | `string` | No | `""` | Markdown content for the editor |
|
|
40
|
+
| `placeholder` | `string` | No | `"Start writing..."` | Placeholder text displayed when empty |
|
|
41
|
+
|
|
42
|
+
## Events
|
|
43
|
+
|
|
44
|
+
| Event Name | Payload Type | Description |
|
|
45
|
+
| ------------- | ------------ | ----------------------------------------- |
|
|
46
|
+
| `update:text` | `string` | Emitted when the markdown content changes |
|
|
47
|
+
| `onBlur` | `string` | Emitted when the editor loses focus |
|
|
48
|
+
|
|
49
|
+
## Supported Markdown
|
|
50
|
+
|
|
51
|
+
- Headings
|
|
52
|
+
- Bold and italic
|
|
53
|
+
- Highlight, underline, and strikethrough
|
|
54
|
+
- Inline code and code blocks
|
|
55
|
+
- Ordered and unordered lists
|
|
56
|
+
- Blockquotes and horizontal rules
|
|
57
|
+
|
|
58
|
+
## CSS Customization
|
|
59
|
+
|
|
60
|
+
The component uses CSS custom properties for easy theming:
|
|
61
|
+
|
|
62
|
+
```css
|
|
63
|
+
/* Base colors */
|
|
64
|
+
--autogrow-bg: #ffffff;
|
|
65
|
+
--autogrow-border: #d9d9d9;
|
|
66
|
+
--autogrow-focus-border: #0090ff;
|
|
67
|
+
--autogrow-text-color: #202020;
|
|
68
|
+
--autogrow-placeholder-color: rgba(26, 29, 35, 0.5);
|
|
69
|
+
|
|
70
|
+
/* Layout */
|
|
71
|
+
--autogrow-padding: 1.176rem;
|
|
72
|
+
--autogrow-border-radius: 0.706rem;
|
|
73
|
+
|
|
74
|
+
/* Optional rich-text accents */
|
|
75
|
+
--autogrow-highlight-bg: rgba(255, 214, 10, 0.35);
|
|
76
|
+
--autogrow-code-bg: rgba(0, 0, 0, 0.08);
|
|
77
|
+
--autogrow-codeblock-bg: rgba(0, 0, 0, 0.08);
|
|
78
|
+
--autogrow-quote-border: rgba(0, 144, 255, 0.5);
|
|
79
|
+
--autogrow-divider: rgba(0, 0, 0, 0.12);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Notes
|
|
83
|
+
|
|
84
|
+
- Markdown is parsed on load and serialized on update using `@tiptap/markdown`.
|
|
85
|
+
- The editor grows as content increases; no fixed height is applied.
|
|
86
|
+
- The container is clickable to focus the editor.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--autogrow-rt-strong: #b4232a;
|
|
3
|
+
--autogrow-rt-underline: #6f42c1;
|
|
4
|
+
--autogrow-rt-link: #0077a5;
|
|
5
|
+
--autogrow-rt-strike: rgba(0, 0, 0, 0.5);
|
|
6
|
+
--autogrow-rt-mark-bg: #fff2a8;
|
|
7
|
+
--autogrow-rt-mark-text: #202020;
|
|
8
|
+
--autogrow-rt-code-bg: #f2f2f2;
|
|
9
|
+
--autogrow-rt-code-border: #d0d0d0;
|
|
10
|
+
--autogrow-rt-code-text: #202020;
|
|
11
|
+
--autogrow-rt-pre-bg: #f2f2f2;
|
|
12
|
+
--autogrow-rt-pre-border: #d0d0d0;
|
|
13
|
+
--autogrow-rt-pre-text: #202020;
|
|
14
|
+
--autogrow-rt-quote-border: #2f9e61;
|
|
15
|
+
--autogrow-rt-quote-text: #5a5a5a;
|
|
16
|
+
--autogrow-rt-hr: #d0d0d0;
|
|
17
|
+
--autogrow-rt-h1: #1f2d5c;
|
|
18
|
+
--autogrow-rt-h2: #243a78;
|
|
19
|
+
--autogrow-rt-h3: #2c4aa8;
|
|
20
|
+
--autogrow-rt-h4: #1f6fa8;
|
|
21
|
+
--autogrow-rt-h5: #1b76c5;
|
|
22
|
+
--autogrow-rt-h6: #1e88e5;
|
|
23
|
+
--autogrow-rt-paragraph: #202020;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.dark,
|
|
27
|
+
.dark-theme {
|
|
28
|
+
--autogrow-rt-strong: #e5484d;
|
|
29
|
+
--autogrow-rt-underline: #d19dff;
|
|
30
|
+
--autogrow-rt-link: #00a2c7;
|
|
31
|
+
--autogrow-rt-strike: rgba(255, 255, 255, 0.5);
|
|
32
|
+
--autogrow-rt-mark-bg: #fef6baf6;
|
|
33
|
+
--autogrow-rt-mark-text: #000000;
|
|
34
|
+
--autogrow-rt-code-bg: #606060;
|
|
35
|
+
--autogrow-rt-code-border: #7b7b7b;
|
|
36
|
+
--autogrow-rt-code-text: #ffffff;
|
|
37
|
+
--autogrow-rt-pre-bg: #606060;
|
|
38
|
+
--autogrow-rt-pre-border: #7b7b7b;
|
|
39
|
+
--autogrow-rt-pre-text: #ffffff;
|
|
40
|
+
--autogrow-rt-quote-border: #30a46c;
|
|
41
|
+
--autogrow-rt-quote-text: #b4b4b4;
|
|
42
|
+
--autogrow-rt-hr: #7b7b7b;
|
|
43
|
+
--autogrow-rt-h1: #d6e1ff;
|
|
44
|
+
--autogrow-rt-h2: #9eb1ff;
|
|
45
|
+
--autogrow-rt-h3: #5472e4;
|
|
46
|
+
--autogrow-rt-h4: #c2e6ff;
|
|
47
|
+
--autogrow-rt-h5: #70b8ff;
|
|
48
|
+
--autogrow-rt-h6: #3b9eff;
|
|
49
|
+
--autogrow-rt-paragraph: #ffffff;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.tiptap {
|
|
53
|
+
min-height: 5.882rem;
|
|
54
|
+
width: 100%;
|
|
55
|
+
color: var(--autogrow-text-color);
|
|
56
|
+
outline: none;
|
|
57
|
+
word-break: break-word;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.tiptap > * + * {
|
|
61
|
+
margin-top: 0.706rem;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.tiptap p {
|
|
65
|
+
line-height: 1.5;
|
|
66
|
+
margin: 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.tiptap p.is-editor-empty:first-child::before {
|
|
70
|
+
color: var(--autogrow-placeholder-color);
|
|
71
|
+
content: attr(data-placeholder);
|
|
72
|
+
float: left;
|
|
73
|
+
height: 0;
|
|
74
|
+
pointer-events: none;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.tiptap strong {
|
|
78
|
+
font-weight: 700;
|
|
79
|
+
color: var(--autogrow-rt-strong);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.tiptap em {
|
|
83
|
+
font-style: italic;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.tiptap u {
|
|
87
|
+
text-decoration: underline;
|
|
88
|
+
text-decoration-color: var(--autogrow-rt-underline);
|
|
89
|
+
text-underline-offset: 0.118rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.tiptap a {
|
|
93
|
+
color: var(--autogrow-rt-link);
|
|
94
|
+
opacity: 1;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.tiptap s {
|
|
98
|
+
text-decoration: line-through;
|
|
99
|
+
color: var(--autogrow-rt-strike);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.tiptap mark {
|
|
103
|
+
background-color: var(--autogrow-rt-mark-bg);
|
|
104
|
+
color: var(--autogrow-rt-mark-text);
|
|
105
|
+
padding: 0.118rem 0.235rem;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.tiptap code {
|
|
109
|
+
background-color: var(--autogrow-rt-code-bg);
|
|
110
|
+
border: 1px solid var(--autogrow-rt-code-border);
|
|
111
|
+
border-radius: 0.235rem;
|
|
112
|
+
font-family: "JetBrains Mono";
|
|
113
|
+
font-weight: normal;
|
|
114
|
+
font-size: 0.882rem;
|
|
115
|
+
color: var(--autogrow-rt-code-text);
|
|
116
|
+
padding: 0.118rem 0.235rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.tiptap pre {
|
|
120
|
+
background-color: var(--autogrow-rt-pre-bg);
|
|
121
|
+
border: 1px solid var(--autogrow-rt-pre-border);
|
|
122
|
+
border-radius: 0.706rem;
|
|
123
|
+
font-family: "JetBrains Mono";
|
|
124
|
+
font-weight: normal;
|
|
125
|
+
font-size: 1rem;
|
|
126
|
+
color: var(--autogrow-rt-pre-text);
|
|
127
|
+
padding: 0.882rem;
|
|
128
|
+
overflow-x: auto;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.tiptap pre code {
|
|
132
|
+
background: none;
|
|
133
|
+
color: inherit;
|
|
134
|
+
font-family: "JetBrains Mono";
|
|
135
|
+
font-weight: normal;
|
|
136
|
+
padding: 0;
|
|
137
|
+
font-size: inherit;
|
|
138
|
+
border: none;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.tiptap ul,
|
|
142
|
+
.tiptap ol {
|
|
143
|
+
padding-left: 1.176rem;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.tiptap ul {
|
|
147
|
+
list-style: disc;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.tiptap ol {
|
|
151
|
+
list-style: decimal;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.tiptap blockquote {
|
|
155
|
+
border-left: 0.176rem solid var(--autogrow-rt-quote-border);
|
|
156
|
+
margin: 0;
|
|
157
|
+
margin-top: 0.706rem;
|
|
158
|
+
padding-left: 0.706rem;
|
|
159
|
+
color: var(--autogrow-rt-quote-text);
|
|
160
|
+
opacity: 0.85;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.tiptap hr {
|
|
164
|
+
border: none;
|
|
165
|
+
border-top: 1px solid var(--autogrow-rt-hr);
|
|
166
|
+
margin: 1.176rem 0;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.tiptap h1,
|
|
170
|
+
.tiptap h2,
|
|
171
|
+
.tiptap h3,
|
|
172
|
+
.tiptap h4,
|
|
173
|
+
.tiptap h5,
|
|
174
|
+
.tiptap h6 {
|
|
175
|
+
font-weight: 600;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.tiptap h1 {
|
|
179
|
+
font-size: 1.765rem;
|
|
180
|
+
color: var(--autogrow-rt-h1);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.tiptap h2 {
|
|
184
|
+
font-size: 1.471rem;
|
|
185
|
+
color: var(--autogrow-rt-h2);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.tiptap h3 {
|
|
189
|
+
font-size: 1.235rem;
|
|
190
|
+
color: var(--autogrow-rt-h3);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.tiptap h4 {
|
|
194
|
+
font-size: 1.118rem;
|
|
195
|
+
color: var(--autogrow-rt-h4);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.tiptap h5 {
|
|
199
|
+
font-size: 1rem;
|
|
200
|
+
color: var(--autogrow-rt-h5);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.tiptap h6 {
|
|
204
|
+
font-size: 0.941rem;
|
|
205
|
+
color: var(--autogrow-rt-h6);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.tiptap p {
|
|
209
|
+
line-height: 1.7;
|
|
210
|
+
color: var(--autogrow-rt-paragraph);
|
|
211
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* Light theme */
|
|
2
|
+
:root {
|
|
3
|
+
/* AutogrowTextView colors - using primary/default values from original */
|
|
4
|
+
--autogrow-bg: #ffffff;
|
|
5
|
+
--autogrow-border: #d9d9d9;
|
|
6
|
+
--autogrow-focus-border: #0090ff;
|
|
7
|
+
--autogrow-text-color: #202020;
|
|
8
|
+
--autogrow-placeholder-color: rgba(26, 29, 35, 0.5);
|
|
9
|
+
|
|
10
|
+
/* Customizable properties */
|
|
11
|
+
--autogrow-padding: 1.176rem;
|
|
12
|
+
--autogrow-border-radius: 0.706rem;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Dark theme */
|
|
16
|
+
.dark,
|
|
17
|
+
.dark-theme {
|
|
18
|
+
/* AutogrowTextView colors - using primary/default values from original */
|
|
19
|
+
--autogrow-bg: #484848;
|
|
20
|
+
--autogrow-border: #606060;
|
|
21
|
+
--autogrow-focus-border: #0090ff;
|
|
22
|
+
--autogrow-text-color: #eeeeee;
|
|
23
|
+
--autogrow-placeholder-color: rgba(238, 238, 238, 0.5);
|
|
24
|
+
|
|
25
|
+
/* Customizable properties */
|
|
26
|
+
--autogrow-padding: 1.176rem;
|
|
27
|
+
--autogrow-border-radius: 0.706rem;
|
|
28
|
+
}
|