feat: add ts export

Sergey Onufrienko created

Change summary

crates/gpui/src/color.rs      | 3 +++
crates/gpui/src/font_cache.rs | 3 +++
crates/gpui/src/fonts.rs      | 7 +++++++
3 files changed, 13 insertions(+)

Detailed changes

crates/gpui/src/color.rs 🔗

@@ -11,9 +11,12 @@ use serde::{
     Deserialize, Deserializer,
 };
 use serde_json::json;
+use ts_rs::TS;
 
 #[derive(Clone, Copy, Default, PartialEq, Eq, Hash, PartialOrd, Ord)]
 #[repr(transparent)]
+#[derive(TS)]
+#[ts(export, export_to = "theme/types/")]
 pub struct Color(ColorU);
 
 impl Color {

crates/gpui/src/font_cache.rs 🔗

@@ -12,8 +12,11 @@ use std::{
     ops::{Deref, DerefMut},
     sync::Arc,
 };
+use ts_rs::TS;
 
 #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
+#[derive(TS)]
+#[ts(export, export_to = "theme/types/")]
 pub struct FamilyId(usize);
 
 struct Family {

crates/gpui/src/fonts.rs 🔗

@@ -15,8 +15,11 @@ use schemars::JsonSchema;
 use serde::{de, Deserialize, Serialize};
 use serde_json::Value;
 use std::{cell::RefCell, sync::Arc};
+use ts_rs::TS;
 
 #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
+#[derive(TS)]
+#[ts(export, export_to = "theme/types/")]
 pub struct FontId(pub usize);
 
 pub type GlyphId = u32;
@@ -60,6 +63,8 @@ pub struct Features {
 }
 
 #[derive(Clone, Debug)]
+#[derive(TS)]
+#[ts(export, export_to = "theme/types/")]
 pub struct TextStyle {
     pub color: Color,
     pub font_family_name: Arc<str>,
@@ -82,6 +87,8 @@ pub struct HighlightStyle {
 impl Eq for HighlightStyle {}
 
 #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
+#[derive(TS)]
+#[ts(export, export_to = "theme/types/")]
 pub struct Underline {
     pub color: Option<Color>,
     pub thickness: OrderedFloat<f32>,