starlette
v1.0.7
Published
Dynamic CSS variables of all conceivable UI colors for any Adobe application
Downloads
93
Readme
starlette
Library to grab all conceivable UI colors from any Adobe application and expose them as dynamic CSS variables which update automatically to any user-defined theme or theme changes.
| App | Illustrator | After Effects | Photoshop | Premiere Pro | InDesign | Audition | | :------------- | ----------: | ------------: | --------: | -----------: | -------: | -------: | | Support | 100% | 100% | 98%* | 98%* | 98%* | 98%* | | Theme Type | 4-tier | Gradient | 4-tier | Gradient | 4-tier | Gradient |
* Base calculations done in Illustrator and After Effects. If you notice inaccuracies in other apps, let me know and I'll update them.
• Getting Started
• Stylesheets
The panel in the center is UI Spy. Notice the variables changing value on the left during app theme changes, and the panel's elements being automatically recolored in the center. There's no manual handling at all -- each element has a single CSS variable and never needs to care about user theme ever again.
After Effects is far more consistent than other apps with it's color scheme. Notice the hover state of buttons is the same as the color of it's default text -- the button text should invert:
Getting Started
Templates from generator-cep-vue-cli already include starlette
Install the package from NPM:
npm install starlette
Now import starlette
and call the init()
function anywhere in your panel:
<!-- In a .vue file -->
<script>
import starlette from 'starlette'
// Or via require:
const starlette = require('starlette').default;
export default {
name: 'yourComponent',
mounted() {
starlette.init();
// Now all CSS variables are exposed and reactive.
// Can also do import and init all at once:
require('starlette').default.init();
},
}
This gives you the freedom to write concise CSS with no need for any logic about the theme, simply assign the appropriate color:
.checkbox {
/* This takes care of every theme, matching the host app exactly */
fill: var(--color-checkbox);
}
/* Easily apply the hover state with a single line of CSS via the hover variable */
.checkbox:hover {
fill: var(--color-checkbox-hover);
}
.checkbox-disabled {
fill: var(--color-checkbox-disabled);
}
This is the literal CSS from the screen capture above, located in UI Spy's components/preview/checkbox.vue file.
Stylesheets
Illustrator
| Variable Name | Darkest | Dark | Light | Lightest |
| --------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
| --color-bg | #323232
| #535353
| #b8b8b8
| #f0f0f0
|
| --color-default | #cccccc
| #f4f4f4
| #232323
| #484848
|
| --color-text-label | #979797
| #c7c7c7
| #232323
| #6d6d6d
|
| --color-icon | #b7b7b7
| #c2c2c2
| #414141
| #535353
|
| --color-selection | #5b9bd3
| #46a0f5
| #3468b2
| #3d72b9
|
| --color-divider | #2a2a2a
| #4d4d4d
| #a8a8a8
| #dcdcdc
|
| --color-btn-hover | #3f3f3f
| #5f5f5f
| #c4c4c4
| #fcfcfc
|
| --color-btn-border | #545454
| #757575
| #232323
| #bdbdbd
|
| --color-btn-primary | #5b9bd3
| #5b9bd3
| #3468b2
| #3d72b9
|
| --color-btn-disabled | #3a3a3a
| #5a5a5a
| #b0b0b0
| #e6e6e6
|
| --color-btn-active | #1f1f1f
| #303030
| #4b4b4b
| #bdbdbd
|
| --color-btn-disabled-text | #545454
| #757575
| #8f8f8f
| #bdbdbd
|
| --color-btn-primary-text | #ffffff
| #ffffff
| #ffffff
| #ffffff
|
| --color-btn-pill-hover | #cccccc
| #ffffff
| #232323
| #484848
|
| --color-btn-pill-active | #7f7f7f
| #c8c8c8
| #4b4b4b
| #6d6d6d
|
| --color-btn-pill-border | #cccccc
| #ffffff
| #232323
| #484848
|
| --color-btn-icon-active | #2e2e2e
| #4f4f4f
| #b0b0b0
| #e6e6e6
|
| --color-btn-icon-active-border | #4b4b4b
| #6c6c6c
| #adadad
| #dddddd
|
| --color-btn-icon-hover | #3f3f3f
| #606060
| #c4c4c4
| #fcfcfc
|
| --color-btn-icon-hover-border | #4b4b4b
| #6c6c6c
| #adadad
| #dddddd
|
| --color-btn-toolbar-active | #1f1f1f
| #303030
| #969696
| #bdbdbd
|
| --color-btn-toolbar-active-border | #3f3f3f
| #575757
| #838383
| #a7a7a7
|
| --color-btn-toolbar-hover | #292929
| #3e3e3e
| #dcdcdc
| #fafafa
|
| --color-btn-toolbar-hover-border | #4b4b4b
| #5a5a5a
| #b4b4b4
| #bdbdbd
|
| --color-input | #262626
| #464646
| #e3e3e3
| #ffffff
|
| --color-input-border | #3a3a3a
| #606060
| #a8a8a8
| #dcdcdc
|
| --color-input-text | #cccccc
| #ffffff
| #232323
| #484848
|
| --color-input-focus | #ffffff
| #ffffff
| #e3e3e3
| #ffffff
|
| --color-input-focus-border | #5b9bd3
| #5b9bd3
| #3468b2
| #3d72b9
|
| --color-input-focus-text | #2a2a2a
| #4c4c4c
| #232323
| #484848
|
| --color-dropdown | #262626
| #4c4c4c
| #c4c4c4
| #fcfcfc
|
| --color-dropdown-active | #1e1e1e
| #303030
| #969696
| #bdbdbd
|
| --color-dropdown-hover | #3a3a3a
| #5a5a5a
| #cecece
| #ffffff
|
| --color-dropdown-border | #3a3a3a
| #606060
| #a8a8a8
| #dcdcdc
|
| --color-dropdown-item-hover | #3f3f3f
| #606060
| #a8a8a8
| #dcdcdc
|
| --color-dropdown-item-selected | #519dd6
| #5b9bd3
| #3868b2
| #3d72b9
|
| --color-checkbox | #979797
| #c8c8c8
| #4b4b4b
| #6d6d6d
|
| --color-checkbox-hover | #cccccc
| #ffffff
| #232323
| #484848
|
| --color-checkbox-disabled | #545454
| #757575
| #8f8f8f
| #bdbdbd
|
| --color-scrollbar | #2a2a2a
| #4c4c4c
| #c4c4c4
| #ffffff
|
| --color-scrollbar-arrow | #727272
| #969696
| #6f6f6f
| #969696
|
| --color-scrollbar-thumb | #3f3f3f
| #606060
| #a8a8a8
| #dcdcdc
|
| --color-scrollbar-thumb-hover | #545454
| #757575
| #8f8f8f
| #bdbdbd
|
| --color-tooltip-border | #767676
| #787878
| #777777
| #777777
|
| --color-header | #262626
| #434343
| #a2a2a2
| #dbdbdb
|
| --color-header-border | #212121
| #383838
| #949494
| #cccccc
|
After Effects (as gradient scale)
| Variable Name | Darkest | Medium | Lightest |
| --------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ |
| --color-bg | #232323
| #3c3c3c
| #565656
|
| --color-default | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-text-label | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-icon | #b2b2b2
| #cbcbcb
| #e5e5e5
|
| --color-selection | #4892cb
| #4892cb
| #4892cb
|
| --color-divider | #2d2d2d
| #464646
| #606060
|
| --color-btn-default | #232323
| #3c3c3c
| #565656
|
| --color-btn-hover | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-btn-border | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-btn-primary | #4885c6
| #4885c6
| #4885c6
|
| --color-btn-disabled | #2a2a2a
| #434343
| #5d5d5d
|
| --color-btn-active | #646464
| #7d7d7d
| #979797
|
| --color-btn-disabled-text | #464646
| #5f5f5f
| #797979
|
| --color-btn-primary-text | #ffffff
| #ffffff
| #ffffff
|
| --color-btn-pill-hover | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-btn-pill-border | #e2e2e2
| #fbfbfb
| #ffffff
|
| --color-btn-pill-active | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-btn-icon-active | #161616
| #2f2f2f
| #494949
|
| --color-btn-icon-active-border | #2e2e2e
| #474747
| #616161
|
| --color-btn-icon-hover | #2a2a2a
| #434343
| #5d5d5d
|
| --color-btn-icon-hover-border | #2e2e2e
| #474747
| #616161
|
| --color-btn-toolbar-active | #161616
| #2f2f2f
| #494949
|
| --color-btn-toolbar-active-border | #2e2e2e
| #474747
| #616161
|
| --color-btn-toolbar-hover | #2a2a2a
| #434343
| #5d5d5d
|
| --color-btn-toolbar-hover-border | #2e2e2e
| #474747
| #616161
|
| --color-input | #161616
| #2f2f2f
| #494949
|
| --color-input-border | #2e2e2e
| #474747
| #616161
|
| --color-input-text | #b2b2b2
| #cbcbcb
| #e5e5e5
|
| --color-input-focus | #e8e8e8
| #ffffff
| #ffffff
|
| --color-input-focus-border | #4892cb
| #4892cb
| #4892cb
|
| --color-input-focus-text | #161616
| #2f2f2f
| #494949
|
| --color-dropdown | #1d1d1d
| #363636
| #505050
|
| --color-dropdown-active | #232323
| #3c3c3c
| #565656
|
| --color-dropdown-hover | #2a2a2a
| #434343
| #5d5d5d
|
| --color-dropdown-border | #2e2e2e
| #474747
| #616161
|
| --color-dropdown-item | #1d1d1d
| #363636
| #505050
|
| --color-dropdown-item-hover | #464646
| #5f5f5f
| #797979
|
| --color-dropdown-item-selected | #4c86c6
| #4c86c6
| #4c86c6
|
| --color-checkbox | #8a8a8a
| #a3a3a3
| #bdbdbd
|
| --color-checkbox-hover | #bababa
| #d3d3d3
| #ededed
|
| --color-checkbox-disabled | #464646
| #5f5f5f
| #797979
|
| --color-scrollbar | #1d1d1d
| #363636
| #505050
|
| --color-scrollbar-thumb | #313131
| #4a4a4a
| #646464
|
| --color-scrollbar-arrow | #919191
| #aaaaaa
| #c4c4c4
|
| --color-scrollbar-thumb-hover | #464646
| #5f5f5f
| #797979
|
| --color-tooltip-border | #777777
| #909090
| #aaaaaa
|
| --color-header | #333333
| #4c4c4c
| #666666
|
| --color-header-border | #161616
| #2f2f2f
| #494949
|
Todo
init()
should assign low-specificity base rules likefont-family: 'Open Sans', sans-serif;
, assign the<body>
tag'sbackground-color
to--color-bg
, and automatically assign the scrollbar's style.- ~~Support all other apps (6 minimum to cover Typescript / Ovid Editor)~~
- ~~Extend API and documentation~~
Notes about Host inconsistencies
- Gradient buttons work much differently -- might be worth having a
button-text
variable - Photoshop's
dropdown
is anomalously white, causing the text to be unreadable -- maybe include adropdown-text
variable to combat this - There should be a
input-disabled
variable