1676685180
SakuraKit, is a lightweight and powerful library for application to switching themes or skins, inspired by SwiftTheme and DKNightVersion. Its provides chain and functional programming, that is more readable for your codes.
For Demo take a look at the SakuraDemo_OC, an iOS example project in the workspace. You will need to run pod install
after downloading.
sakura
mean theme
as following. Now, sakura for your Apps.
Installation
There are three ways to use SakuraKit in your project:
Using CocoaPods
Manual
Using Carthage
CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries in your projects.
Podfile
platform :ios, '8.0'
pod 'SakuraKit'
Download repo's zip, and just drag ALL files in the SakuraKit folder to your projects.
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthage
To integrate SakuraKit into your Xcode project using Carthage, specify it in your Cartfile:
github "tingxins/SakuraKit"
Run carthage to build the frameworks and drag the SakuraKit.framework framework into your Xcode project.
Usage
Here's an example, configure skins for UIButton
as an example following.
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
button.sakura
.backgroundColor(@"Home.buttonBackgroundColor")
.titleColor(@"Home.buttonTitleColor", UIControlStateNormal);
Obviously, as the code show. it's just configure backgroundColor
& titleColor
of skin for a button. If you want to switch theme or skin for your apps. Just call this API use TXSakuraManager
:
// name: name of a theme or skin.
// type: TXSakuraTypeMainBundle or TXSakuraTypeSandBox
+ (BOOL)shiftSakuraWithName:(TXSakuraName *)name type:(TXSakuraType)type;
For lines of code above. You may be puzzled by some literals, such as Home.buttonBackgroundColor
or Home.buttonTitleColor
. Do not worry about, we will focus on how to set up a profile for sakura step by step later.
Now, let's focus on profile. In brief, profile is a simple way to manage theme or skin for your application setting in a project. (Actually, sakura profile is just likes localizing your app.)
SakuraKit supports both .json & .plist format of file. For .json file example. you may should do configure like this:
{
"Home":{
"buttonBackgroundColor":"#BB503D",
"buttonTitleColor":"#4AF2A1"
}
}
as show above, we can know that literals of Home.buttonBackgroundColor
and Home.buttonTitleColor
is just a KeyPath
for dictionary. SakuraKit always fetch value from Profile switching theme or skin for your app, such as color/iconName/text/fontSize.e.g.
Precautions:
Bundle themes are exists in your app bundle. we also called Local Theme. we should always configure a default theme for app. of course, SakuraKit can add multi bundle themes for your app following these steps:
First, create [SakuraName
].json profile. be sure that the SakuraName
is your theme name. For example, if you want to add a new bundle theme which named typewriter
, then the corresponding profile should be named typewriter.json.
Next, configure icons for typewriter
theme. And name of icons need be distinguish with other local theme. For example. If an icon named cm2_btm_icn_account
in default theme, then the corresponding icon in typewriter
theme should be named like this cm2_btm_icn_account_xxx
.
After Step 1 & 2. you may should register all local sakura theme in AppDelegate. (default theme can be ignored.)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Coding ...
[TXSakuraManager registerLocalSakuraWithNames:@[@"typewriter"]];
// Coding ...
return YES;
}
At this point, we have configured all Bundle themes. we can switching to these themes any time now. For example. If you want switching to a specified bundle theme which named typewriter
. Just call API like this:
[TXSakuraManager shiftSakuraWithName:@"typewriter" type:TXSakuraTypeMainBundle];
Sandbox themes, using compressed package(.zip) with a folder, which contains Profile & Icons. And we also called Remote Theme. The user can downloads via the network from server. Server can uploading multi themes dynamic, and then user can downloads from app.
About remote theme data format suggestion, give an example:(FYI)
{
"name": "I'm a monkey",
"sakuraName": "monkey",
"url": "http:\\image.tingxins.cn\sakura\monkey.zip"
}
sakuraName
is your theme name. And url
is a remote url address of sakura theme. (Note: If the sakuraName field passed nil, the name of the corresponding theme will default to the name of downloaded package.)
When the remote theme has been downloaded, we can switching the theme like this:
[TXSakuraManager shiftSakuraWithName:sakuraName type:TXSakuraTypeSandBox];
About some exciting for you. SakuraKit also provides some API that you can used to download the remote theme. And supports both Block
& Delegate
callback. Very awesome, right? And of course, you can also customize your own download operation for remote theme.
Let's talk about it now.
If you want to download a sakura theme. You can call the download task block API like this. Show the code of Use-Case:
[[TXSakuraManager manager] tx_sakuraDownloadWithInfos:sakuraModel downloadProgressHandler:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
// Sakura theme download progress callback
} downloadErrorHandler:^(NSError * error) {
// Sakura theme download error callback
} unzipProgressHandler:^(unsigned long long loaded, unsigned long long total) {
// Unzip sakura theme compressed package progress callback
} completedHandler:^(id<TXSakuraDownloadProtocol> infos, NSURL * location) {
// completed callback
} ];
In this example, the object of sakuraModel
conform to TXSakuraDownloadProtocol
. You can check out SakuraDemo_OC for more details in DownloadSakuraController
.
If you want to download a sakura theme. You can call the download task delegate API like this :
[[TXSakuraManager manager] tx_sakuraDownloadWithInfos:sakuraModel delegate:self];
Implement delegate methods that you need to.
// If download task of sakura theme is already exist or already exist in sandbox, this API will callback.
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
status:(TXSakuraDownloadTaskStatus)status;
// completed callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
sakuraInfos:(id<TXSakuraDownloadProtocol>)infos
didFinishDownloadingToURL:(NSURL *)location;
// Sakura download progress callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didWriteData:(int64_t)bytesWritten
totalBytesWritten:(int64_t)totalBytesWritten
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite;
/** Reserved for future use */
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didResumeAtOffset:(int64_t)fileOffset
expectedTotalBytes:(int64_t)expectedTotalBytes;
// Sakura theme download error callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
sessionTask:(NSURLSessionTask *)downloadTask
didCompleteWithError:(nullable NSError *)error;
// Unzip sakura theme compressed package progress callback
- (void)sakuraManagerDownload:(TXSakuraManager *)manager
downloadTask:(NSURLSessionDownloadTask *)downloadTask
progressEvent:(unsigned long long)loaded
total:(unsigned long long)total;
You can check out SakuraDemo_OC for more details in AppDelegate
.
If you do not want use API to download the remote theme that SakuraKit provided, you can customize your own download operation for sakura theme.
Show the code that you want:
// `sakuraModel` conform to `TXSakuraDownloadProtocol`. location is theme compressed package path that downloaded。
[[TXSakuraManager manager] tx_generatePathWithInfos:sakuraModel downloadFileLocalURL:location successHandler:^(NSString *toFilePath, NSString *sakuraPath, TXSakuraName *sakuraName) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
BOOL isSuccess = [SSZipArchive unzipFileAtPath:toFilePath toDestination:sakuraPath delegate:self];
// Note: Be sure that call this API to format theme path if you are customize your own download operation. otherwise, when switching theme you may be failed.
[TXSakuraManager formatSakuraPath:sakuraPath cleanCachePath:toFilePath];
dispatch_sync(dispatch_get_main_queue(), ^{
if (isSuccess) {
[TXSakuraManager shiftSakuraWithName:sakuraName type:TXSakuraTypeSandBox];
}
});
});
} errorHandler:^(NSError * _Nullable error) {
NSLog(@"errorDescription:%@",error);
}];
FQA
Q: Why do each theme has its own profile?
A: Because each theme, beside the name of icons are the same, and different themes background color, font size may not be the same. So each theme should have its own profile, unless you just want to making theme only for icons.
Q: Why is the sakura name should be consistent with the profile name of corresponding theme?
A: This is only a convention for us. when switching theme, SakuraKit will through the theme name to find the theme in the local or in the sandbox path, making both theme and profile name the same, you will reduce some unnecessary workload.
Q: What is the difference between bundle and sandbox themes?
A: Actually. Bundle theme, we called the local theme. Remote theme also called sandbox theme.
Q: Do SakuraKit have a version that written in Swift?
A: No. Will Coming soon. If you are really need it now. Here's an example for Using Swift with SakuraKitOC. (SakuraKitOCForSwiftDemo)
Communication
Absolutely,you can contribute to this project all the time if you want to.
If you need help or ask general question, just @tingxins in Weibo or Twitter, of course, you can access to my blog.
If you found a bug, just open an issue.
If you have a feature request, just open an issue.
If you want to contribute, fork this repository, and then submit a pull request.
Author: Tingxins
Source Code: https://github.com/tingxins/SakuraKit
License: MIT license
1675993140
A theme is a generic styling element that represents the overall style, look, and feel of your application. When you wish to modify your Flutter app theme, say for eg. from Flutter Dark mode to Flutter Light mode or vice-versa, it is known as Flutter theming.
There are many articles available on Flutter theming, showing how to implement Flutter theme Dark Light in projects using the default App Theme and their default Colors attribute. But in the live project, we are required to add our custom Color for our app branding.
In this blog, we will be sharing how to create a flutter custom theme step by step
To successfully implement Flutter theming, you will have to take care of the following prerequisites:
Once you are ready to go ahead, execute the following steps consecutively for enabling custom Flutter theming.
For creating a theme for light and dark mode, we use ThemeData class and customize colors and other properties based on needs. We have created one method for getting ThemeDate based on selected light/dark themes.
We give different values for scaffoldBackgroundColor, bodyColor, thumbColor, listTileTheme, and appBarTheme based on the selected theme.
ThemeData getAppTheme(BuildContext context, bool isDarkTheme) {
return ThemeData(
scaffoldBackgroundColor: isDarkTheme ? Colors.black : Colors.white,
textTheme: Theme.of(context)
.textTheme
.copyWith(
titleSmall:
Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: 11),
)
.apply(
bodyColor: isDarkTheme ? Colors.white : Colors.black,
displayColor: Colors.grey,
),
switchTheme: SwitchThemeData(
thumbColor: MaterialStateProperty.all(
isDarkTheme ? Colors.orange : Colors.purple),
),
listTileTheme: ListTileThemeData(
iconColor: isDarkTheme ? Colors.orange : Colors.purple),
appBarTheme: AppBarTheme(
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
iconTheme:
IconThemeData(color: isDarkTheme ? Colors.white : Colors.black54)),
);
}
We will use river-pod to manage the app theme state. We only want to store bool value to manage light or dark themes so we will use StateProvider.
final appThemeProvider = StateProvider<bool>((ref) => false);
We use river-pod in the project so we have to wrap MyApp with ProviderScope to access all providers though-out app. MyApp extends ConsumerWidget so we can get the WidgetRef object in the build method and access any river-pod using the ref variable. getAppTheme(context, ref.watch(appThemeProvider)) method listens to any change in the app theme and updates the app accordingly.
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return MaterialApp(
title: 'Flutter Light/Dark Theme',
debugShowCheckedModeBanner: false,
theme: getAppTheme(context, ref.watch(appThemeProvider)),
home: const MyHomePage(),
);
}
}
ref.read(appThemeProvider.notifier).state = value. We are updating the theme state in appThemeProvider when the switch state is changed from light/dark mood.
Switch(
activeColor: Colors.orange,
onChanged: (value) {
ref.read(appThemeProvider.notifier).state = value;
},
value: isDarkMode )
It works fine as far as it will show the same color in all icons and texts. If we want to use different colors on icons, we have to create an extension for the Theme. Create a class and extend with ThemeExtension and add necessary fields that you want to customize.
class AppColors extends ThemeExtension<AppColors> {
final Color? color1;
final Color? color2;
final Color? color3;
const AppColors({
required this.color1,
required this.color2,
required this.color3,
});
@override
AppColors copyWith({
Color? color1,
Color? color2,
Color? color3,
}) {
return AppColors(
color1: color1 ?? this.color1,
color2: color2 ?? this.color2,
color3: color3 ?? this.color3,
);
}
@override
AppColors lerp(ThemeExtension<AppColors>? other, double t) {
if (other is! AppColors) {
return this;
}
return AppColors(
color1: Color.lerp(color1, other.color1, t),
color2: Color.lerp(color2, other.color2, t),
color3: Color.lerp(color3, other.color3, t),
);
}
}
Now add this extension attribute in ThemeData in our create method getAppTheme and define the theme according to colors.
extensions: <ThemeExtension<AppColors>>[
AppColors(
color1: isDarkTheme ? Colors.blue : Colors.blueGrey,
color2: isDarkTheme ? Colors.pink : Colors.pinkAccent,
color3: isDarkTheme ? Colors.yellow : Colors.limeAccent,
),
Create another extension function which we use to access custom color easily.
AppColors colors(context) => Theme.of(context).extension<AppColors>()!;
We can access these colors in the widget simply using colors(context).color1. If we do not specify the Icon color, it will fetch the color from listTileTheme.
ListTile(
leading: Icon(Icons.chat_outlined, color: colors(context).color3),
title: Text( "Help Center", style: Theme.of(context).textTheme.titleSmall),
),
ListTile(
leading: const Icon(Icons.notifications),
title: Text("Notification", style: Theme.of(context).textTheme.titleSmall),
),
Here is the code for theme class:
import 'package:flutter/material.dart';
AppColors colors(context) => Theme.of(context).extension<AppColors>()!;
ThemeData getAppTheme(BuildContext context, bool isDarkTheme) {
return ThemeData(
extensions: <ThemeExtension<AppColors>>[
AppColors(
color1: isDarkTheme ? Colors.blue : Colors.green,
color2: isDarkTheme ? Colors.pink : Colors.blue,
color3: isDarkTheme ? Colors.yellow : Colors.red,
),
],
scaffoldBackgroundColor: isDarkTheme ? Colors.black : Colors.white,
textTheme: Theme.of(context)
.textTheme
.copyWith(
titleSmall:
Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: 12),
)
.apply(
bodyColor: isDarkTheme ? Colors.white : Colors.black,
displayColor: Colors.grey,
),
switchTheme: SwitchThemeData(
thumbColor: MaterialStateProperty.all(
isDarkTheme ? Colors.orange : Colors.purple),
),
listTileTheme: ListTileThemeData(
iconColor: isDarkTheme ? Colors.orange : Colors.purple),
appBarTheme: AppBarTheme(
backgroundColor: isDarkTheme ? Colors.black : Colors.white,
iconTheme:
IconThemeData(color: isDarkTheme ? Colors.white : Colors.black54)),
);
}
@immutable
class AppColors extends ThemeExtension<AppColors> {
final Color? color1;
final Color? color2;
final Color? color3;
const AppColors({
required this.color1,
required this.color2,
required this.color3,
});
@override
AppColors copyWith({
Color? color1,
Color? color2,
Color? color3,
}) {
return AppColors(
color1: color1 ?? this.color1,
color2: color2 ?? this.color2,
color3: color3 ?? this.color3,
);
}
@override
AppColors lerp(ThemeExtension<AppColors>? other, double t) {
if (other is! AppColors) {
return this;
}
return AppColors(
color1: Color.lerp(color1, other.color1, t),
color2: Color.lerp(color2, other.color2, t),
color3: Color.lerp(color3, other.color3, t),
);
}
}
Here is code of our main screen:
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:light_dark_mode/provider%20/app_theme_provider.dart';
import 'package:light_dark_mode/utils/app_theme.dart';
void main() {
runApp(const ProviderScope(child: MyApp()));
}
class MyApp extends ConsumerWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return MaterialApp(
title: 'Flutter Light/Dark Theme',
debugShowCheckedModeBanner: false,
theme: getAppTheme(context, ref.watch(appThemeProvider)),
home: const MyHomePage(),
);
}
}
class MyHomePage extends ConsumerWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
var isDarkMode = ref.watch(appThemeProvider);
return Scaffold(
appBar: AppBar(
elevation: 0,
leading: const Icon(Icons.arrow_back_ios_sharp),
actions: const [
Padding(
padding: EdgeInsets.symmetric(horizontal: 15.0),
child: Icon(Icons.add_circle_outline),
)
],
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: ListView(
children: [
CircleAvatar(
radius: 60,
backgroundColor: Colors.grey,
child: Padding(
padding: const EdgeInsets.all(1), // Border radius
child: ClipRRect(
borderRadius: BorderRadius.circular(60),
child: Image.asset(
"assets/ic_profile.jpeg",
fit: BoxFit.fill,
width: 120,
height: 120,
)),
),
),
Container(
margin: const EdgeInsets.only(top: 10, bottom: 60),
alignment: Alignment.center,
child: Text(
"Testing User",
style: Theme.of(context).textTheme.titleLarge,
),
),
ListTile(
leading: Icon(isDarkMode ? Icons.brightness_3 : Icons.sunny),
title: Text(
isDarkMode ? "Dark mode" : "Light mode",
style: Theme.of(context).textTheme.titleSmall,
),
trailing: Consumer(builder: (context, ref, child) {
return Transform.scale(
scale: 0.7,
child: Switch(
activeColor: Colors.orange,
onChanged: (value) {
ref.read(appThemeProvider.notifier).state = value;
},
value: isDarkMode,
),
);
}),
),
ListTile(
leading: Icon(Icons.grid_on_sharp, color: colors(context).color1,),
title: Text(
"Story",
style: Theme.of(context).textTheme.titleSmall,
),
),
ListTile(
leading: Icon(Icons.settings, color: colors(context).color2),
title: Text("Settings and Privacy",
style: Theme.of(context).textTheme.titleSmall),
),
ListTile(
leading: Icon(Icons.chat_outlined, color: colors(context).color3),
title: Text(
"Help Center",
style: Theme.of(context).textTheme.titleSmall,
),
),
ListTile(
leading: const Icon(Icons.notifications),
title: Text(
"Notification",
style: Theme.of(context).textTheme.titleSmall,
),
),
],
),
),
);
}
}
You can find full code here: GitHub Repository.
I hope this blog will help to customize your Flutter app theme. In this blog we customized Colors in ThemeExtension; however, we can use any field to customize the value. Flutter theming is just one aspect, there are several other solutions that we provide and you can find those on Flutter tutorials.
Original article source at: https://www.bacancytechnology.com/
1675608930
#html #css #theme #webdesign #ui
🌍Please visit https://www.codertutorial.com for more such articles.
Please like, share and subscribe if you found this video helpful.
1673541300
Have you been trying to find the best WordPress theme to create a website that perfectly matches your brand and vision?
Creating such a website today is no longer the complicated process you once had to leave up to programmers to do. Now, with the WordPress platform, it is possible to create and design your site. There are thousands of excellent WordPress themes to choose from.
Still, finding the best WordPress theme for your needs is not easy. The hunt to find the perfect WordPress theme can test your patience to the limits.
Finding the right WordPress theme for your website can be a game-changer and a career-changer. You can start a website from scratch or considering upgrading an existing one. But, a good WordPress theme can attract user’s attention to your website and your business.
We’ve greatly simplified your search. We’ve scoured through all the popular WordPress themes and listed what we consider the best.
This powerful multipurpose WordPress theme is among the best in the business in terms of popularity – 250,000+ users, and size – 40+ core features including a 650+ pre-built website library, a wealth of design elements and options, and the most advanced page and website building tools on the market.
The website-building goodies this multipurpose WordPress theme places at your fingertips include –
A setup wizard and helpful tutorial comes with the package and be sure to check out this Live Demo to see the Be Builder’s stunning capabilities.
With its seemingly endless number of design options, customizer settings, layout choices, and navigation options, coupled with dynamic template functionality, and the popular WPBakery frontend drag and drop page builder gives this WordPress theme’s users total flexibility to build attractive and engaging websites any way they want.
“Build it your way.” could serve as this aptly named theme’s slogan. Click on the banner to learn more about everything that has delighted Total’s 48,000 users.
Blocksy was built with flexibility, extensibility, and speed as its three major priorities. The result is a WordPress theme that gives you the power to easily create and make changes to the appearance and functionality of your website as you build it.
These priorities find their way into Blocksy’s key features such as –
Other significant features include –
Best of all? Blocksy is free! Click on the banner and check it out. There is a Pro version as well, but the free version has plenty to offer.
With Uncode’s Creative and WooCommerce theme in your web design toolbox there is no limit to what you can build in the way of attractive and engaging websites and online stores.
You’ll have at your fingertips –
With TheGem creative WordPress theme you can rise above the competition with its creative modern layouts, fastest loading times, and easy-to-use tools for building a professional website at (seemingly) the speed of light.
Key features include –
Avada, the ultimate WordPress theme and website builder, is the #1 best-selling WordPress theme of all time with its more than 750,000 users.
The Rey WooCommerce theme takes building a WooCommerce site to the next level with its powerful Elementor and WooCommerce integrations coupled with WordPress’s sophisticated engine and the following key features:
Rey is performance oriented, developer and SEO friendly, and responsive.
If eCommerce is your thing, you won’t go wrong by selecting WoodMart, ThemeForest’s highest-rated eCommerce theme. Customization options are unlimited and WoodMart’s drag and drop builder reduces workflows to a minimum.
Key features include –
Created with the future in mind, Vault features a multiplicity of design tools and design options in a single framework.
And you’ll get: A modern and engaging website noted for its outstanding performance.
KnowAll is the most powerful WordPress theme on the market for building a high performance and easy to access and use knowledge base.
Litho is a creative, modern, and highly customizable WordPress Elementor theme that is built with and fully compatible with Elementor, the world’s #1 free page builder.
Each of these 11 excellent WordPress themes features high-quality designs. Also impressive selections of demos and pre-built layouts. A lot of templates, plenty of customization settings and options, too. It has genuinely useful features that will make your website serve its purpose effectively and efficiently.
These are highly popular WordPress themes for a reason. No matter which one you choose, you’ll be well on the way to creating an outstanding website.
Original article source at: https://www.sitepoint.com/
1673258650
Apex monochrome Atom theme UI
$ apm install apex-ui
This variant:
Slim variant:
Author: Apex
Source Code: https://github.com/apex/apex-ui
License: MIT license
1672463700
The best colorful flat theme for your favorite editor and terminal emulator.
Palette | Hex | RGB | HSL | Sample |
---|---|---|---|---|
Background | #2b3e50 | 43 62 80 | 209.2° 30.1% 24.1% | ![]() |
Current Line | #243443 | 36 52 67 | 209° 30.1% 20.2% | ![]() |
Selection | #19242f | 25 36 47 | 210° 30.6% 14.1% | ![]() |
Foreground | #f8f8f2 | 248 248 242 | 60° 30% 96% | ![]() |
Comment | #5c98cd | 92 152 205 | 208.1° 53.1% 58.2% | ![]() |
String | #e6db74 | 230 219 116 | 54.2° 69.5% 67.8% | ![]() |
See Lucario in atom.io page
(Available for IntellijIDEA, Pycharm, Webstorm, PHPStorm and RubyMine)
If you are using Package Control, you can easily install Lucario via Package Control: Install Package. The package theme is named "Lucario Color Scheme" in the packages list.
You should be able to select lucario theme by browsing Preferences -> Color Scheme -> Lucario
Issues for the VS Code theme are tracked here.
~/.vim/colors/
directorysyntax enable
set number
colorscheme lucario
OS X Hint: vim /usr/share/vim/vimrc
Hint: run this command to move the Lucario.dvtcolortheme
file to your Xcode FontAndColorThemes directory:
$ mv Lucario.dvtcolortheme ~/Library/Developer/Xcode/UserData/FontAndColorThemes/
Since it is not possible to add color themes to GNOME Terminal, the provided script will create a new Profile which uses custom colors.
./lucario.sh
)The script was created with terminal.sexy.
Lucario.itermcolors
fileLucario.terminal
filelucario.colors
with ~/.termux/colors.properties
.lucario.colors
to colors.properties
.$HOME/.local/share/xfce4/terminal/colorschemes/
(You might need to create this folder first.).Xresources
file to your home directory or add the contents to your existing ~/.Xresources
xrdb -merge ~/.Xresources
xrdb -merge ~/.Xresources
to your init scripts (e.g. .xinitrc
)settings.json
from Windows Terminal."schemes"
array within it."schemes"
array in settings.json
file."colorScheme": "Lucario"
to your profile.Download CSS/lucario.css
Move the CSS/lucario.css file to your web directory
Include the stylesheet in your HTML by including the line
<link rel="stylesheet" type="text/css" href="lucario.css">
The default stylesheet with highlight code blocks is rendered with the class highlight.
Want to use Lucario Color Scheme for your favorite editor, but it doesn't exist? So how about creating one? It's very simple! \o/
git checkout -b my-new-feature
git commit -m 'Add some feature'
git push origin my-new-feature
Author: Raphamorim
Source Code: https://github.com/raphamorim/lucario
License: MIT
1672444020
This repo contains the latest version of the Seti UI theme. It contains the default icons used in VS Code and the seti-ui theme for Atom.
The theme is a dark interface theme crafted especially for Atom, with subtle colors that are meant to be easy on the eyes. It includes custom file icons, and new user configurable settings. Seti Syntax is also available for all your code.
Given that changes to this repo are included in VS Code, we are somewhat conservative with adding new file icons because it can affect the performance for everyone. This means we only accept PRs for file icons for popular languages or toolsets. For example does your language/tool have package downloads or vscode extensions with tens of thousands of users? If no, then there's a possibility we will deny your pull request.
Adding an icon requires you have node and gulp installed.
Once you have these, you will need to open a terminal window, navigate to the seti-ui folder and run npm install
(note you only need to do this once).
Icon Style:
Once everything is setup, follow these steps any time you want to add a new icon:
Create an SVG icon with the name of the language, and save it to the icons
folder (do not use any spaces or special characters)
Open styles/components/icons/mapping.less and create a link for the icon you just added with the .icon-set
mixin. Assuming you were adding an icon for Sass it might look something like this: .icon-set('.scss', 'sass', @pink)
The first parameter '.scss'
is the file extension you want to target, the second parameter 'sass'
is the name of the icon you just created, without the extension (sass.svg), and the last parameter @pink
indicated what color the icon should be.
There are currently 9 supported icon colors:
- `@blue`
- `@grey`
- `@green`
- `@orange`
- `@pink`
- `@purple`
- `@red`
- `@white`
- `@yellow`
While, you can add additional colors to styles/ui-variables.less, but please do not do this unless you find it absolutely necessary. If you do add another color, please make sure that matches the general feel of the other colors. If you add something really bright or really pale, your pull request will likely be declined.
You will need to do this once for every extension, you want to target. For example, if you want to target both .sass and .scss extensions, you would add the following:
.icon-set('.sass', 'sass', @pink);
.icon-set('.scss', 'sass', @pink);
gulp svg
to minimize the svg files.This is a bit of work, but the steps:
gulp icon
extensions/theme-seti
and run node build/update-icon-theme.js
extensions/theme-seti/build/update-icon-theme.js
- let FROM_DISK
is set to trueThen, you can make you SVG changes, re-run gulp icon
, node build/update-icon-theme.js
and re-launch your dev copy of VS Code.
Please don't include the built files in your Pull Requests, because it can cause conflicts between PRs and we only need to do this during deploys otherwise.
Please Note: This is the Seti interface theme for Atom only
This is for the interface of the Atom editor. I also have Seti Syntax for theming the code view in Atom. In addition, there is a new Seti theme for Hyper.
If these are not the droids you're looking for, may I point you in the direction of these great ports:
Seti UI has been updated with a cleaner, more streamlined interface, a slightly tweaked color scheme, additional icons and new user settings, as well as a handful of other small ui improvements and a refactored code base.
Seti now has 8 theme colors to choose from:
File icons will now show up in the file search (cmd+ p
) dialog in addition to the side bar and tabs. This should make for easier grokking when you're searching for a file.
To get here, Go to "Atom > Preferences" Select "Themes" and click the settings icon next to "Seti" under UI Theme dropdown
With 1.0 you can now adjust some of the more commonly requested features directly in Atom's settings view (Settings > Themes > Click the gear icon next to Seti).
Setting are brand new, and still have a few kinks to be worked out. If you run into any problems with them, or would like to request an additional setting, please file an issue!
If you find a bug, please do add a bug report. However, first make sure it is for Seti UI in Atom. I only support the Atom versions, please check the links above to report a bug on another platform.
Seti 1.0 has been optimized to work with Atom 1.6 and above:
Including the 1.7 beta
Most if not everything should work on older versions as well, but if you see something that doesn't look quite right, make sure you have the latest version of Atom installed before filling a bug.
The easiest way to install Seti is to do as follows:
seti ui
and click themes
button to search.Seti UI
and click install
Alternatively you can use the Atom Package Manager:
apm install seti-ui
Anyone is welcome to contribute to the development of this theme. If can be a lot of work to keep up on, and I'll take help wherever I can get it :)
If you're keen to contribute, start by forking the repo and cloning it to your computer.
Note: To use the development version, you must first uninstall the production version (apm uninstall seti-ui
), then run the following commands:
# To install the local version as an Atom Theme
apm link .
# Open with dev mode:
atom --dev .
Once this is complete you will be able to edit seti files directly in Atom and see your changes in real time.
Once you are satisfied, with your updates, commit your change, push them to your fork and submit a pull request with a description of the changes that you made.
Once you're done working locally and ready to install the production version again, simply run apm unlink .
from the root of the seti-ui project.
Run npm publish
If you'd like a new app icon to match the look & feel of Seti, feel free to use one of these:
Author: jesseweed
Source Code: https://github.com/jesseweed/seti-ui
License: MIT license
1672436220
A theme for Terminal and iTerm that mimics the native One Dark Theme made by the Atom team. Also available in One Light.
Colors are not enabled by default in macOS Terminal, so you will need to enable colors in order for this theme to work. To do this, append the following to your ~/.bashrc
or ~/.zshrc
file, then restart Terminal
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
This one line will do that for you. Copy and paste it into a Terminal window, hit return, then restart Terminal. For ~/.bashrc
echo -e '\n# Add colors to Terminal\nexport CLICOLOR=1\nexport LSCOLORS=ExFxBxDxCxegedabagacad' >> ~/.bashrc
or ~/.zshrc
echo -e '\n# Add colors to Terminal\nexport CLICOLOR=1\nexport LSCOLORS=ExFxBxDxCxegedabagacad' >> ~/.zshrc
#1E2127
).One Dark
One Light
Author: Nathanbuchar
Source Code: https://github.com/nathanbuchar/atom-one-dark-terminal
License: ISC license
1672367280
themer
takes a set of colors and generates editor themes, terminal themes, themes for other apps, and desktop/device wallpapers.
Don't love the command-line? Check out the Web UI.
mkdir my-dotfiles && cd my-dotfiles
npm install themer
If you do not keep your dotfiles under version control, you can simply install themer globally with npm -g install themer
.
themer
can also be used without installing, via npx
—see example below.
Pass themer
a color set, as many templates as you wish, and an output directory.
themer \
--colors <npm package name OR file> \
--template <npm package name OR file> \
[--template <npm package name OR file>...] \
--out <directory>
Your generated theme files, as well as a README on how to install them, will be written to the output directory.
themer
can create themes from your custom color sets (see "Create your own color set" below) or from color sets published on npm (see @themerdev/colors-default). The same is true for templates.
Say you wanted to generate a vim theme and desktop background using themer
's default color set. First, install themer
, the color set, and the templates:
cd my-dotfiles
npm install themer @themerdev/colors-default @themerdev/vim @themerdev/wallpaper-block-wave
Then edit your package.json
:
...
"scripts": {
"build": "themer -c @themerdev/colors-default -t @themerdev/vim -t @themerdev/wallpaper-block-wave -o gen"
},
...
Then run your new script:
npm run build
Now check the gen/
folder for your generated themes. Here's the result:
npx
npx \
-p themer \
-p @themerdev/colors-default \
-p @themerdev/vim \
-p @themerdev/wallpaper-block-wave \
themer \
-c @themerdev/colors-default \
-t @themerdev/vim \
-t @themerdev/wallpaper-block-wave \
-o output
Name | Dark Preview | Light Preview |
---|---|---|
Jamstacker | ![]() | (dark only) |
Victor Mono | ![]() | ![]() |
Future Pro | ![]() | ![]() |
Name | Dark Preview | Light Preview |
---|---|---|
@themerdev/colors-dracula | (dark only) | |
@themerdev/colors-github-universe | (dark only) | |
@themerdev/colors-lucid | ||
@themerdev/colors-mojave | ||
@themerdev/colors-nova | (dark only) | |
@themerdev/colors-one | ||
@themerdev/colors-rivet | ||
@themerdev/colors-seti | (dark only) | |
@themerdev/colors-solarized |
To create your own color set, create a JavaScript file that exports a colors
object, like so:
module.exports.colors = {
// A color set can have both light and dark variants, but is only required
// to have one.
dark: {
// Colors can be defined in any valid CSS format.
// accent0-7 should be the main accent colors of your theme. See the table
// in the "Color mappings" section for how the colors will be used in your
// new themes.
accent0: '#FF4050',
accent1: '#F28144',
accent2: '#FFD24A',
accent3: '#A4CC35',
accent4: '#26C99E',
accent5: '#66BFFF',
accent6: '#CC78FA',
accent7: '#F553BF',
// shade0-7 should be shades of the same hue, with shade0 being the
// background and shade7 being the foreground. If you omit the
// intermediate shades (1 through 6), they will be calculated automatically
// for you.
shade0: '#282629',
shade1: '#474247',
shade2: '#656066',
shade3: '#847E85',
shade4: '#A29DA3',
shade5: '#C1BCC2',
shade6: '#E0DCE0',
shade7: '#FFFCFF'
},
// Same as above, except that shade0 should be the lightest and shade7 should
// be the darkest.
light: { ... },
};
Pro Tip: you can use themer
's Web UI to more easily select your colors, then click the "Download" button to generate a colors.js
file.
Then pass the path to your JS file to the --colors
argument of themer
.
themer -c path/to/my/colors.js ...
To help you choose colors for your own color set, this is approximately how most themer
templates will utilize your colors:
Color Key | Typical Usage | Conventional Color* |
---|---|---|
accent0 | error, VCS deletion | Red |
accent1 | syntax | Orange |
accent2 | warning, VCS modification | Yellow |
accent3 | success, VCS addition | Green |
accent4 | syntax | Cyan |
accent5 | syntax | Blue |
accent6 | syntax, caret/cursor | |
accent7 | syntax, special | Magenta |
shade0 | background color | |
shade1 | UI | |
shade2 | UI, text selection | |
shade3 | UI, code comments | |
shade4 | UI | |
shade5 | UI | |
shade6 | foreground text | |
shade7 | foreground text |
*Conventional color is suggested for consistency with ANSI color names in terminal themes, but is not a hard requirement.
See themer
's Web UI for a more visual representation of the color mappings.
shade1
through shade6
, themer
will interpolate them automatically for you, using color-steps.themer
supports any valid CSS color format; that means you can use chartreuse
, rgb(127, 255, 0)
, rgb(50%, 100%, 0%)
, #7FFF00
, hsl(90, 100%, 50%)
, etc.themer-colors-
so that others can easily find it.)In place of a themer color set file or npm package, you can also provide themer
with any base16 scheme YAML file.
themer --colors path/to/base16-scheme.yml ...
Refer to the base16 repository for a list of base16 schemes.
To create your own template, create a JavaScript file that exports a render
function, like so:
module.exports.render = function (colors, options) {
/*
colors is an object that will have one or both keys: 'light' and
'dark', each being an object with keys 'accent0' through 'accent7'
and 'shade0' through 'shade7'.
options is an object representing the original command-line args
passed to themer. This allows you to add special arguments that
will apply only to your template. An example of this is allowing a
themer user to specify custom resolutions for rendering a wallpaper.
This function should return an array of Promises, each Promise
resolving to an object of the following structure:
{
name: '<the name of the file to be written>', // can include subdirectories, too
contents: <a Buffer of the contents of the file to be written>,
}
*/
};
Your JS file can then be passed to a --template
argument of themer
. That's it!
Here's an example template render function that generates a Slack sidebar theme from a themer
color set.
Once you've developed your template, consider publishing it on npm so that others can use it!
themer
is inspired by trevordmiller/nova and chriskempson/base16.
Conceptually, themer
is very similar to base16, but:
For instructions on how to contribute to themer
, see CONTRIBUTING.md and themer
's code of conduct.
If you'd prefer to develop your themes visually, check out themer
's Web UI, an offline-ready Progressive Web App.
themer
themer
on GitHubthemer
's Web UIAuthor: Themerdev
Source Code: https://github.com/themerdev/themer
License: MIT license
1672279560
As anyone who has opened a bug report or feature request in the last several years can attest, I have begun scaling back support for the jupyter-themes
package - mostly due to my personal preference for using Jupyter Lab over Jupyter Notebook classic (see update below for two of my JupyterLab theme repos).
For those with continued interest in using jupyter-themes
I am planning to write up a tutorial for how to add your own custom themes to your local jt
installation as well as a contributing guide for those who would like submit pull-requests to the official pacakge.
I'll also take this opportunity to say thank you to everyone who regularly used, expressed appreciation for, and contributed to jupyter-themes
. I'm particularly grateful to those of you who bothered to submit pull requests - adding many excellent features that I was either too short-sighted to anticipate or simply incapable of implementing on my own. So, thank you, sincerely.
Finally got around to creating a pair of themes for JupyterLab with similar style and design conventions to the jupyter-themes
package:
# install jupyterthemes
pip install jupyterthemes
# upgrade to latest version
pip install --upgrade jupyterthemes
# install jupyterthemes
conda install -c conda-forge jupyterthemes
# update to latest version
conda update jupyterthemes
pip install --upgrade notebook
)-t
) or attempting to restore the default (-r
) in order for those changes to take effect. (see discussion here). At the very least you'll need to refresh your browser window (usually cmd+r
or ctrl+r
).jt
is not recognized, try this fix.jt [-h] [-l] [-t THEME] [-f MONOFONT] [-fs MONOSIZE] [-nf NBFONT]
[-nfs NBFONTSIZE] [-tf TCFONT] [-tfs TCFONTSIZE] [-dfs DFFONTSIZE]
[-m MARGINS] [-cursw CURSORWIDTH] [-cursc CURSORCOLOR] [-vim]
[-cellw CELLWIDTH] [-lineh LINEHEIGHT] [-altp] [-altmd] [-altout]
[-P] [-T] [-N] [-r] [-dfonts]
cl options | arg | default |
---|---|---|
Usage help | -h | -- |
List Themes | -l | -- |
Theme Name to Install | -t | -- |
Code Font | -f | -- |
Code Font-Size | -fs | 11 |
Notebook Font | -nf | -- |
Notebook Font Size | -nfs | 13 |
Text/MD Cell Font | -tf | -- |
Text/MD Cell Fontsize | -tfs | 13 |
Pandas DF Fontsize | -dfs | 9 |
Output Area Fontsize | -ofs | 8.5 |
Mathjax Fontsize (%) | -mathfs | 100 |
Intro Page Margins | -m | auto |
Cell Width | -cellw | 980 |
Line Height | -lineh | 170 |
Cursor Width | -cursw | 2 |
Cursor Color | -cursc | -- |
Alt Prompt Layout | -altp | -- |
Alt Markdown BG Color | -altmd | -- |
Alt Output BG Color | -altout | -- |
Style Vim NBExt* | -vim | -- |
Toolbar Visible | -T | -- |
Name & Logo Visible | -N | -- |
Kernel Logo Visible | -kl | -- |
Reset Default Theme | -r | -- |
Force Default Fonts | -dfonts | -- |
# list available themes
# onedork | grade3 | oceans16 | chesterish | monokai | solarizedl | solarizedd
jt -l
# select theme...
jt -t chesterish
# restore default theme
# NOTE: Need to delete browser cache after running jt -r
# If this doesn't work, try starting a new notebook session.
jt -r
# toggle toolbar ON and notebook name ON
jt -t grade3 -T -N
# toggle kernel logo. kernel logo is in same container as name
# toggled with -N. That means that making the kernel logo visible is
# pointless without also making the name visible
jt -t grade3 -N -kl
# set code font to 'Roboto Mono' 12pt
# (see monospace font table below)
jt -t onedork -f roboto -fs 12
# set code font to Fira Mono, 11.5pt
# 3digit font-sizes get converted into float (115-->11.5)
# 2digit font-sizes > 25 get converted into float (85-->8.5)
jt -t solarizedd -f fira -fs 115
# set font/font-size of markdown (text cells) and notebook (interface)
# see sans-serif & serif font tables below
jt -t oceans16 -tf merriserif -tfs 10 -nf ptsans -nfs 13
# adjust cell width (% screen width) and line height
jt -t chesterish -cellw 90% -lineh 170
# or set the cell width in pixels by leaving off the '%' sign
jt -t solarizedl -cellw 860
# fix the container-margins on the intro page (defaults to 'auto')
jt -t monokai -m 200
# adjust cursor width (in px) and make cursor red
# options: b (blue), o (orange), r (red), p (purple), g (green), x (font color)
jt -t oceans16 -cursc r -cursw 5
# choose alternate prompt layout (narrower/no numbers)
jt -t grade3 -altp
# my two go-to styles
# dark
jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T
# light
jt -t grade3 -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T
jtplot.style()
makes changes to matplotlib's rcParams dictionary so that figure aesthetics match those of a chosen jupyterthemes style. In addition to setting the color scheme, jtplot.style()
allows you to control various figure properties (spines, grid, font scale, etc.) as well as the plotting "context" (borrowed from seaborn).
Note, these commands do not need to be re-run every time you generate a new plot, just once at the beginning of your notebook or whenever style changes are desired after that.
Pro-tip: Include the following two lines in ~/.ipython/profile_default/startup/startup.ipy
file to set plotting style automatically whenever you start a notebook:
# import jtplot submodule from jupyterthemes
from jupyterthemes import jtplot
# currently installed theme will be used to
# set plot style if no arguments provided
jtplot.style()
# import jtplot module in notebook
from jupyterthemes import jtplot
# choose which theme to inherit plotting style from
# onedork | grade3 | oceans16 | chesterish | monokai | solarizedl | solarizedd
jtplot.style(theme='onedork')
# set "context" (paper, notebook, talk, poster)
# scale font-size of ticklabels, legend, etc.
# remove spines from x and y axes and make grid dashed
jtplot.style(context='talk', fscale=1.4, spines=False, gridlines='--')
# turn on X- and Y-axis tick marks (default=False)
# turn off the axis grid lines (default=True)
# and set the default figure size
jtplot.style(ticks=True, grid=False, figsize=(6, 4.5))
# reset default matplotlib rcParams
jtplot.reset()
-f arg | Monospace Font |
---|---|
anka | Anka/Coder |
anonymous | Anonymous Pro |
aurulent | Aurulent Sans Mono |
bitstream | Bitstream Vera Sans Mono |
bpmono | BPmono |
code | Code New Roman |
consolamono | Consolamono |
cousine | Cousine |
dejavu | DejaVu Sans Mono |
droidmono | Droid Sans Mono |
fira | Fira Mono |
firacode | Fira Code |
generic | Generic Mono |
hack | Hack |
hasklig | Hasklig |
inconsolata | Inconsolata-g |
inputmono | Input Mono |
iosevka | Iosevka |
liberation | Liberation Mono |
meslo | Meslo |
office | Office Code Pro |
oxygen | Oxygen Mono |
roboto | Roboto Mono |
saxmono | saxMono |
source | Source Code Pro |
sourcemed | Source Code Pro Medium |
sudovar | Sudo Variable |
ptmono | PT Mono |
ubuntu | Ubuntu Mono |
-nf/-tf arg | Sans-Serif Font |
---|---|
opensans | Open Sans |
droidsans | Droid Sans |
exosans | Exo_2 |
latosans | Lato |
ptsans | PT Sans |
robotosans | Roboto |
sourcesans | Source Sans Pro |
-nf/-tf arg | Serif Font |
---|---|
loraserif | Lora |
ptserif | PT Serif |
georgiaserif | Georgia |
cardoserif | Cardo |
crimsonserif | Crimson Text |
ebserif | EB Garamond |
merriserif | Merriweather |
neutonserif | Neuton |
goudyserif | Sorts Mill Goudy |
Author: Dunovank
Source Code: https://github.com/dunovank/jupyter-themes
License: MIT license
1670518575
This article was created in partnership with BAWMedia. Thank you for supporting the partners who make SitePoint possible.
All it takes is a matter of seconds for visitors to form an impression about a website. Considering the hero image on the home page is the first bit of content that most visitors encounter, what sort of impression do you want them to get when they see yours?
To make the most of these initial encounters, your hero image needs to be well-thought-out and executed. It needs to convey what type of creator you are, offer a preview of your talents, and give visitors a reason to explore further.
To create the perfect hero image for your portfolio website, there are 6 elements to focus on. In this post, we’ll look at what those elements are as well as some pre built website examples from BeTheme – one of the world’s most popular and highly rated WordPress Themes with 264,000+ sales and a 4.83 out 5 star rating – and other brands that demonstrate various ways to artfully bring them together.
In general, there are 6 elements that come together to form every hero section, regardless of what type of site you’re building. Here are some things to think about as you create your hero image using these critical components:
The imagery you choose for your hero image should have a direct connection to the type of work you do.
For example, Lauren Waldorf Interiors is a boutique interior design studio. As such, the hero section contains a sliding photo gallery of completed projects:
For photographers, videographers, web designers, and other visual artists, you probably have a lot of graphics you could show off in the hero. For artists that work with other types of media, it might be difficult to visually depict what you do.
In the latter case, you might decide to make your face the primary image in the hero section, as we see in the BeDJ 2 pre built website hero image:
The DJ’s face gives visitors something more visually interesting to look at than just a bunch of colors and music-related graphics. It also creates a direct connection between the body of work and the artist.
As you go about designing your hero image, consider the following:
Also, do you even need imagery at all? For example, if you’re a font designer or copywriter, then you might decide to skip the imagery and just let your text do the talking.
There are different ways to deal with the background of the hero section.
In some cases, your work might occupy the backdrop. For instance, a videographer could put a slideshow of their videos in the background. Not only would this make the website feel lively, but it would also give visitors a quick preview of your work.
In other cases, you might want to give a small tease of your work in the hero section, like this example from the BeInterior 6 pre built website:
The photo gallery takes up about a quarter of the width of the section. While the designer could’ve used a color background to frame the work, they chose to add a textured photo instead. The sheet not only provides a comforting color to the backdrop, it’s a creative way to add context to what the interior designer does.
Your other option would be to use solid colors or gradients (along with illustrations) in the background the way that Mindgrub does:
For digital creatives, this might be your best option. While you could show off screenshots of websites you’ve built or UI kits you’ve developed, you can use this space to create a digital masterpiece of your own. You can save the work you’ve created for clients for another section or page.
Even if you don’t write the text that appears in the hero section, the aesthetic choices you make can communicate just as much to prospective clients as the words themselves do.
There are a number of ways to add a voice to your hero messaging. The first is with the type of font you use. For example, BeDetailing 4 pre built website uses a Google font called Italiana:
This auto detailing company expresses a fondness for classic and vintage cars right up front. The wording, car imagery, and the elegant calligraphy-inspired font all tell us as much.
Another thing to consider is how the styling of your sentences can make your messaging sound different. For example, Get Em Tiger does a number of things to change the way their hero image text sounds inside the heads of people reading it:
First, the main headline is in all caps. Text styled this way is generally interpreted to sound loud and bold.
Secondly, the words “STAND OUT” are highlighted in orange. This is meant as a substitute for italics or bolding that would normally be used to create emphasis in plain text.
In addition, the sub-headline is written in sentence case. When visitors read this, it will likely take on a friendlier, more conversational tone inside their heads.
By the time you’re ready to create the hero image for your portfolio site, you’ve likely worked out what your brand colors are going to be.
Typically, the brand color palette is useful for styling buttons as well as adding accents to key areas of your website. However, you might decide to heavily pull from it to create your hero section as G Sharp Design has done:
The color palette in this hero section is relatively simple. Yet, the vibrant red and yellow that dominate the design make it impossible to tear your eyes away from it.
While this spectacle of color works well for this agency, it might not feel right for other types of creatives. For instance, a photography pre built website like BePhoto 2 uses a dark theme:
The hero image has a photo slider in the center of it where a bright pop of color is revealed with each subsequent photo. Because the rest of the site is styled in a muted dark grey with off-white text, the photos instantly grab attention.
So as you decide on your own color palette, ask yourself the following questions:
Color doesn’t need to be all-consuming in order to be effective. It all depends on what you need it to do for you in this section.
Without animation, your hero image is nothing more than a static billboard.
Now, there’s nothing wrong with billboard advertising — when it’s over 200 square feet in size and standing more than 10 feet off the ground. Without the grand presence that billboards have in the real world, though, static designs on a website can feel lifeless and uninspired.
Just like the other elements we’ve looked at today, there are different ways to add motion and interaction to your hero image design.
For instance, Awesome Inc is an animation and design studio. It would be weird if we saw nothing of their high-profile animation work after entering the website:
On the other hand, if you’re a creative that doesn’t do animation work, there would be no reason to take it to this extreme. That doesn’t mean that your hero image should be devoid of motion though.
For example, BeModel 3 pre built website has a dynamic hero image design:
It’s not just the image slider that’s animated. The color palette of the slider changes in sync with the photo changes.
Even this might seem like a lot of motion for you. If that’s the case, there are more subtle ways to use animations to make your hero image feel more engaging — like adding hover transformations to buttons or transition animations to the section.
Last but not least, you’ll want to figure out what the next logical action should be for visitors.
One option is to keep them scrolling down the page. If that’s the case, you might not even want to include a call-to-action button. The majority of visitors will naturally start scrolling after they’ve seen all that they need to see.
Another option is to invite them to visit another page on your website. If that’s the case, which page should it be? On a portfolio site, you’ll probably want visitors to go to your Portfolio or Services page.
BePhotography 2 pre built website, for instance, directs prospective clients to the Portfolio page:
Yet one more option is to encourage visitors to engage with the hero image before giving them the option to go somewhere else. This will be useful if your hero image offers a slideshow of your work that users can engage with. This is what Perky Bros does:
The visitor’s cursor will change appearance based on which part of the slider they hover over. On the left or right side of the screen, a blue arrowhead appears, letting them know there’s more work to explore. In the center of the screen, the words “View Project” appear. When clicked, the visitor will be taken to a case study page for the project.
The design of the hero image is especially critical on portfolio sites as it not only needs to be reflective of what visitors will find on your site, but also reflective of your talents as a creative. So you have to make sure you create a hero image that properly sets the stage for you.
What’s nice about using a WordPress theme like BeTheme is that it comes with 101 pre built portfolio sites. Each of which comes with a hand-crafted hero image design that will make it easy to update the 6 crucial components we looked at above.
Original article source at: https://www.sitepoint.com/
1669437146
How great it would be If we can change the look and feel of a web application with just one click. Spring MVC framework does just that. It allows you to change the look and feel of your application, thereby enhancing user experience.
A theme is a collection of static resources, typically style sheets and images that affect the visual style of the application. Given below are the snapshots of an application using different themes
Wood Theme
Pentagon Theme
To use themes in your Spring web application, you must set up an implementation of the org.springframework.ui.context.ThemeSource interface. Here we will use org.springframework.ui.context.support.ResourceBundleThemeSource implementation that loads properties file from the root of the classpath.
When using the ResourceBundleThemeSource, a theme is defined in a simple properties file. The properties file lists the resources that make up the theme. Here is an example:
styleSheet=/themes/wood.css
The keys of the properties are the names that refer to the themed elements from view code (e.g. JSP file).
For a JSP, we use the spring:theme custom tag. The following JSP fragment uses the theme defined in the example to customize the look and feel:
< %@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
< html>
< head>
< link rel="stylesheet" href="< spring:theme code='styleSheet'/>" type="text/css"/>
< /head>
< body>
...
< /body>
< /html>
Configuring the themes ?
Configure the ResourceBundleThemeSource bean in the bean definition file.
< bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
< property name="basenamePrefix" value="theme-" />
< /bean>
Note that we have set the basnamePrefix property of the bean to “theme-“ , by default the ResourceBundleThemeSource uses an empty base name prefix.
So properties file should be named as theme-filename.properties eg. theme-wood.properties, theme-pentagon.properties etc.
Theme Resolver
After defining themes, it is the ThemeResolver implementation that decides which theme to use. Spring provides various theme resolvers, for example: FixedThemeResolver, SessionThemeResolver, CookieThemeResolver.
With this example we will use CookieThemeResolver implementation in which the selected theme is stored in a cookie on the client.
Configuring the Theme Resolver
< bean id="themeResolver" class="org.springframework.web.servlet.theme.CookieThemeResolver">
< property name="defaultThemeName" value="wood" />
< /bean>
Note: We have set the default theme to wood. So, when a user accesses the web application for the first time, wood theme will be in effect.
Theme Interceptor
To allow users to change the theme with just a click , Spring provides ThemeChangeInterceptor. Below is the configuration of ThemeChangeInterceptor in the bean definition file
< bean id="themeChangeInterceptor" class="org.springframework.web.servlet.theme.ThemeChangeInterceptor">
< property name="paramName" value="theme" />
< /bean>
We have specified the value of property paramName as theme which means ThemeChangeInterceptor will be invoked whenever a request is made with parameter “theme” with different values.
We also require to configure themeChangeInterceptor bean that we have defined above as an interceptor. We can do that using mvc:interceptors
< mvc:interceptors>
< ref bean="themeChangeInterceptor">< /ref>
< /mvc:interceptors>
Project Structure :
Here is the snapshot of project structure in Eclipse IDE
Let’s see the theme-pentagon.properties file which is under src folder
styleSheet=themes/pentagon.css
There is only one line, which defines the URL to get the corresponding CSS file. Similarly, for other properties file eg. theme-symphony, theme-wood, theme-wall.
In each properties file there is only one line referring to the URL for the CSS file.
So, whenever ThemeChangeInterceptor intercepts a change in theme, it would lookup for corresponding properties file and try to access the CSS file as the URL specified in properties file.
Since all our themes (CSS files) are under resources/themes folder. We have to configure the themes/css-filename to resources/themes/css-filename, otherwise properties file will not be able to locate the CSS file.We can do that using mvc:resources as shown below :
< mvc:resources mapping="/themes/**" location="/resources/themes/">< /mvc:resources>
wood.css
In wood.css file, we just change the background image of the body tag. But you are not just restricted to changing the background image you can change text styles, font, color etc.
body {
background-image : url("/Themes/images/wood_pattern.png");
}
HomeController
We have a simple HomeController which will serve home.jsp page on running the Themes application
@Controller
public class HomeController {
@RequestMapping("/")
public String getHomePage(){
return "home";
}
}
Running the Themes Application
Now, we are all set to run the themes application. On running the application you will see home.jsp page with wood (which we declared as default) theme in effect
Let’s explore other themes by clicking on themes link available on the right side of home.jsp page.
Wall Theme
Symphony Theme
Note : See the change in the URL on clicking the different themes link. On clicking a theme link, for example, wood, a request parameter theme with value wood, is sent to the server. ThemeChangeInterceptor intercepts the change in theme and displays the appropriate theme.
Gotchas While Working with Themes
Below are some important gotchas that you should be aware of while working with themes
As always, if you are interested in trying the code yourself download it.
[buttonleads form_title=”Download Code” redirect_url=https://edureka.wistia.com/medias/f7v8yqavdp/download?media_file_id=79851340 course_id=62 button_text=”Download Code”]
Got a question for us? Please mention it in the comments section and we will get back to you.
Original article source at: https://www.edureka.co/
1667617282
themer
takes a set of colors and generates editor themes, terminal themes, themes for other apps, and desktop/device wallpapers.
themer
themer
on GitHubthemer
's Web UIDon't love the command-line? Check out the Web UI.
mkdir my-dotfiles && cd my-dotfiles
npm install themer
If you do not keep your dotfiles under version control, you can simply install themer globally with npm -g install themer
.
themer
can also be used without installing, via npx
—see example below.
Pass themer
a color set, as many templates as you wish, and an output directory.
themer \
--colors <npm package name OR file> \
--template <npm package name OR file> \
[--template <npm package name OR file>...] \
--out <directory>
Your generated theme files, as well as a README on how to install them, will be written to the output directory.
themer
can create themes from your custom color sets (see "Create your own color set" below) or from color sets published on npm (see @themerdev/colors-default). The same is true for templates.
Say you wanted to generate a vim theme and desktop background using themer
's default color set. First, install themer
, the color set, and the templates:
cd my-dotfiles
npm install themer @themerdev/colors-default @themerdev/vim @themerdev/wallpaper-block-wave
Then edit your package.json
:
...
"scripts": {
"build": "themer -c @themerdev/colors-default -t @themerdev/vim -t @themerdev/wallpaper-block-wave -o gen"
},
...
Then run your new script:
npm run build
Now check the gen/
folder for your generated themes. Here's the result:
npx
npx \
-p themer \
-p @themerdev/colors-default \
-p @themerdev/vim \
-p @themerdev/wallpaper-block-wave \
themer \
-c @themerdev/colors-default \
-t @themerdev/vim \
-t @themerdev/wallpaper-block-wave \
-o output
Name | Dark Preview | Light Preview |
---|---|---|
Jamstacker | ![]() | (dark only) |
Victor Mono | ![]() | ![]() |
Future Pro | ![]() | ![]() |
Name | Dark Preview | Light Preview |
---|---|---|
@themerdev/colors-dracula | (dark only) | |
@themerdev/colors-github-universe | (dark only) | |
@themerdev/colors-lucid | ||
@themerdev/colors-mojave | ||
@themerdev/colors-nova | (dark only) | |
@themerdev/colors-one | ||
@themerdev/colors-rivet | ||
@themerdev/colors-seti | (dark only) | |
@themerdev/colors-solarized |
To create your own color set, create a JavaScript file that exports a colors
object, like so:
module.exports.colors = {
// A color set can have both light and dark variants, but is only required
// to have one.
dark: {
// Colors can be defined in any valid CSS format.
// accent0-7 should be the main accent colors of your theme. See the table
// in the "Color mappings" section for how the colors will be used in your
// new themes.
accent0: '#FF4050',
accent1: '#F28144',
accent2: '#FFD24A',
accent3: '#A4CC35',
accent4: '#26C99E',
accent5: '#66BFFF',
accent6: '#CC78FA',
accent7: '#F553BF',
// shade0-7 should be shades of the same hue, with shade0 being the
// background and shade7 being the foreground. If you omit the
// intermediate shades (1 through 6), they will be calculated automatically
// for you.
shade0: '#282629',
shade1: '#474247',
shade2: '#656066',
shade3: '#847E85',
shade4: '#A29DA3',
shade5: '#C1BCC2',
shade6: '#E0DCE0',
shade7: '#FFFCFF'
},
// Same as above, except that shade0 should be the lightest and shade7 should
// be the darkest.
light: { ... },
};
Pro Tip: you can use themer
's Web UI to more easily select your colors, then click the "Download" button to generate a colors.js
file.
Then pass the path to your JS file to the --colors
argument of themer
.
themer -c path/to/my/colors.js ...
To help you choose colors for your own color set, this is approximately how most themer
templates will utilize your colors:
Color Key | Typical Usage | Conventional Color* |
---|---|---|
accent0 | error, VCS deletion | Red |
accent1 | syntax | Orange |
accent2 | warning, VCS modification | Yellow |
accent3 | success, VCS addition | Green |
accent4 | syntax | Cyan |
accent5 | syntax | Blue |
accent6 | syntax, caret/cursor | |
accent7 | syntax, special | Magenta |
shade0 | background color | |
shade1 | UI | |
shade2 | UI, text selection | |
shade3 | UI, code comments | |
shade4 | UI | |
shade5 | UI | |
shade6 | foreground text | |
shade7 | foreground text |
*Conventional color is suggested for consistency with ANSI color names in terminal themes, but is not a hard requirement.
See themer
's Web UI for a more visual representation of the color mappings.
shade1
through shade6
, themer
will interpolate them automatically for you, using color-steps.themer
supports any valid CSS color format; that means you can use chartreuse
, rgb(127, 255, 0)
, rgb(50%, 100%, 0%)
, #7FFF00
, hsl(90, 100%, 50%)
, etc.themer-colors-
so that others can easily find it.)In place of a themer color set file or npm package, you can also provide themer
with any base16 scheme YAML file.
themer --colors path/to/base16-scheme.yml ...
Refer to the base16 repository for a list of base16 schemes.
To create your own template, create a JavaScript file that exports a render
function, like so:
module.exports.render = function (colors, options) {
/*
colors is an object that will have one or both keys: 'light' and
'dark', each being an object with keys 'accent0' through 'accent7'
and 'shade0' through 'shade7'.
options is an object representing the original command-line args
passed to themer. This allows you to add special arguments that
will apply only to your template. An example of this is allowing a
themer user to specify custom resolutions for rendering a wallpaper.
This function should return an array of Promises, each Promise
resolving to an object of the following structure:
{
name: '<the name of the file to be written>', // can include subdirectories, too
contents: <a Buffer of the contents of the file to be written>,
}
*/
};
Your JS file can then be passed to a --template
argument of themer
. That's it!
Here's an example template render function that generates a Slack sidebar theme from a themer
color set.
Once you've developed your template, consider publishing it on npm so that others can use it!
themer
is inspired by trevordmiller/nova and chriskempson/base16.
Conceptually, themer
is very similar to base16, but:
For instructions on how to contribute to themer
, see CONTRIBUTING.md and themer
's code of conduct.
If you'd prefer to develop your themes visually, check out themer
's Web UI, an offline-ready Progressive Web App.
Author: Themerdev
Source Code: https://github.com/themerdev/themer
License: MIT license
1667452860
Architect is a Jekyll theme for GitHub Pages. You can preview the theme to see what it looks like, or even use it today.
To use the Architect theme:
Add the following to your site's _config.yml
:
remote_theme: pages-themes/architect@v0.2.0
plugins:
- jekyll-remote-theme # add this line to the plugins list if you already have one
Optionally, if you'd like to preview your site on your computer, add the following to your site's Gemfile
:
gem "github-pages", group: :jekyll_plugins
Architect will respect the following variables, if set in your site's _config.yml
:
title: [The title of your site]
description: [A short description of your site's purpose]
Additionally, you may choose to set the following optional variables:
show_downloads: ["true" or "false" (unquoted) to indicate whether to provide a download URL]
google_analytics: [Your Google Analytics tracking ID]
If you'd like to add your own custom styles:
Create a file called /assets/css/style.scss
in your site
Add the following content to the top of the file, exactly as shown:
---
---
@import "{{ site.theme }}";
Add any custom CSS (or Sass, including imports) you'd like immediately after the @import
line
Note: If you'd like to change the theme's Sass variables, you must set new values before the @import
line in your stylesheet.
If you'd like to change the theme's HTML layout:
favicon
, you can add custom files in your local _includes
folder. The files provided with the theme provide a starting point and are included by the original layout template./_layouts/default.html
in your siteGoogle has released several iterations to their Google Analytics code over the years since this theme was first created. If you would like to take advantage of the latest code, paste it into _includes/head-custom-google-analytics.html
in your Jekyll site.
Templates often rely on URLs supplied by GitHub such as links to your repository or links to download your project. If you'd like to override one or more default URLs:
Look at the template source to determine the name of the variable. It will be in the form of {{ site.github.zip_url }}
.
Specify the URL that you'd like the template to use in your site's _config.yml
. For example, if the variable was site.github.url
, you'd add the following:
github:
zip_url: http://example.com/download.zip
another_url: another value
When your site is built, Jekyll will use the URL you specified, rather than the default one provided by GitHub.
Note: You must remove the site.
prefix, and each variable name (after the github.
) should be indent with two space below github:
.
For more information, see the Jekyll variables documentation.
See the open issues for a list of proposed features (and known issues).
The Architect theme is intended to make it quick and easy for GitHub Pages users to create their first (or 100th) website. The theme should meet the vast majority of users' needs out of the box, erring on the side of simplicity rather than flexibility, and provide users the opportunity to opt-in to additional complexity if they have specific needs or wish to further customize their experience (such as adding custom CSS or modifying the default layout). It should also look great, but that goes without saying.
Interested in contributing to Architect? We'd love your help. Architect is an open source project, built one contribution at a time by users like you. See the CONTRIBUTING file for instructions on how to contribute.
If you'd like to preview the theme locally (for example, in the process of proposing a change):
git clone https://github.com/pages-themes/architect
)cd
into the theme's directoryscript/bootstrap
to install the necessary dependenciesbundle exec jekyll serve
to start the preview serverlocalhost:4000
in your browser to preview the themeThe theme contains a minimal test suite, to ensure a site with the theme would build successfully. To run the tests, simply run script/cibuild
. You'll need to run script/bootstrap
once before the test script will work.
Author: Pages-themes
Source Code: https://github.com/pages-themes/architect
License: CC0-1.0 license
1667449080
Nebular is a customizable Angular 10 UI Library with a focus on beautiful design and ability to adapt it to your brand easily. It comes with 4 stunning visual themes, a powerful theming engine with runtime theme switching and support of custom css properties mode. Nebular is based on Eva Design System specifications.
You can install Nebular with Angular CLI:
ng add @nebular/theme
Configuration will be done automatically.
If you want to have more control over setup process you can use manual setup guide.
Nebular supports most recent browsers. Browser support list can be found here.
Try low-code internal tool builder for free
Made with :heart: by Akveo team. Follow us on Twitter to get the latest news first! We're always happy to receive your feedback!
Documentation | Stackblitz Template | UI Bakery - Angular UI Builder | Angular templates
Author: Akveo
Source Code: https://github.com/akveo/nebular
License: MIT license