diff --git a/apps/dialtone-documentation/docs/components/rich-text-editor.md b/apps/dialtone-documentation/docs/components/rich-text-editor.md
index 6dff6f31b1..1e9c3afb64 100644
--- a/apps/dialtone-documentation/docs/components/rich-text-editor.md
+++ b/apps/dialtone-documentation/docs/components/rich-text-editor.md
@@ -6,23 +6,8 @@ storybook: https://dialtone.dialpad.com/vue/?path=/story/components-rich-text-ed
keywords: ["rte", "wysiwyg", "markdown", "d-rte", "DtRichTextEditor", "dt-rich-text-editor", "content editor", "rich editor"]
---
-
- Not a standalone component, please use Message Input instead
-
-
- Action
-
-
-
+> [!INFO]
+> Not a standalone component, please use Message Input recipe instead
diff --git a/packages/combinator/src/components/combinator.vue b/packages/combinator/src/components/combinator.vue
index 1c72dd0041..9b0ce10cb0 100644
--- a/packages/combinator/src/components/combinator.vue
+++ b/packages/combinator/src/components/combinator.vue
@@ -158,8 +158,9 @@ import DtcRenderer from './renderer/renderer.vue';
import { enumerateGroups } from '@/src/lib/utils';
import { shouldExclude } from '@/src/lib/exclusion_rules';
import { buildDependencyMap, shouldHideProp } from '@/src/lib/prop_dependencies';
-import { computed, nextTick, onErrorCaptured, reactive, ref } from 'vue';
+import { computed, nextTick, onErrorCaptured, reactive, ref, watch } from 'vue';
import { cachedRef, computedModel } from '@/src/lib/utils_vue';
+import { clearTokenCache } from '@/src/lib/tokens';
import { getComponentInfo } from '@/src/lib/info';
import {
SETTINGS_BACKGROUND_KEY,
@@ -232,7 +233,7 @@ const _forceReset = ref(0);
const variantOptions = computed(() => {
return Object.keys(props.variants ?? {})
- .filter(key => key !== 'exclusions')
+ .filter(key => key !== 'exclusions' && key !== 'defaults')
.map(key => ({ value: key, label: key }));
});
@@ -351,6 +352,8 @@ const settings = computedModel(
},
);
+watch(() => settings.value.root.theme, clearTokenCache);
+
function updateVariant (e) {
_presetChanging = true;
selectedVariant.value = e;
@@ -361,20 +364,29 @@ function updateVariant (e) {
nextTick(() => { _presetChanging = false; });
}
+/**
+ * Merges variant override data into an info object.
+ *
+ * @param {object} info - The info object to merge into.
+ * @param {object} variantData - The variant data to merge.
+ */
+function mergeVariantData (info, variantData) {
+ if (!variantData) return;
+ Object.entries(variantData).forEach(([memberGroup, members]) => {
+ if (memberGroup === 'exclusions') return;
+ Object.entries(members).forEach(([memberName, member]) => {
+ const infoMember = info[memberGroup]?.find(m => m.name === memberName);
+ if (infoMember) Object.assign(infoMember, member);
+ });
+ });
+}
+
const defaultInfo = computed(() => {
const info = cloneInfoMembers(
getComponentInfo(props.component, props.documentation),
);
- const defaultVariant = props.variants?.default;
- if (defaultVariant) {
- Object.entries(defaultVariant).forEach(([memberGroup, members]) => {
- if (memberGroup === 'exclusions') return;
- Object.entries(members).forEach(([memberName, member]) => {
- const infoMember = info[memberGroup]?.find(m => m.name === memberName);
- if (infoMember) Object.assign(infoMember, member);
- });
- });
- }
+ mergeVariantData(info, props.variants?.defaults);
+ mergeVariantData(info, props.variants?.default);
return info;
});
@@ -406,19 +418,8 @@ function initializeInfo () {
getComponentInfo(props.component, props.documentation),
);
- const variantInfo = props.variants?.[activeVariant.value];
-
- if (variantInfo) {
- Object.entries(variantInfo).forEach(([memberGroup, members]) => {
- if (memberGroup === 'exclusions') return;
- Object.entries(members).forEach(([memberName, member]) => {
- const infoMember = info[memberGroup]?.find(m => m.name === memberName);
- if (infoMember) {
- Object.assign(infoMember, member);
- }
- });
- });
- }
+ mergeVariantData(info, props.variants?.defaults);
+ mergeVariantData(info, props.variants?.[activeVariant.value]);
info.exclusions = props.variants?.exclusions ?? [];
@@ -580,15 +581,17 @@ export default {
padding-inline-start: var(--dt-spacing-400);
display: grid;
flex: 1;
- align-items: center;
- justify-content: center;
- position: relative;
+ place-items: center;
@media screen and (min-width: 640px) {
min-block-size: var(--dt-size-925);
}
}
+ &__component-content {
+ display: contents;
+ }
+
&__resizer {
inline-size: 32px;
cursor: col-resize;
@@ -611,7 +614,7 @@ export default {
}
&__controls {
- inline-size: var(--dt-size-875);
+ inline-size: var(--dt-size-900);
max-inline-size: var(--dt-size-1000);
flex-shrink: 0;
max-block-size: var(--dt-size-950);
@@ -619,6 +622,7 @@ export default {
:where(.dialtone-playground--fullscreen) & {
@media screen and (min-width: 640px) {
+ inline-size: var(--dt-size-950);
max-block-size: 100%;
}
}
diff --git a/packages/combinator/src/components/controls/control_segmented.vue b/packages/combinator/src/components/controls/control_segmented.vue
index 00120a9f26..ec5195a555 100644
--- a/packages/combinator/src/components/controls/control_segmented.vue
+++ b/packages/combinator/src/components/controls/control_segmented.vue
@@ -16,6 +16,7 @@
{{ option.label }}
@@ -27,6 +28,7 @@
import { DtSegmentedControl, DtSegmentedControlItem, DtText } from '@dialpad/dialtone-vue';
import { VALUE_UPDATE_EVENT } from '@/src/lib/constants';
+import { resolveTokenValue } from '@/src/lib/tokens';
import { computed } from 'vue';
const props = defineProps({
@@ -46,6 +48,14 @@ const props = defineProps({
type: Function,
default: (value) => value.toString(),
},
+ tokenCategory: {
+ type: String,
+ default: undefined,
+ },
+ propValues: {
+ type: Object,
+ default: undefined,
+ },
});
const emit = defineEmits([VALUE_UPDATE_EVENT]);
@@ -54,6 +64,9 @@ const options = computed(() => {
return props.validValues?.map(v => ({
value: v,
label: props.generateLabel(v),
+ resolved: props.tokenCategory
+ ? resolveTokenValue(props.tokenCategory, v, props.propValues)
+ : null,
})) ?? [];
});
diff --git a/packages/combinator/src/components/controls/control_selection.vue b/packages/combinator/src/components/controls/control_selection.vue
index c87393506a..dc97a600f9 100644
--- a/packages/combinator/src/components/controls/control_selection.vue
+++ b/packages/combinator/src/components/controls/control_selection.vue
@@ -10,7 +10,8 @@
- {{ selectedLabel }}
+
+
+
+ {{ selectedLabel }}
+
+
+ {{ selectedOption.resolved }}
+
- {{ option.label }}
+
+
+ {{ option.label }}
+
+ {{ option.resolved }}
+
+
@@ -52,10 +96,11 @@