@purestack/ts-components 1.1.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.
Files changed (106) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/dist/ts-components.d.mts +1662 -0
  4. package/dist/ts-components.d.mts.map +1 -0
  5. package/dist/ts-components.mjs +9200 -0
  6. package/dist/ts-components.mjs.map +1 -0
  7. package/package.json +130 -0
  8. package/src/defineComponents.ts +87 -0
  9. package/src/index.ts +270 -0
  10. package/src/registerStyles.ts +63 -0
  11. package/src/standard/alertBox/alertBox.ts +64 -0
  12. package/src/standard/autoId.ts +25 -0
  13. package/src/standard/badge/badge.ts +41 -0
  14. package/src/standard/badge/badgeStyle.ts +21 -0
  15. package/src/standard/barChart/barChart.ts +338 -0
  16. package/src/standard/barChart/barChartStyle.ts +81 -0
  17. package/src/standard/btn/btn.ts +191 -0
  18. package/src/standard/btn/btnStyle.ts +59 -0
  19. package/src/standard/btnGroup/btnGroup.ts +208 -0
  20. package/src/standard/btnGroup/btnGroupStyle.ts +85 -0
  21. package/src/standard/chart/cartesianChart.ts +99 -0
  22. package/src/standard/chart/chartDefaults.ts +25 -0
  23. package/src/standard/chart/chartUtils.ts +84 -0
  24. package/src/standard/classicLogo/classicLogo.ts +429 -0
  25. package/src/standard/classicLogo/classicLogoStyle.ts +292 -0
  26. package/src/standard/componentVariant.ts +153 -0
  27. package/src/standard/composer/composer.ts +1035 -0
  28. package/src/standard/composer/composerCanvasInitialStyle.ts +225 -0
  29. package/src/standard/composer/composerCanvasRevertStyle.ts +14 -0
  30. package/src/standard/composer/composerCanvasSharedStyle.ts +60 -0
  31. package/src/standard/composer/composerCanvasStyleTypes.ts +8 -0
  32. package/src/standard/composer/composerCanvasThemeStyle.ts +53 -0
  33. package/src/standard/composer/composerStyle.ts +156 -0
  34. package/src/standard/composer/emailHtmlPolicy.ts +474 -0
  35. package/src/standard/consent/consent.ts +173 -0
  36. package/src/standard/consent/consentStyle.ts +44 -0
  37. package/src/standard/contactForm/contactForm.ts +135 -0
  38. package/src/standard/contactForm/contactFormStyle.ts +116 -0
  39. package/src/standard/doughnutChart/doughnutChart.ts +527 -0
  40. package/src/standard/doughnutChart/doughnutChartStyle.ts +64 -0
  41. package/src/standard/dropFiles/dropFiles.ts +480 -0
  42. package/src/standard/dropFiles/dropFilesStyle.ts +171 -0
  43. package/src/standard/expandablePanel/expandablePanel.ts +106 -0
  44. package/src/standard/expandablePanel/expandablePanelStyle.ts +56 -0
  45. package/src/standard/flex/flex.ts +269 -0
  46. package/src/standard/flex/flexStyle.ts +556 -0
  47. package/src/standard/footer/footer.ts +93 -0
  48. package/src/standard/footer/footerStyle.ts +39 -0
  49. package/src/standard/form/autoCompleteInput.ts +567 -0
  50. package/src/standard/form/form.ts +205 -0
  51. package/src/standard/form/formCheck.ts +96 -0
  52. package/src/standard/form/formInputField.ts +184 -0
  53. package/src/standard/form/formSelectField.ts +152 -0
  54. package/src/standard/form/formStyle.ts +585 -0
  55. package/src/standard/form/multiAutoCompleteInput.ts +880 -0
  56. package/src/standard/grid/grid.ts +177 -0
  57. package/src/standard/grid/gridStyle.ts +56 -0
  58. package/src/standard/icon/icon.ts +96 -0
  59. package/src/standard/icon/iconStyle.ts +50 -0
  60. package/src/standard/landing/codeShowcase.ts +54 -0
  61. package/src/standard/landing/comparisonColumn.ts +30 -0
  62. package/src/standard/landing/comparisonFeature.ts +22 -0
  63. package/src/standard/landing/comparisonTable.ts +38 -0
  64. package/src/standard/landing/ctaSection.ts +59 -0
  65. package/src/standard/landing/featureCard.ts +41 -0
  66. package/src/standard/landing/landing.ts +52 -0
  67. package/src/standard/landing/landingBand.ts +217 -0
  68. package/src/standard/landing/landingSection.ts +43 -0
  69. package/src/standard/landing/landingTypes.ts +141 -0
  70. package/src/standard/landing/metricItem.ts +25 -0
  71. package/src/standard/landing/metricStrip.ts +20 -0
  72. package/src/standard/lineChart/lineChart.ts +462 -0
  73. package/src/standard/lineChart/lineChartStyle.ts +91 -0
  74. package/src/standard/logo/logo.ts +192 -0
  75. package/src/standard/logo/logoStyle.ts +164 -0
  76. package/src/standard/modal/modal.ts +171 -0
  77. package/src/standard/modal/modalStore.ts +154 -0
  78. package/src/standard/modal/modalStyle.ts +190 -0
  79. package/src/standard/navMenu/navMenu.ts +278 -0
  80. package/src/standard/navMenu/navMenuStyle.ts +323 -0
  81. package/src/standard/pageLinks/pageLinks.ts +90 -0
  82. package/src/standard/pageScript/pageScript.ts +155 -0
  83. package/src/standard/pageToc/pageToc.ts +154 -0
  84. package/src/standard/pageToc/pageTocStyle.ts +372 -0
  85. package/src/standard/panel/panel.ts +55 -0
  86. package/src/standard/panel/panelStyle.ts +15 -0
  87. package/src/standard/pricing/pricing.ts +146 -0
  88. package/src/standard/searchBox/searchBox.ts +54 -0
  89. package/src/standard/searchBox/searchBoxStyle.ts +180 -0
  90. package/src/standard/sectionHeader/sectionHeader.ts +99 -0
  91. package/src/standard/signIn/signIn.ts +167 -0
  92. package/src/standard/signIn/signInStyle.ts +70 -0
  93. package/src/standard/tabs/tabs.ts +193 -0
  94. package/src/standard/tabs/tabsStyle.ts +231 -0
  95. package/src/standard/themeToggle/themeToggle.ts +33 -0
  96. package/src/standard/themeToggle/themeToggleStyle.ts +88 -0
  97. package/src/standard/toast/toastHost.ts +42 -0
  98. package/src/standard/toast/toastStore.ts +50 -0
  99. package/src/standard/topBar/topBar.ts +101 -0
  100. package/src/standard/topBar/topBarStyle.ts +169 -0
  101. package/src/standard/virtualList/variableVirtualTable.ts +371 -0
  102. package/src/standard/virtualList/virtualList.ts +423 -0
  103. package/src/standard/virtualList/virtualListStyle.ts +34 -0
  104. package/src/standard/virtualList/virtualTable.ts +179 -0
  105. package/src/standard/virtualList/virtualTableStyle.ts +24 -0
  106. package/tsconfig.json +23 -0
@@ -0,0 +1,225 @@
1
+ import { styleBuilder } from '@purestack/ts-style'
2
+ import { registerComposerCanvasPreviewDefaults } from './composerCanvasSharedStyle'
3
+ import type { ComposerCanvasStyleContext } from './composerCanvasStyleTypes'
4
+
5
+ export function registerComposerInitialCanvasStyles(
6
+ context: ComposerCanvasStyleContext,
7
+ ) {
8
+ styleBuilder
9
+ .select('.composer__editor, .composer__editor *', context.theme)
10
+ .all('initial')
11
+ .boxSizing('border-box')
12
+
13
+ styleBuilder
14
+ .select('.composer__editor *', context.theme)
15
+ .font('inherit')
16
+ .color('inherit')
17
+ .lineHeight('inherit')
18
+ .caretColor('inherit')
19
+ .textAlign('inherit')
20
+
21
+ registerComposerCanvasPreviewDefaults(context)
22
+ registerComposerInitialCanvasElementDefaults(context)
23
+ }
24
+
25
+ function registerComposerInitialCanvasElementDefaults({
26
+ theme,
27
+ }: ComposerCanvasStyleContext) {
28
+ styleBuilder
29
+ .select(
30
+ [
31
+ '.composer__editor b',
32
+ '.composer__editor cite',
33
+ '.composer__editor code',
34
+ '.composer__editor del',
35
+ '.composer__editor em',
36
+ '.composer__editor font',
37
+ '.composer__editor i',
38
+ '.composer__editor ins',
39
+ '.composer__editor kbd',
40
+ '.composer__editor s',
41
+ '.composer__editor samp',
42
+ '.composer__editor small',
43
+ '.composer__editor span',
44
+ '.composer__editor strong',
45
+ '.composer__editor sub',
46
+ '.composer__editor sup',
47
+ '.composer__editor tt',
48
+ '.composer__editor u',
49
+ '.composer__editor var',
50
+ ].join(', '),
51
+ theme,
52
+ )
53
+ .display('inline')
54
+ .font('inherit')
55
+ .color('inherit')
56
+
57
+ styleBuilder
58
+ .select(
59
+ [
60
+ '.composer__editor address',
61
+ '.composer__editor blockquote',
62
+ '.composer__editor caption',
63
+ '.composer__editor center',
64
+ '.composer__editor dd',
65
+ '.composer__editor div',
66
+ '.composer__editor dl',
67
+ '.composer__editor dt',
68
+ '.composer__editor h1',
69
+ '.composer__editor h2',
70
+ '.composer__editor h3',
71
+ '.composer__editor h4',
72
+ '.composer__editor h5',
73
+ '.composer__editor h6',
74
+ '.composer__editor hr',
75
+ '.composer__editor ol',
76
+ '.composer__editor p',
77
+ '.composer__editor pre',
78
+ '.composer__editor ul',
79
+ ].join(', '),
80
+ theme,
81
+ )
82
+ .display('block')
83
+ .font('inherit')
84
+ .color('inherit')
85
+ .lineHeight('inherit')
86
+ .caretColor('inherit')
87
+
88
+ styleBuilder
89
+ .select('.composer__editor div:empty, .composer__editor p:empty', theme)
90
+ .minHeight('1.55em')
91
+
92
+ styleBuilder
93
+ .select('.composer__editor br', theme)
94
+ .display('inline')
95
+ .font('inherit')
96
+ .lineHeight('inherit')
97
+ .caretColor('inherit')
98
+
99
+ styleBuilder
100
+ .select('.composer__editor strong, .composer__editor b', theme)
101
+ .fontWeight('bold')
102
+
103
+ styleBuilder
104
+ .select(
105
+ '.composer__editor em, .composer__editor i, .composer__editor cite',
106
+ theme,
107
+ )
108
+ .fontStyle('italic')
109
+
110
+ styleBuilder.select('.composer__editor small', theme).fontSize('80%')
111
+
112
+ styleBuilder
113
+ .select('.composer__editor sub', theme)
114
+ .fontSize('75%')
115
+ .verticalAlign('sub')
116
+
117
+ styleBuilder
118
+ .select('.composer__editor sup', theme)
119
+ .fontSize('75%')
120
+ .verticalAlign('super')
121
+
122
+ styleBuilder
123
+ .select('.composer__editor h1', theme)
124
+ .fontSize('2em')
125
+ .fontWeight('bold')
126
+ .margin('0.67em 0')
127
+
128
+ styleBuilder
129
+ .select('.composer__editor h2', theme)
130
+ .fontSize('1.5em')
131
+ .fontWeight('bold')
132
+ .margin('0.83em 0')
133
+
134
+ styleBuilder
135
+ .select('.composer__editor h3', theme)
136
+ .fontSize('1.17em')
137
+ .fontWeight('bold')
138
+ .margin('1em 0')
139
+
140
+ styleBuilder
141
+ .select('.composer__editor h4', theme)
142
+ .fontWeight('bold')
143
+ .margin('1.33em 0')
144
+
145
+ styleBuilder
146
+ .select('.composer__editor h5', theme)
147
+ .fontSize('0.83em')
148
+ .fontWeight('bold')
149
+ .margin('1.67em 0')
150
+
151
+ styleBuilder
152
+ .select('.composer__editor h6', theme)
153
+ .fontSize('0.67em')
154
+ .fontWeight('bold')
155
+ .margin('2.33em 0')
156
+
157
+ styleBuilder
158
+ .select('.composer__editor blockquote', theme)
159
+ .margin('1em 2.5rem')
160
+
161
+ styleBuilder
162
+ .select(
163
+ '.composer__editor pre, .composer__editor code, .composer__editor kbd, .composer__editor samp, .composer__editor tt',
164
+ theme,
165
+ )
166
+ .fontFamily('monospace')
167
+
168
+ styleBuilder
169
+ .select('.composer__editor ol, .composer__editor ul', theme)
170
+ .margin('1em 0')
171
+ .paddingLeft('2.5rem')
172
+
173
+ styleBuilder
174
+ .select('.composer__editor li', theme)
175
+ .display('list-item')
176
+ .listStyle('inherit')
177
+
178
+ styleBuilder
179
+ .select('.composer__editor u, .composer__editor ins', theme)
180
+ .textDecoration('underline')
181
+
182
+ styleBuilder
183
+ .select('.composer__editor s, .composer__editor del', theme)
184
+ .textDecoration('line-through')
185
+
186
+ styleBuilder.select('.composer__editor ul', theme).listStyle('disc')
187
+
188
+ styleBuilder.select('.composer__editor ol', theme).listStyle('decimal')
189
+
190
+ styleBuilder.select('.composer__editor table', theme).display('table')
191
+
192
+ styleBuilder
193
+ .select('.composer__editor caption', theme)
194
+ .display('table-caption')
195
+
196
+ styleBuilder
197
+ .select('.composer__editor colgroup', theme)
198
+ .display('table-column-group')
199
+
200
+ styleBuilder.select('.composer__editor col', theme).display('table-column')
201
+
202
+ styleBuilder
203
+ .select('.composer__editor thead', theme)
204
+ .display('table-header-group')
205
+
206
+ styleBuilder
207
+ .select('.composer__editor tbody', theme)
208
+ .display('table-row-group')
209
+
210
+ styleBuilder
211
+ .select('.composer__editor tfoot', theme)
212
+ .display('table-footer-group')
213
+
214
+ styleBuilder.select('.composer__editor tr', theme).display('table-row')
215
+
216
+ styleBuilder
217
+ .select('.composer__editor td, .composer__editor th', theme)
218
+ .display('table-cell')
219
+ .verticalAlign('inherit')
220
+
221
+ styleBuilder
222
+ .select('.composer__editor th', theme)
223
+ .fontWeight('bold')
224
+ .textAlign('center')
225
+ }
@@ -0,0 +1,14 @@
1
+ import { styleBuilder } from '@purestack/ts-style'
2
+ import { registerComposerCanvasPreviewDefaults } from './composerCanvasSharedStyle'
3
+ import type { ComposerCanvasStyleContext } from './composerCanvasStyleTypes'
4
+
5
+ export function registerComposerRevertCanvasStyles(
6
+ context: ComposerCanvasStyleContext,
7
+ ) {
8
+ styleBuilder
9
+ .select('.composer__editor, .composer__editor *', context.theme)
10
+ .all('revert')
11
+ .boxSizing('border-box')
12
+
13
+ registerComposerCanvasPreviewDefaults(context)
14
+ }
@@ -0,0 +1,60 @@
1
+ import { styleBuilder } from '@purestack/ts-style'
2
+ import type { ComposerCanvasStyleContext } from './composerCanvasStyleTypes'
3
+
4
+ const EMAIL_FONT =
5
+ '0.9375rem/1.55 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif'
6
+
7
+ export function registerComposerCanvasPreviewDefaults({
8
+ theme,
9
+ }: ComposerCanvasStyleContext) {
10
+ styleBuilder
11
+ .select('.composer__editor', theme)
12
+ .display('block')
13
+ .width('100%')
14
+ .boxSizing('border-box')
15
+ .padding('0')
16
+ .border('none')
17
+ .borderRadius('0')
18
+ .outline('none')
19
+ .background('#fff')
20
+ .color('#182018')
21
+ .font(EMAIL_FONT)
22
+ .overflowY('auto')
23
+ .overflowWrap('anywhere')
24
+ .whiteSpace('normal')
25
+ .cursor('text')
26
+ .set('caret-color', '#182018')
27
+ .set('user-select', 'text')
28
+ .set('-webkit-user-select', 'text')
29
+
30
+ styleBuilder
31
+ .select('.composer__editor:empty::before', theme)
32
+ .content('attr(data-placeholder)')
33
+ .color('#777')
34
+ .pointerEvents('none')
35
+
36
+ styleBuilder
37
+ .select('.composer__editor [data-composer-body]:empty::before', theme)
38
+ .content('attr(data-placeholder)')
39
+ .color('#777')
40
+ .pointerEvents('none')
41
+
42
+ styleBuilder
43
+ .select('.composer__editor a', theme)
44
+ .color('#1368d8')
45
+ .textDecoration('underline')
46
+
47
+ styleBuilder
48
+ .select('.composer__editor img', theme)
49
+ .maxWidth('100%')
50
+ .height('auto')
51
+
52
+ styleBuilder
53
+ .select('.composer__editor table', theme)
54
+ .maxWidth('100%')
55
+ .borderCollapse('collapse')
56
+
57
+ styleBuilder.select('.composer__editor p:first-child', theme).marginTop('0')
58
+
59
+ styleBuilder.select('.composer__editor p:last-child', theme).marginBottom('0')
60
+ }
@@ -0,0 +1,8 @@
1
+ import type { ThemeMode, ThemePalette } from '@purestack/ts-style'
2
+
3
+ export type ComposerCanvasStyleOption = 'theme' | 'revert' | 'initial'
4
+
5
+ export interface ComposerCanvasStyleContext {
6
+ palette: ThemePalette
7
+ theme: ThemeMode
8
+ }
@@ -0,0 +1,53 @@
1
+ import { styleBuilder } from '@purestack/ts-style'
2
+ import type { ComposerCanvasStyleContext } from './composerCanvasStyleTypes'
3
+
4
+ export function registerComposerThemeCanvasStyles({
5
+ palette,
6
+ theme,
7
+ }: ComposerCanvasStyleContext) {
8
+ styleBuilder
9
+ .select('.composer__editor', theme)
10
+ .width('100%')
11
+ .boxSizing('border-box')
12
+ .padding('0.85em 0.95em')
13
+ .border('none')
14
+ .borderRadius('0')
15
+ .outline('none')
16
+ .background('transparent')
17
+ .color(palette.current.text.default)
18
+ .apply(palette.applyFont(palette.font.size.body))
19
+ .lineHeight('1.55')
20
+ .overflowY('auto')
21
+ .whiteSpace('normal')
22
+
23
+ styleBuilder
24
+ .select('.composer__editor:empty::before', theme)
25
+ .content('attr(data-placeholder)')
26
+ .color(palette.current.text.subtle)
27
+ .pointerEvents('none')
28
+
29
+ styleBuilder
30
+ .select('.composer__editor a', theme)
31
+ .color(palette.current.tone)
32
+ .textDecoration('underline')
33
+
34
+ styleBuilder
35
+ .select('.composer__editor img', theme)
36
+ .maxWidth('100%')
37
+ .height('auto')
38
+ .borderRadius('0.25rem')
39
+
40
+ styleBuilder
41
+ .select('.composer__editor table', theme)
42
+ .maxWidth('100%')
43
+ .borderCollapse('collapse')
44
+
45
+ styleBuilder.select('.composer__editor p', theme).margin('0 0 0.7em')
46
+
47
+ styleBuilder.select('.composer__editor p:last-child', theme).marginBottom('0')
48
+
49
+ styleBuilder
50
+ .select('.composer__editor ul, .composer__editor ol', theme)
51
+ .margin('0 0 0.7em')
52
+ .paddingLeft('1.4em')
53
+ }
@@ -0,0 +1,156 @@
1
+ import type { ThemePalette } from '@purestack/ts-style'
2
+ import { styleBuilder, type ThemeMode, themes } from '@purestack/ts-style'
3
+ import { registerComposerInitialCanvasStyles } from './composerCanvasInitialStyle'
4
+ import { registerComposerRevertCanvasStyles } from './composerCanvasRevertStyle'
5
+ import type { ComposerCanvasStyleOption } from './composerCanvasStyleTypes'
6
+ import { registerComposerThemeCanvasStyles } from './composerCanvasThemeStyle'
7
+
8
+ const COMPOSER_CANVAS_STYLE: ComposerCanvasStyleOption = 'initial'
9
+
10
+ export function registerComposerStyles() {
11
+ themes.forEach((theme, palette) => {
12
+ registerComposerFieldStyles(theme, palette)
13
+ registerComposerShellStyles(theme, palette)
14
+ registerComposerToolbarStyles(theme, palette)
15
+ registerComposerSurfaceStyles(theme, palette)
16
+ })
17
+ }
18
+
19
+ function registerComposerFieldStyles(theme: ThemeMode, palette: ThemePalette) {
20
+ styleBuilder
21
+ .select('.composer-field', theme)
22
+ .display('grid')
23
+ .minWidth('0')
24
+ .gap('0.6em')
25
+ styleBuilder
26
+ .select('.composer-field__label', theme)
27
+ .apply(palette.applyFont(palette.font.size.xxs, palette.font.weight.w700))
28
+ .color(palette.current.tone)
29
+ .lineHeight('1')
30
+ }
31
+
32
+ function registerComposerShellStyles(theme: ThemeMode, palette: ThemePalette) {
33
+ styleBuilder
34
+ .select('.composer', theme)
35
+ .display('grid')
36
+ .width('100%')
37
+ .boxSizing('border-box')
38
+ .overflow('hidden')
39
+ .borderRadius(palette.radii.md)
40
+ .transition('border-color 160ms ease, box-shadow 160ms ease')
41
+
42
+ styleBuilder
43
+ .select('.composer:focus-within', theme)
44
+ .borderColor(palette.current.border.default)
45
+ .boxShadow(`0 0 0 3px ${palette.current.border.focus}`)
46
+ }
47
+
48
+ function registerComposerToolbarStyles(
49
+ theme: ThemeMode,
50
+ palette: ThemePalette,
51
+ ) {
52
+ styleBuilder
53
+ .select('.composer__toolbar', theme)
54
+ .display('flex')
55
+ .flexWrap('wrap')
56
+ .alignItems('center')
57
+ .gap('0.25rem')
58
+ .padding('0.35em')
59
+ .borderBottom(`1px solid ${palette.current.border.default}`)
60
+ .background(palette.current.surfaceAlt.rest.background)
61
+
62
+ styleBuilder
63
+ .select('.composer__tool', theme)
64
+ .display('inline-flex')
65
+ .flexShrink('0')
66
+ .alignItems('center')
67
+ .justifyContent('center')
68
+ .width('2.1em')
69
+ .height('2.1em')
70
+ .padding('0')
71
+ .border('none')
72
+ .borderRadius('0.375rem')
73
+ .background('transparent')
74
+ .color(palette.current.text.default)
75
+ .cursor('pointer')
76
+ .transition('background 150ms ease, color 150ms ease')
77
+
78
+ styleBuilder
79
+ .select('.composer__tool:hover:not(:disabled)', theme)
80
+ .background(palette.current.button.hover.background)
81
+ .color(palette.current.button.hover.text)
82
+
83
+ styleBuilder
84
+ .select('.composer__tool[aria-pressed="true"]', theme)
85
+ .background(palette.current.button.active.background)
86
+ .color(palette.current.button.active.text)
87
+
88
+ styleBuilder
89
+ .select('.composer__tool:disabled', theme)
90
+ .cursor('not-allowed')
91
+ .opacity('0.55')
92
+
93
+ styleBuilder
94
+ .select('.composer__tool .icon', theme)
95
+ .width('1.1em')
96
+ .height('1.1em')
97
+
98
+ styleBuilder
99
+ .select('.composer__divider', theme)
100
+ .width('1px')
101
+ .height('1.4em')
102
+ .margin('0 0.2em')
103
+ .background(palette.current.border.default)
104
+
105
+ styleBuilder.select('.composer__tool--source', theme).marginLeft('auto')
106
+ }
107
+
108
+ function registerComposerSurfaceStyles(
109
+ theme: ThemeMode,
110
+ palette: ThemePalette,
111
+ ) {
112
+ styleBuilder
113
+ .select('.composer__surface', theme)
114
+ .position('relative')
115
+ .overflowX('auto')
116
+
117
+ registerComposerCanvasStyles(theme, palette)
118
+
119
+ styleBuilder
120
+ .select('.composer__source', theme)
121
+ .width('100%')
122
+ .boxSizing('border-box')
123
+ .padding('0.85em 0.95em')
124
+ .border('none')
125
+ .borderRadius('0')
126
+ .outline('none')
127
+ .background('transparent')
128
+ .color(palette.current.text.default)
129
+ .apply(palette.applyFont(palette.font.size.body))
130
+ .lineHeight('1.55')
131
+
132
+ styleBuilder
133
+ .select('.composer__source', theme)
134
+ .display('block')
135
+ .resize('vertical')
136
+ .fontFamily('ui-monospace, SFMono-Regular, Menlo, Consolas, monospace')
137
+ .background(palette.current.surface.rest.background)
138
+ .borderTop(`1px solid ${palette.current.border.default}`)
139
+ .borderBottomLeftRadius(palette.radii.md)
140
+ .borderBottomRightRadius(palette.radii.md)
141
+ }
142
+
143
+ function registerComposerCanvasStyles(theme: ThemeMode, palette: ThemePalette) {
144
+ const context = { palette, theme }
145
+ if (COMPOSER_CANVAS_STYLE === 'theme') {
146
+ registerComposerThemeCanvasStyles(context)
147
+ return
148
+ }
149
+
150
+ if (COMPOSER_CANVAS_STYLE === 'initial') {
151
+ registerComposerInitialCanvasStyles(context)
152
+ return
153
+ }
154
+
155
+ registerComposerRevertCanvasStyles(context)
156
+ }