mirror of
https://github.com/MeowLynxSea/Uptimeow.git
synced 2025-07-09 02:44:37 +00:00
first commit :)
This commit is contained in:
parent
ffac10e5d6
commit
a442f8850f
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"Codegeex.RepoIndex": true
|
||||
}
|
452
api/handler.go
Normal file
452
api/handler.go
Normal file
@ -0,0 +1,452 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"github.com/MeowLynxSea/Uptimeow/config"
|
||||
"github.com/MeowLynxSea/Uptimeow/internal/rcon"
|
||||
_ "github.com/glebarez/sqlite"
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/robfig/cron/v3"
|
||||
"github.com/wanghuiyt/ding"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var GlobalConfig config.ConfigData
|
||||
var saveCron = cron.New()
|
||||
var isOnline bool
|
||||
var tps, tps5, tps15 float64
|
||||
var onlinePlayer, maxPlayer int
|
||||
var playerList []string
|
||||
var db *sql.DB
|
||||
var warnLevel int
|
||||
|
||||
const (
|
||||
warnLevelNormal = 0
|
||||
warnLevelWarning = 1
|
||||
warnLevelCritical = 2
|
||||
)
|
||||
|
||||
type ServerData struct {
|
||||
Time time.Time `json:"time"`
|
||||
IsOnline bool `json:"is_online"`
|
||||
Tps float64 `json:"tps"`
|
||||
OnlinePlayer int `json:"online_player"`
|
||||
MaxPlayer int `json:"max_player"`
|
||||
}
|
||||
|
||||
// Response 是发送给WebSocket客户端的响应结构
|
||||
type Response struct {
|
||||
Code int `json:"code"`
|
||||
Data []ServerData `json:"data"`
|
||||
}
|
||||
|
||||
type ServerInfo struct {
|
||||
ServerName string `json:"server_name"`
|
||||
ServerAddress string `json:"server_address"`
|
||||
ServerWebsite string `json:"server_website"`
|
||||
ServerDescription string `json:"server_description"`
|
||||
}
|
||||
|
||||
type DetailedInfo struct {
|
||||
Time time.Time `json:"time"`
|
||||
IsOnline bool `json:"is_online"`
|
||||
Tps float64 `json:"tps"`
|
||||
OnlinePlayer int `json:"online_player"`
|
||||
MaxPlayer int `json:"max_player"`
|
||||
PlayerList string `json:"player_list,omitempty"`
|
||||
}
|
||||
|
||||
func pushDingTalkBot(message string, msgtype string) {
|
||||
if GlobalConfig.Warn.DingTalkBot.Enabled {
|
||||
dingMsger := ding.Webhook{
|
||||
AccessToken: GlobalConfig.Warn.DingTalkBot.AccessToken,
|
||||
Secret: GlobalConfig.Warn.DingTalkBot.Secret,
|
||||
}
|
||||
if GlobalConfig.Warn.DingTalkBot.AtMobile != "" {
|
||||
err := dingMsger.SendMessageText(message, GlobalConfig.Warn.DingTalkBot.AtMobile)
|
||||
if err != nil {
|
||||
log.Println("[ERROR] 钉钉机器人推送失败,原因: ", err)
|
||||
} else {
|
||||
log.Println("[INFO] 钉钉机器人推送[" + msgtype + "]成功")
|
||||
}
|
||||
} else {
|
||||
err := dingMsger.SendMessageText(message)
|
||||
if err != nil {
|
||||
log.Println("[ERROR] 钉钉机器人推送失败,原因: ", err)
|
||||
} else {
|
||||
log.Println("[INFO] 钉钉机器人推送[" + msgtype + "]成功")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
GlobalConfig = config.Load()
|
||||
warnLevel = 0
|
||||
|
||||
pushDingTalkBot("【成功】Uptimeow 监控已上线", "成功消息")
|
||||
|
||||
db, err := sql.Open("sqlite", "data/history.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// 确保数据库连接是有效的
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// 创建表data
|
||||
createTableSQL := `
|
||||
CREATE TABLE IF NOT EXISTS data (
|
||||
time_index DATETIME NOT NULL PRIMARY KEY,
|
||||
online BOOLEAN,
|
||||
tps INTEGER,
|
||||
online_player INTEGER,
|
||||
max_player INTEGER,
|
||||
player_list TEXT
|
||||
);
|
||||
`
|
||||
_, err = db.Exec(createTableSQL)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
saveCron.AddFunc("@every 10s", func() {
|
||||
currentTime := time.Now()
|
||||
// log.Println("[DEBUG] Saving data to database")
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
}
|
||||
if !isOnline {
|
||||
_, err = db.Exec("INSERT INTO data (time_index, online, tps, online_player, max_player, player_list) VALUES (?, ?, ?, ?, ?, ?)", currentTime.Format("2006-01-02 15:04:05"), 0, tps, 0, 0, "")
|
||||
} else {
|
||||
if tps != 0 {
|
||||
_, err = db.Exec("INSERT INTO data (time_index, online, tps, online_player, max_player, player_list) VALUES (?, ?, ?, ?, ?, ?)", currentTime.Format("2006-01-02 15:04:05"), isOnline, tps, onlinePlayer, maxPlayer, strings.Join(playerList, ","))
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
log.Println("[ERROR] Failed to insert data into database:] ", err)
|
||||
}
|
||||
|
||||
switch warnLevel {
|
||||
case warnLevelNormal:
|
||||
if !isOnline && GlobalConfig.Warn.EnabledType.Offline {
|
||||
warnLevel = warnLevelCritical
|
||||
pushDingTalkBot("【紧急】服务器离线\n经监测,服务器已离线,请尽快处理\n时间:"+currentTime.Format("2006-01-02 15:04:05"), "异常告警")
|
||||
break
|
||||
}
|
||||
if tps < GlobalConfig.Warn.EnabledType.LowTps.Threold && GlobalConfig.Warn.EnabledType.LowTps.Enabled && tps != 0 {
|
||||
warnLevel = warnLevelWarning
|
||||
pushDingTalkBot("【警告】TPS过低报警\n服务器TPS低于设定值("+strconv.FormatFloat(GlobalConfig.Warn.EnabledType.LowTps.Threold, 'f', 2, 64)+")\n当前TPS:"+strconv.FormatFloat(tps, 'f', 2, 64)+"\n时间:"+currentTime.Format("2006-01-02 15:04:05"), "异常告警")
|
||||
}
|
||||
case warnLevelWarning:
|
||||
if !isOnline && GlobalConfig.Warn.EnabledType.Offline {
|
||||
warnLevel = warnLevelCritical
|
||||
pushDingTalkBot("【紧急】服务器离线\n经监测,服务器已离线,请尽快处理\n时间:"+currentTime.Format("2006-01-02 15:04:05"), "异常告警")
|
||||
break
|
||||
}
|
||||
if tps >= GlobalConfig.Warn.EnabledType.LowTps.Threold && GlobalConfig.Warn.EnabledType.LowTps.Enabled {
|
||||
warnLevel = warnLevelNormal
|
||||
pushDingTalkBot("【恢复】服务器TPS恢复正常\n时间:"+currentTime.Format("2006-01-02 15:04:05"), "成功消息")
|
||||
}
|
||||
case warnLevelCritical:
|
||||
if isOnline && GlobalConfig.Warn.EnabledType.Offline {
|
||||
warnLevel = warnLevelNormal
|
||||
pushDingTalkBot("【恢复】服务器已恢复在线\n时间:"+currentTime.Format("2006-01-02 15:04:05"), "成功消息")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
saveCron.Start()
|
||||
|
||||
isOnline = false
|
||||
go rcon.InitRcon(callback)
|
||||
}
|
||||
|
||||
func toInt(value interface{}) int {
|
||||
switch v := value.(type) {
|
||||
case int:
|
||||
return v
|
||||
case int64:
|
||||
return int(v)
|
||||
case float64:
|
||||
return int(v)
|
||||
case string:
|
||||
i, _ := strconv.Atoi(v)
|
||||
return i
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
var upgrader = websocket.Upgrader{
|
||||
ReadBufferSize: 1024,
|
||||
WriteBufferSize: 1024,
|
||||
CheckOrigin: func(r *http.Request) bool {
|
||||
// 允许所有跨域请求,或者你可以在这里添加更复杂的验证逻辑
|
||||
return true
|
||||
},
|
||||
}
|
||||
|
||||
// WebSocketHandler 处理WebSocket连接
|
||||
func WebSocketHandler(w http.ResponseWriter, r *http.Request) {
|
||||
localDB, err := sql.Open("sqlite", "data/history.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer localDB.Close()
|
||||
|
||||
// 确保数据库连接是有效的
|
||||
err = localDB.Ping()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// 将HTTP连接升级为WebSocket连接
|
||||
conn, err := upgrader.Upgrade(w, r, nil)
|
||||
if err != nil {
|
||||
log.Println("Error upgrading to WebSocket:", err)
|
||||
return
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
// 在这里实现WebSocket的消息处理逻辑
|
||||
for {
|
||||
_, message, err := conn.ReadMessage()
|
||||
if err != nil {
|
||||
log.Println("Error reading message:", err)
|
||||
break
|
||||
}
|
||||
|
||||
var resp Response
|
||||
clientTimeFormat := "2006/01/02 15:04:05"
|
||||
switch {
|
||||
case string(message)[:13] == "earlier than ":
|
||||
// 解析时间并获取数据
|
||||
// log.Println("Received earlier than request")
|
||||
reqTime, err := time.Parse(clientTimeFormat, strings.TrimPrefix(string(message), "earlier than "))
|
||||
if err != nil {
|
||||
log.Println("Error parsing time:", err)
|
||||
continue
|
||||
}
|
||||
resp.Data, err = getEarlierData(localDB, reqTime)
|
||||
if err != nil {
|
||||
log.Println("Error getting data from database:", err)
|
||||
continue
|
||||
}
|
||||
case string(message)[:11] == "later than ":
|
||||
// 解析时间并获取数据
|
||||
// log.Println("Received later than request")
|
||||
reqTime, err := time.Parse(clientTimeFormat, strings.TrimPrefix(string(message), "later than "))
|
||||
if err != nil {
|
||||
log.Println("Error parsing time:", err)
|
||||
continue
|
||||
}
|
||||
resp.Data, err = getLaterData(localDB, reqTime)
|
||||
if err != nil {
|
||||
log.Println("Error getting data from database:", err)
|
||||
continue
|
||||
}
|
||||
default:
|
||||
log.Println("Received unknown command " + string(message))
|
||||
continue
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Println("Error getting data from database:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
resp.Code = 200
|
||||
// 序列化数据为JSON
|
||||
jsonResp, err := json.Marshal(resp)
|
||||
if err != nil {
|
||||
log.Println("Error marshaling response:", err)
|
||||
continue
|
||||
}
|
||||
|
||||
// 发送数据给客户端
|
||||
if err := conn.WriteMessage(websocket.TextMessage, jsonResp); err != nil {
|
||||
log.Println("Error writing message:", err)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getLaterData(database *sql.DB, t time.Time) ([]ServerData, error) {
|
||||
dbTime := t.Format("2006-01-02 15:04:05")
|
||||
query := `SELECT time_index, online, tps, online_player, max_player
|
||||
FROM data WHERE time_index > ? ORDER BY time_index ASC`
|
||||
rows, err := database.Query(query, dbTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var data []ServerData
|
||||
for rows.Next() {
|
||||
var sd ServerData
|
||||
if err := rows.Scan(&sd.Time, &sd.IsOnline, &sd.Tps, &sd.OnlinePlayer, &sd.MaxPlayer); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data = append(data, sd)
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func getEarlierData(database *sql.DB, t time.Time) ([]ServerData, error) {
|
||||
dbTime := t.Format("2006-01-02 15:04:05")
|
||||
query := `SELECT time_index, online, tps, online_player, max_player
|
||||
FROM data WHERE time_index < ? ORDER BY time_index DESC LIMIT 60`
|
||||
rows, err := database.Query(query, dbTime)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var data []ServerData
|
||||
for rows.Next() {
|
||||
var sd ServerData
|
||||
if err := rows.Scan(&sd.Time, &sd.IsOnline, &sd.Tps, &sd.OnlinePlayer, &sd.MaxPlayer); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
data = append(data, sd)
|
||||
}
|
||||
reverse(data)
|
||||
return data, nil
|
||||
}
|
||||
|
||||
func reverse(slice []ServerData) {
|
||||
last := len(slice) - 1
|
||||
for i := 0; i < len(slice)/2; i++ {
|
||||
slice[i], slice[last-i] = slice[last-i], slice[i]
|
||||
}
|
||||
}
|
||||
|
||||
func APIHandler(w http.ResponseWriter, r *http.Request) {
|
||||
// 设置响应内容类型为JSON
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
|
||||
// 解析请求参数
|
||||
queryParams := r.URL.Query()
|
||||
requestType := queryParams.Get("type")
|
||||
|
||||
// 检查请求类型是否为 server_info
|
||||
switch requestType {
|
||||
case "server_info":
|
||||
// 准备要返回的数据
|
||||
serverInfo := ServerInfo{
|
||||
ServerName: GlobalConfig.ServerInfo.Name,
|
||||
ServerAddress: GlobalConfig.ServerInfo.Address,
|
||||
ServerWebsite: GlobalConfig.ServerInfo.Website,
|
||||
ServerDescription: GlobalConfig.ServerInfo.Description,
|
||||
}
|
||||
|
||||
// 创建响应结构
|
||||
response := struct {
|
||||
Code int `json:"code"`
|
||||
Data ServerInfo `json:"data"`
|
||||
}{
|
||||
Code: 200,
|
||||
Data: serverInfo,
|
||||
}
|
||||
|
||||
// 将响应结构序列化为JSON并写入响应体
|
||||
if err := json.NewEncoder(w).Encode(response); err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
case "detailed_info":
|
||||
clientTimeFormat := "2006/01/02 15:04:05"
|
||||
t, err := time.Parse(clientTimeFormat, queryParams.Get("time"))
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
dbTime := t.Format("2006-01-02 15:04:05")
|
||||
|
||||
localDB, err := sql.Open("sqlite", "data/history.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer localDB.Close()
|
||||
query := `SELECT time_index, online, tps, online_player, max_player, player_list
|
||||
FROM data WHERE time_index > ? ORDER BY time_index ASC`
|
||||
rows, err := localDB.Query(query, dbTime)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var data []DetailedInfo
|
||||
for rows.Next() {
|
||||
var sd DetailedInfo
|
||||
var playerList string
|
||||
if err := rows.Scan(&sd.Time, &sd.IsOnline, &sd.Tps, &sd.OnlinePlayer, &sd.MaxPlayer, &playerList); err != nil {
|
||||
return
|
||||
}
|
||||
sd.PlayerList = playerList
|
||||
data = append(data, sd)
|
||||
}
|
||||
// 创建响应结构
|
||||
response := struct {
|
||||
Code int `json:"code"`
|
||||
Data DetailedInfo `json:"data"`
|
||||
}{
|
||||
Code: 200,
|
||||
Data: data[0],
|
||||
}
|
||||
|
||||
// 将响应结构序列化为JSON并写入响应体
|
||||
if err := json.NewEncoder(w).Encode(response); err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
default:
|
||||
http.Error(w, "Invalid request type", http.StatusBadRequest)
|
||||
}
|
||||
}
|
||||
|
||||
func callback(data string) {
|
||||
// log.Println("[DEBUG] Receive callback data: " + data)
|
||||
|
||||
var jsonData map[string]interface{}
|
||||
err := json.Unmarshal([]byte(data), &jsonData)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
switch toInt(jsonData["type"]) {
|
||||
case rcon.DataType_connection_success:
|
||||
isOnline = true
|
||||
log.Println("[INFO] RCON connection success")
|
||||
case rcon.DataType_connection_error:
|
||||
isOnline = false
|
||||
tps, tps5, tps15, onlinePlayer, maxPlayer, playerList = 0, 0, 0, 0, 0, []string{}
|
||||
log.Println("[ERROR] RCON connection error")
|
||||
case rcon.DataType_execution_error:
|
||||
isOnline = false
|
||||
tps, tps5, tps15, onlinePlayer, maxPlayer, playerList = 0, 0, 0, 0, 0, []string{}
|
||||
log.Println("[ERROR] RCON execution error")
|
||||
case rcon.DataType_data_tps:
|
||||
log.Println("[DEBUG] TPS: " + strconv.FormatFloat(jsonData["data"].(map[string]interface{})["l1m"].(float64), 'f', -1, 64))
|
||||
tps = jsonData["data"].(map[string]interface{})["l1m"].(float64)
|
||||
tps5 = jsonData["data"].(map[string]interface{})["l5m"].(float64)
|
||||
tps15 = jsonData["data"].(map[string]interface{})["l15m"].(float64)
|
||||
case rcon.DataType_data_list:
|
||||
log.Println("[DEBUG] Player online: " + strconv.FormatFloat(jsonData["data"].(map[string]interface{})["online_player"].(float64), 'f', -1, 64) + "/" + strconv.FormatFloat(jsonData["data"].(map[string]interface{})["max_player"].(float64), 'f', -1, 64))
|
||||
onlinePlayer = int(jsonData["data"].(map[string]interface{})["online_player"].(float64))
|
||||
maxPlayer = int(jsonData["data"].(map[string]interface{})["max_player"].(float64))
|
||||
//read player list
|
||||
playerList = []string{}
|
||||
for _, player := range jsonData["data"].(map[string]interface{})["player_list"].([]interface{}) {
|
||||
playerList = append(playerList, player.(string))
|
||||
}
|
||||
}
|
||||
}
|
27
config.yml
Normal file
27
config.yml
Normal file
@ -0,0 +1,27 @@
|
||||
web:
|
||||
host: "localhost"
|
||||
port: 25565
|
||||
|
||||
rcon:
|
||||
host: "localhost"
|
||||
port: 25575
|
||||
password: "password"
|
||||
|
||||
server_info:
|
||||
name: "Demo"
|
||||
address: "demo.meowdream.cn"
|
||||
website: "https://uptimeow.meowdream.cn"
|
||||
description: "Just a demo :)"
|
||||
|
||||
warn:
|
||||
enabled: true
|
||||
dingtalkBot:
|
||||
enabled: true
|
||||
accessToken: "xxx"
|
||||
secret: "xxx"
|
||||
atMobile: "xxx"
|
||||
enabledType:
|
||||
lowTps:
|
||||
enabled: true
|
||||
threshold: 19.0
|
||||
offline: true
|
75
config/config.go
Normal file
75
config/config.go
Normal file
@ -0,0 +1,75 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"gopkg.in/yaml.v3"
|
||||
"log"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type ConfigData struct {
|
||||
Web struct {
|
||||
Host string `yaml:"host"`
|
||||
Port int `yaml:"port"`
|
||||
} `yaml:"web"`
|
||||
Rcon struct {
|
||||
Host string `yaml:"host"`
|
||||
Port int `yaml:"port"`
|
||||
Password string `yaml:"password"`
|
||||
} `yaml:"rcon"`
|
||||
ServerInfo struct {
|
||||
Name string `yaml:"name"`
|
||||
Address string `yaml:"address"`
|
||||
Website string `yaml:"website"`
|
||||
Description string `yaml:"description"`
|
||||
} `yaml:"server_info"`
|
||||
Warn struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
DingTalkBot struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
AccessToken string `yaml:"accessToken"`
|
||||
Secret string `yaml:"secret"`
|
||||
AtMobile string `yaml:"atMobile"`
|
||||
} `yaml:"dingtalkBot"`
|
||||
EnabledType struct {
|
||||
LowTps struct {
|
||||
Enabled bool `yaml:"enabled"`
|
||||
Threold float64 `yaml:"threshold"`
|
||||
} `yaml:"lowTps"`
|
||||
Offline bool `yaml:"offline"`
|
||||
} `yaml:"enabledType"`
|
||||
}
|
||||
}
|
||||
|
||||
var config ConfigData
|
||||
var once sync.Once
|
||||
|
||||
func Load() ConfigData {
|
||||
once.Do(func() {
|
||||
// 读取YAML文件
|
||||
data, err := os.ReadFile("config.yml")
|
||||
if err != nil {
|
||||
log.Fatalln("Error reading YAML file:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 解析YAML数据到config结构体
|
||||
err = yaml.Unmarshal(data, &config)
|
||||
if err != nil {
|
||||
log.Fatalln("Error parsing YAML data:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 设置缺省值
|
||||
if config.Web.Port == 0 {
|
||||
log.Println("Port not defined in config, using 80 as default...")
|
||||
config.Web.Port = 80 // 默认端口
|
||||
}
|
||||
if config.Web.Host == "" {
|
||||
log.Println("Host not defined in config, using 0.0.0.0 as default...")
|
||||
config.Web.Host = "0.0.0.0" // 默认主机
|
||||
}
|
||||
})
|
||||
|
||||
return config
|
||||
}
|
BIN
data/history.db
Normal file
BIN
data/history.db
Normal file
Binary file not shown.
26
go.mod
Normal file
26
go.mod
Normal file
@ -0,0 +1,26 @@
|
||||
module github.com/MeowLynxSea/Uptimeow
|
||||
|
||||
go 1.23.1
|
||||
|
||||
require (
|
||||
github.com/Tnze/go-mc v1.18.2 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
github.com/glebarez/go-sqlite v1.21.2 // indirect
|
||||
github.com/glebarez/sqlite v1.11.0 // indirect
|
||||
github.com/google/uuid v1.3.0 // indirect
|
||||
github.com/gorilla/websocket v1.5.3 // indirect
|
||||
github.com/jinzhu/gorm v1.9.16 // indirect
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jinzhu/now v1.1.5 // indirect
|
||||
github.com/mattn/go-isatty v0.0.17 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||
github.com/robfig/cron/v3 v3.0.1 // indirect
|
||||
github.com/wanghuiyt/ding v0.0.2 // indirect
|
||||
golang.org/x/sys v0.7.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
gorm.io/gorm v1.25.7 // indirect
|
||||
modernc.org/libc v1.22.5 // indirect
|
||||
modernc.org/mathutil v1.5.0 // indirect
|
||||
modernc.org/memory v1.5.0 // indirect
|
||||
modernc.org/sqlite v1.23.1 // indirect
|
||||
)
|
67
go.sum
Normal file
67
go.sum
Normal file
@ -0,0 +1,67 @@
|
||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||
github.com/Tnze/go-mc v1.18.2 h1:75dTJ0dJNI4V/7iG7Ze1pWkDmE9D02OQe6RfEZV0FBE=
|
||||
github.com/Tnze/go-mc v1.18.2/go.mod h1:DyB0mWjox4fSiOdShzh7yx4nzx7q6AXUKzlXnT+iCTo=
|
||||
github.com/Tnze/go-mc v1.20.2 h1:arHCE/WxLCxY73C/4ZNLdOymRYtdwoXE05ohB7HVN6Q=
|
||||
github.com/Tnze/go-mc v1.20.2/go.mod h1:geoRj2HsXSkB3FJBuhr7wCzXegRlzWsVXd7h7jiJ6aQ=
|
||||
github.com/Tnze/go-mc v1.20.3-0.20240907175330-9a1f5431370e h1:1kpZRcut6hymfTvCAZteOW4an/vwMyi9NNeDh0V/MDY=
|
||||
github.com/Tnze/go-mc v1.20.3-0.20240907175330-9a1f5431370e/go.mod h1:vp949nHNUK5KVwSuadpN1vp7c1zvkPEniM08PQv1FcY=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||
github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo=
|
||||
github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k=
|
||||
github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw=
|
||||
github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o=
|
||||
github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
|
||||
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||
github.com/wanghuiyt/ding v0.0.2 h1:6ZISlgCSy6MVeaFR8kAdniALMRqd56GyO9LlmYdTw/s=
|
||||
github.com/wanghuiyt/ding v0.0.2/go.mod h1:T1vPz74YMmGCBVKZzVsen/YAYRZ2bvBYXldUyD7Y4vc=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
|
||||
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A=
|
||||
gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
|
||||
modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE=
|
||||
modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY=
|
||||
modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ=
|
||||
modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
|
||||
modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds=
|
||||
modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
|
||||
modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM=
|
||||
modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk=
|
40
internal/bot/bot.go
Normal file
40
internal/bot/bot.go
Normal file
@ -0,0 +1,40 @@
|
||||
package bot
|
||||
|
||||
import (
|
||||
"github.com/Tnze/go-mc/bot"
|
||||
"github.com/Tnze/go-mc/bot/basic"
|
||||
|
||||
// "encoding/json"
|
||||
"errors"
|
||||
"log"
|
||||
)
|
||||
|
||||
var (
|
||||
client *bot.Client
|
||||
player *basic.Player
|
||||
)
|
||||
|
||||
func InitBot(callback func(data string)) {
|
||||
client = bot.NewClient()
|
||||
|
||||
player = basic.NewPlayer(client, basic.DefaultSettings)
|
||||
|
||||
err := client.JoinServer("localhost:25565")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
log.Println("Login success")
|
||||
|
||||
var perr bot.PacketHandlerError
|
||||
for {
|
||||
if err = client.HandleGame(); err == nil {
|
||||
panic("HandleGame never return nil")
|
||||
}
|
||||
if errors.As(err, &perr) {
|
||||
log.Print(perr)
|
||||
} else {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
269
internal/rcon/rcon.go
Normal file
269
internal/rcon/rcon.go
Normal file
@ -0,0 +1,269 @@
|
||||
package rcon
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"github.com/MeowLynxSea/Uptimeow/config"
|
||||
"github.com/robfig/cron/v3"
|
||||
"log"
|
||||
"net"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Connection struct {
|
||||
conn net.Conn
|
||||
pass string
|
||||
addr string
|
||||
}
|
||||
|
||||
const (
|
||||
DataType_data_list = iota
|
||||
DataType_data_tps
|
||||
DataType_connection_error
|
||||
DataType_connection_success
|
||||
DataType_execution_error
|
||||
)
|
||||
|
||||
var GlobalConfig config.ConfigData
|
||||
var Cron = cron.New()
|
||||
var isRunning bool
|
||||
|
||||
func InitRcon(callback func(data string)) {
|
||||
|
||||
GlobalConfig = config.Load()
|
||||
|
||||
var conn *Connection
|
||||
|
||||
Cron.AddFunc("@every 5s", func() {
|
||||
command := [...]string{"list", "tps"}
|
||||
for _, v := range command {
|
||||
response, err := conn.SendCommand(v)
|
||||
if err != nil {
|
||||
// log.Println("[ERROR] Error executing command:", err)
|
||||
callback("{\"type\": " + strconv.Itoa(DataType_execution_error) + ", \"data\": \"Error executing command: " + err.Error() + "\"}")
|
||||
isRunning = false
|
||||
break
|
||||
} else {
|
||||
switch v {
|
||||
case "list":
|
||||
// 编译正则表达式
|
||||
onlinePlayerRegexp := regexp.MustCompile(`(\d+) of a max of (\d+) players online`)
|
||||
playerListRegexp := regexp.MustCompile(`online: ([^:]+)`)
|
||||
|
||||
// 使用正则表达式提取信息
|
||||
onlinePlayerMatches := onlinePlayerRegexp.FindStringSubmatch(response)
|
||||
playerListMatches := playerListRegexp.FindStringSubmatch(response)
|
||||
|
||||
// 检查是否匹配成功
|
||||
if onlinePlayerMatches != nil {
|
||||
// 提取online_player和max_player
|
||||
onlinePlayer, _ := strconv.Atoi(onlinePlayerMatches[1])
|
||||
maxPlayer, _ := strconv.Atoi(onlinePlayerMatches[2])
|
||||
|
||||
var playerList string
|
||||
if playerListMatches != nil {
|
||||
playerList = playerListMatches[1]
|
||||
}
|
||||
|
||||
// 创建一个结构体来保存数据
|
||||
type PlayerData struct {
|
||||
OnlinePlayer int `json:"online_player"`
|
||||
MaxPlayer int `json:"max_player"`
|
||||
PlayerList []string `json:"player_list"`
|
||||
}
|
||||
|
||||
// 将玩家名字字符串分割成列表
|
||||
playerNames := regexp.MustCompile(`, `).Split(playerList, -1)
|
||||
|
||||
// 实例化结构体并填充数据
|
||||
data := PlayerData{
|
||||
OnlinePlayer: onlinePlayer,
|
||||
MaxPlayer: maxPlayer,
|
||||
PlayerList: playerNames,
|
||||
}
|
||||
|
||||
// 将结构体格式化为JSON
|
||||
jsonData, err := json.MarshalIndent(data, "", " ")
|
||||
if err != nil {
|
||||
log.Println("[ERROR] Error marshalling JSON:", err)
|
||||
}
|
||||
|
||||
callback("{\"type\": " + strconv.Itoa(DataType_data_list) + ", \"data\": " + string(jsonData) + "}")
|
||||
} else {
|
||||
log.Println("[ERROR] Could not extract the required information.")
|
||||
isRunning = false
|
||||
callback("{\"type\": " + strconv.Itoa(DataType_execution_error) + "}")
|
||||
break
|
||||
}
|
||||
case "tps":
|
||||
re := regexp.MustCompile(`§[a-zA-Z](\d+\.\d+|\d+)`)
|
||||
matches := re.FindAllStringSubmatch(response, -1)
|
||||
var numbers []string
|
||||
if len(matches) != 3 {
|
||||
isRunning = false
|
||||
callback("{\"type\": " + strconv.Itoa(DataType_execution_error) + "}")
|
||||
break
|
||||
}
|
||||
for _, match := range matches {
|
||||
if len(match) > 1 {
|
||||
numbers = append(numbers, match[1])
|
||||
}
|
||||
}
|
||||
callback(`{
|
||||
"type": ` + strconv.Itoa(DataType_data_tps) + `,
|
||||
"data": {
|
||||
"l1m": ` + numbers[0] + `,
|
||||
"l5m": ` + numbers[1] + `,
|
||||
"l15m": ` + numbers[2] + `
|
||||
}
|
||||
}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
for {
|
||||
isRunning = true
|
||||
log.Println("[INFO] Connecting to RCON server " + GlobalConfig.Rcon.Host + ":" + strconv.Itoa(GlobalConfig.Rcon.Port) + "...")
|
||||
|
||||
var err error
|
||||
conn, err = NewConnection(GlobalConfig.Rcon.Host+":"+strconv.Itoa(GlobalConfig.Rcon.Port), GlobalConfig.Rcon.Password)
|
||||
if err != nil {
|
||||
callback("{\"type\": " + strconv.Itoa(DataType_connection_error) + ", \"data\": \"Error connecting to RCON server: " + err.Error() + "\"}")
|
||||
isRunning = false
|
||||
}
|
||||
|
||||
if isRunning {
|
||||
callback("{\"type\": " + strconv.Itoa(DataType_connection_success) + "}")
|
||||
Cron.Start()
|
||||
}
|
||||
|
||||
for isRunning {
|
||||
time.Sleep(10 * time.Nanosecond)
|
||||
}
|
||||
|
||||
Cron.Stop()
|
||||
|
||||
log.Println("[INFO] RCON server has disconnected. Trying to reconnect in 1 seconds...")
|
||||
time.Sleep(3 * time.Second)
|
||||
}
|
||||
}
|
||||
|
||||
var uniqueID int32 = 0
|
||||
|
||||
func NewConnection(addr, pass string) (*Connection, error) {
|
||||
uniqueID++
|
||||
conn, err := net.Dial("tcp", addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
c := &Connection{conn: conn, pass: pass, addr: addr}
|
||||
if err := c.auth(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c, nil
|
||||
}
|
||||
|
||||
func (c *Connection) SendCommand(cmd string) (string, error) {
|
||||
err := c.sendCommand(2, []byte(cmd))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
pkg, err := c.readPkg()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(pkg.Body), err
|
||||
}
|
||||
|
||||
func (c *Connection) auth() error {
|
||||
c.sendCommand(3, []byte(c.pass))
|
||||
pkg, err := c.readPkg()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if pkg.Type != 2 || pkg.ID != uniqueID {
|
||||
return errors.New("incorrect password")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Connection) sendCommand(typ int32, body []byte) error {
|
||||
size := int32(4 + 4 + len(body) + 2)
|
||||
uniqueID += 1
|
||||
id := uniqueID
|
||||
|
||||
wtr := binaryReadWriter{ByteOrder: binary.LittleEndian}
|
||||
wtr.Write(size)
|
||||
wtr.Write(id)
|
||||
wtr.Write(typ)
|
||||
wtr.Write(body)
|
||||
wtr.Write([]byte{0x0, 0x0})
|
||||
if wtr.err != nil {
|
||||
return wtr.err
|
||||
}
|
||||
|
||||
c.conn.Write(wtr.buf.Bytes())
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Connection) readPkg() (pkg, error) {
|
||||
const bufSize = 4096
|
||||
b := make([]byte, bufSize)
|
||||
|
||||
// Doesn't handle split messages correctly.
|
||||
read, err := c.conn.Read(b)
|
||||
if err != nil {
|
||||
return pkg{}, err
|
||||
}
|
||||
|
||||
p := pkg{}
|
||||
rdr := binaryReadWriter{ByteOrder: binary.LittleEndian,
|
||||
buf: bytes.NewBuffer(b)}
|
||||
rdr.Read(&p.Size)
|
||||
rdr.Read(&p.ID)
|
||||
rdr.Read(&p.Type)
|
||||
body := [bufSize - 12]byte{}
|
||||
rdr.Read(&body)
|
||||
if rdr.err != nil {
|
||||
return p, rdr.err
|
||||
}
|
||||
p.Body = body[:read-14]
|
||||
return p, nil
|
||||
}
|
||||
|
||||
type pkg struct {
|
||||
Size int32
|
||||
ID int32
|
||||
Type int32
|
||||
Body []byte
|
||||
}
|
||||
|
||||
type binaryReadWriter struct {
|
||||
ByteOrder binary.ByteOrder
|
||||
err error
|
||||
buf *bytes.Buffer
|
||||
}
|
||||
|
||||
func (b *binaryReadWriter) Write(v interface{}) {
|
||||
if b.err != nil {
|
||||
return
|
||||
}
|
||||
if b.buf == nil {
|
||||
b.buf = new(bytes.Buffer)
|
||||
}
|
||||
b.err = binary.Write(b.buf, b.ByteOrder, v)
|
||||
}
|
||||
|
||||
func (b *binaryReadWriter) Read(v interface{}) {
|
||||
if b.err != nil || b.buf == nil {
|
||||
return
|
||||
}
|
||||
b.err = binary.Read(b.buf, b.ByteOrder, v)
|
||||
}
|
26
main.go
Normal file
26
main.go
Normal file
@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/MeowLynxSea/Uptimeow/api"
|
||||
"github.com/MeowLynxSea/Uptimeow/config"
|
||||
"github.com/MeowLynxSea/Uptimeow/web"
|
||||
)
|
||||
|
||||
var GlobalConfig config.ConfigData
|
||||
|
||||
func main() {
|
||||
GlobalConfig = config.Load()
|
||||
|
||||
http.HandleFunc("/ws", api.WebSocketHandler)
|
||||
http.HandleFunc("/api/", api.APIHandler)
|
||||
http.HandleFunc("/", web.IndexHandler)
|
||||
|
||||
log.Println("[INFO] Starting server on " + GlobalConfig.Web.Host + ":" + strconv.Itoa(GlobalConfig.Web.Port) + "...")
|
||||
if err := http.ListenAndServe(GlobalConfig.Web.Host+":"+strconv.Itoa(GlobalConfig.Web.Port), nil); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
66
public/.preload
Normal file
66
public/.preload
Normal file
@ -0,0 +1,66 @@
|
||||
local su=require"sqlutil" -- Load SQL utility library
|
||||
|
||||
local dbname=ba.openio"home":realpath"/data/database.sqlite.db"
|
||||
|
||||
login = {}
|
||||
|
||||
if not su.exist(dbname) then
|
||||
-- Create a database environment object and open data/file.sqlite.db
|
||||
local env,conn = su.open"database"
|
||||
-- 创建一个数据库,其中包含用户的mail,name,password,created_at,salt,balance,is_admin
|
||||
trace("Creating DB...")
|
||||
conn:execute"CREATE TABLE IF NOT EXISTS users (token TEXT PRIMARY KEY,name TEXT,avatar_url TEXT,balance INTEGER);"
|
||||
conn:execute"CREATE TABLE IF NOT EXISTS histroy (token TEXT PRIMARY KEY,action_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,delta INTEGER,type TEXT,balance INTEGER,total_amount INTEGER,show_amount INTEGER,remark TEXT,custom_order_id TEXT,out_trade_no TEXT,user_id TEXT);"
|
||||
conn:execute"CREATE INDEX IF NOT EXISTS idx_history_token ON histroy(token);"
|
||||
conn:execute"CREATE INDEX IF NOT EXISTS idx_history_action_time ON histroy(action_time);"
|
||||
trace("DB created")
|
||||
su.close(env,conn)
|
||||
else
|
||||
trace("DB already exists")
|
||||
end
|
||||
|
||||
local env = luasql.sqlite()
|
||||
local conn = assert(env:connect(dbname)) -- DB connection used for write operations
|
||||
assert(conn:setautocommit"EXCLUSIVE") -- EXCLUSIVE for first DB operation only
|
||||
conn:setbusytimeout(2000)
|
||||
function onunload() -- auto run when app terminates
|
||||
trace"Closing DB"
|
||||
conn:close()
|
||||
env:close()
|
||||
end
|
||||
|
||||
-- Function used for committing and preparing next transaction for EXCLUSIVE use.
|
||||
-- The function is used exclusively by dbexec below.
|
||||
local function commit()
|
||||
while true do
|
||||
local ok, err = conn:commit"IMMEDIATE" -- Commit and prepare for IMMEDIATE transaction type
|
||||
if ok then break end
|
||||
if err ~= "BUSY" then
|
||||
trace("ERROR: commit failed on exclusive connection:",err)
|
||||
break
|
||||
end
|
||||
trace"BUSY writing, but we will try again"
|
||||
end
|
||||
end
|
||||
commit() -- the two conn:exec above (in EXCLUSIVE mode)
|
||||
|
||||
-- Create the thread and the function used for inserting callback
|
||||
-- functions into the thread queue.
|
||||
local dbthread=ba.thread.create()
|
||||
function dbexec(doit) -- used by index.lsp
|
||||
dbthread:run(doit) -- queue the doit function in index.lsp
|
||||
dbthread:run(commit) -- queue commit
|
||||
end
|
||||
|
||||
-- Opens/creates a new DB 'read' connection object -- i.e. should only
|
||||
-- be used for read operations
|
||||
function openconn()
|
||||
local conn = assert(env:connect(dbname))
|
||||
if conn then conn:setbusytimeout(2000) end
|
||||
return conn,env
|
||||
end
|
||||
|
||||
-- Returns our persistent DB write connection object
|
||||
function getexconn()
|
||||
return conn,env
|
||||
end
|
4
public/.vscode/settings.json
vendored
Normal file
4
public/.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"Codegeex.RepoIndex": true,
|
||||
"Codegeex.CommitMessageStyle": "Default"
|
||||
}
|
102
public/LICENSE
Normal file
102
public/LICENSE
Normal file
@ -0,0 +1,102 @@
|
||||
Reciprocal Public License 1.5 (RPL1.5)
|
||||
|
||||
Version 1.5, July 15, 2007
|
||||
|
||||
Copyright (C) 2001-2007 Technical Pursuit Inc., All Rights Reserved.
|
||||
|
||||
PREAMBLE
|
||||
|
||||
The Reciprocal Public License (RPL) is based on the concept of reciprocity or, if you prefer, fairness.
|
||||
|
||||
In short, this license grew out of a desire to close loopholes in previous open source licenses, loopholes that allowed parties to acquire open source software and derive financial benefit from it without having to release their improvements or derivatives to the community which enabled them. This occurred any time an entity did not release their application to a "third party".
|
||||
|
||||
While there is a certain freedom in this model of licensing, it struck the authors of the RPL as being unfair to the open source community at large and to the original authors of the works in particular. After all, bug fixes, extensions, and meaningful and valuable derivatives were not consistently finding their way back into the community where they could fuel further, and faster, growth and expansion of the overall open source software base.
|
||||
|
||||
While you should clearly read and understand the entire license, the essence of the RPL is found in two definitions: "Deploy" and "Required Components".
|
||||
|
||||
Regarding deployment, under the RPL your changes, bug fixes, extensions, etc. must be made available to the open source community at large when you Deploy in any form -- either internally or to an outside party. Once you start running the software you have to start sharing the software.
|
||||
|
||||
Further, under the RPL all components you author including schemas, scripts, source code, etc. -- regardless of whether they're compiled into a single binary or used as two halves of client/server application -- must be shared. You have to share the whole pie, not an isolated slice of it.
|
||||
|
||||
In addition to these goals, the RPL was authored to meet the requirements of the Open Source Definition as maintained by the Open Source Initiative (OSI).
|
||||
|
||||
The specific terms and conditions of the license are defined in the remainder of this document.
|
||||
|
||||
LICENSE TERMS
|
||||
|
||||
1.0 General; Applicability & Definitions. This Reciprocal Public License Version 1.5 ("License") applies to any programs or other works as well as any and all updates or maintenance releases of said programs or works ("Software") not already covered by this License which the Software copyright holder ("Licensor") makes available containing a License Notice (hereinafter defined) from the Licensor specifying or allowing use or distribution under the terms of this License. As used in this License:
|
||||
1.1 "Contributor" means any person or entity who created or contributed to the creation of an Extension.
|
||||
1.2 "Deploy" means to use, Serve, sublicense or distribute Licensed Software other than for Your internal Research and/or Personal Use, and includes without limitation, any and all internal use or distribution of Licensed Software within Your business or organization other than for Research and/or Personal Use, as well as direct or indirect sublicensing or distribution of Licensed Software by You to any third party in any form or manner.
|
||||
1.3 "Derivative Works" as used in this License is defined under U.S. copyright law.
|
||||
1.4 "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data such as download from an FTP server or web site, where such mechanism is publicly accessible.
|
||||
1.5 "Extensions" means any Modifications, Derivative Works, or Required Components as those terms are defined in this License.
|
||||
1.6 "License" means this Reciprocal Public License.
|
||||
1.7 "License Notice" means any notice contained in EXHIBIT A.
|
||||
1.8 "Licensed Software" means any Software licensed pursuant to this License. Licensed Software also includes all previous Extensions from any Contributor that You receive.
|
||||
1.9 "Licensor" means the copyright holder of any Software previously not covered by this License who releases the Software under the terms of this License.
|
||||
1.10 "Modifications" means any additions to or deletions from the substance or structure of (i) a file or other storage containing Licensed Software, or (ii) any new file or storage that contains any part of Licensed Software, or (iii) any file or storage which replaces or otherwise alters the original functionality of Licensed Software at runtime.
|
||||
1.11 "Personal Use" means use of Licensed Software by an individual solely for his or her personal, private and non-commercial purposes. An individual's use of Licensed Software in his or her capacity as an officer, employee, member, independent contractor or agent of a corporation, business or organization (commercial or non-commercial) does not qualify as Personal Use.
|
||||
1.12 "Required Components" means any text, programs, scripts, schema, interface definitions, control files, or other works created by You which are required by a third party of average skill to successfully install and run Licensed Software containing Your Modifications, or to install and run Your Derivative Works.
|
||||
1.13 "Research" means investigation or experimentation for the purpose of understanding the nature and limits of the Licensed Software and its potential uses.
|
||||
1.14 "Serve" means to deliver Licensed Software and/or Your Extensions by means of a computer network to one or more computers for purposes of execution of Licensed Software and/or Your Extensions.
|
||||
1.15 "Software" means any computer programs or other works as well as any updates or maintenance releases of those programs or works which are distributed publicly by Licensor.
|
||||
1.16 "Source Code" means the preferred form for making modifications to the Licensed Software and/or Your Extensions, including all modules contained therein, plus any associated text, interface definition files, scripts used to control compilation and installation of an executable program or other components required by a third party of average skill to build a running version of the Licensed Software or Your Extensions.
|
||||
1.17 "User-Visible Attribution Notice" means any notice contained in EXHIBIT B.
|
||||
1.18 "You" or "Your" means an individual or a legal entity exercising rights under this License. For legal entities, "You" or "Your" includes any entity which controls, is controlled by, or is under common control with, You, where "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
|
||||
2.0 Acceptance Of License. You are not required to accept this License since you have not signed it, however nothing else grants you permission to use, copy, distribute, modify, or create derivatives of either the Software or any Extensions created by a Contributor. These actions are prohibited by law if you do not accept this License. Therefore, by performing any of these actions You indicate Your acceptance of this License and Your agreement to be bound by all its terms and conditions. IF YOU DO NOT AGREE WITH ALL THE TERMS AND CONDITIONS OF THIS LICENSE DO NOT USE, MODIFY, CREATE DERIVATIVES, OR DISTRIBUTE THE SOFTWARE. IF IT IS IMPOSSIBLE FOR YOU TO COMPLY WITH ALL THE TERMS AND CONDITIONS OF THIS LICENSE THEN YOU CAN NOT USE, MODIFY, CREATE DERIVATIVES, OR DISTRIBUTE THE SOFTWARE.
|
||||
3.0 Grant of License From Licensor. Subject to the terms and conditions of this License, Licensor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to Licensor's intellectual property rights, and any third party intellectual property claims derived from the Licensed Software under this License, to do the following:
|
||||
3.1 Use, reproduce, modify, display, perform, sublicense and distribute Licensed Software and Your Extensions in both Source Code form or as an executable program.
|
||||
3.2 Create Derivative Works (as that term is defined under U.S. copyright law) of Licensed Software by adding to or deleting from the substance or structure of said Licensed Software.
|
||||
3.3 Under claims of patents now or hereafter owned or controlled by Licensor, to make, use, have made, and/or otherwise dispose of Licensed Software or portions thereof, but solely to the extent that any such claim is necessary to enable You to make, use, have made, and/or otherwise dispose of Licensed Software or portions thereof.
|
||||
3.4 Licensor reserves the right to release new versions of the Software with different features, specifications, capabilities, functions, licensing terms, general availability or other characteristics. Title, ownership rights, and intellectual property rights in and to the Licensed Software shall remain in Licensor and/or its Contributors.
|
||||
4.0 Grant of License From Contributor. By application of the provisions in Section 6 below, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to said Contributor's intellectual property rights, and any third party intellectual property claims derived from the Licensed Software under this License, to do the following:
|
||||
4.1 Use, reproduce, modify, display, perform, sublicense and distribute any Extensions Deployed by such Contributor or portions thereof, in both Source Code form or as an executable program, either on an unmodified basis or as part of Derivative Works.
|
||||
4.2 Under claims of patents now or hereafter owned or controlled by Contributor, to make, use, have made, and/or otherwise dispose of Extensions or portions thereof, but solely to the extent that any such claim is necessary to enable You to make, use, have made, and/or otherwise dispose of Licensed Software or portions thereof.
|
||||
5.0 Exclusions From License Grant. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor or any Contributor except as expressly stated herein. Except as expressly stated in Sections 3 and 4, no other patent rights, express or implied, are granted herein. Your Extensions may require additional patent licenses from Licensor or Contributors which each may grant in its sole discretion. No right is granted to the trademarks of Licensor or any Contributor even if such marks are included in the Licensed Software. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any code that Licensor otherwise would have a right to license.
|
||||
5.1 You expressly acknowledge and agree that although Licensor and each Contributor grants the licenses to their respective portions of the Licensed Software set forth herein, no assurances are provided by Licensor or any Contributor that the Licensed Software does not infringe the patent or other intellectual property rights of any other entity. Licensor and each Contributor disclaim any liability to You for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, You hereby assume sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow You to distribute the Licensed Software, it is Your responsibility to acquire that license before distributing the Licensed Software.
|
||||
6.0 Your Obligations And Grants. In consideration of, and as an express condition to, the licenses granted to You under this License You hereby agree that any Modifications, Derivative Works, or Required Components (collectively Extensions) that You create or to which You contribute are governed by the terms of this License including, without limitation, Section 4. Any Extensions that You create or to which You contribute must be Deployed under the terms of this License or a future version of this License released under Section 7. You hereby grant to Licensor and all third parties a world-wide, non-exclusive, royalty-free license under those intellectual property rights You own or control to use, reproduce, display, perform, modify, create derivatives, sublicense, and distribute Licensed Software, in any form. Any Extensions You make and Deploy must have a distinct title so as to readily tell any subsequent user or Contributor that the Extensions are by You. You must include a copy of this License or directions on how to obtain a copy with every copy of the Extensions You distribute. You agree not to offer or impose any terms on any Source Code or executable version of the Licensed Software, or its Extensions that alter or restrict the applicable version of this License or the recipients' rights hereunder.
|
||||
6.1 Availability of Source Code. You must make available, under the terms of this License, the Source Code of any Extensions that You Deploy, via an Electronic Distribution Mechanism. The Source Code for any version that You Deploy must be made available within one (1) month of when you Deploy and must remain available for no less than twelve (12) months after the date You cease to Deploy. You are responsible for ensuring that the Source Code to each version You Deploy remains available even if the Electronic Distribution Mechanism is maintained by a third party. You may not charge a fee for any copy of the Source Code distributed under this Section in excess of Your actual cost of duplication and distribution of said copy.
|
||||
6.2 Description of Modifications. You must cause any Modifications that You create or to which You contribute to be documented in the Source Code, clearly describing the additions, changes or deletions You made. You must include a prominent statement that the Modifications are derived, directly or indirectly, from the Licensed Software and include the names of the Licensor and any Contributor to the Licensed Software in (i) the Source Code and (ii) in any notice displayed by the Licensed Software You distribute or in related documentation in which You describe the origin or ownership of the Licensed Software. You may not modify or delete any pre-existing copyright notices, change notices or License text in the Licensed Software without written permission of the respective Licensor or Contributor.
|
||||
6.3 Intellectual Property Matters.
|
||||
a. Third Party Claims. If You have knowledge that a license to a third party's intellectual property right is required to exercise the rights granted by this License, You must include a human-readable file with Your distribution that describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact.
|
||||
b. Contributor APIs. If Your Extensions include an application programming interface ("API") and You have knowledge of patent licenses that are reasonably necessary to implement that API, You must also include this information in a human-readable file supplied with Your distribution.
|
||||
c. Representations. You represent that, except as disclosed pursuant to 6.3(a) above, You believe that any Extensions You distribute are Your original creations and that You have sufficient rights to grant the rights conveyed by this License.
|
||||
6.4 Required Notices.
|
||||
a. License Text. You must duplicate this License or instructions on how to acquire a copy in any documentation You provide along with the Source Code of any Extensions You create or to which You contribute, wherever You describe recipients' rights relating to Licensed Software.
|
||||
b. License Notice. You must duplicate any notice contained in EXHIBIT A (the "License Notice") in each file of the Source Code of any copy You distribute of the Licensed Software and Your Extensions. If You create an Extension, You may add Your name as a Contributor to the Source Code and accompanying documentation along with a description of the contribution. If it is not possible to put the License Notice in a particular Source Code file due to its structure, then You must include such License Notice in a location where a user would be likely to look for such a notice.
|
||||
c. Source Code Availability. You must notify the software community of the availability of Source Code to Your Extensions within one (1) month of the date You initially Deploy and include in such notification a description of the Extensions, and instructions on how to acquire the Source Code. Should such instructions change you must notify the software community of revised instructions within one (1) month of the date of change. You must provide notification by posting to appropriate news groups, mailing lists, weblogs, or other sites where a publicly accessible search engine would reasonably be expected to index your post in relationship to queries regarding the Licensed Software and/or Your Extensions.
|
||||
d. User-Visible Attribution. You must duplicate any notice contained in EXHIBIT B (the "User-Visible Attribution Notice") in each user-visible display of the Licensed Software and Your Extensions which delineates copyright, ownership, or similar attribution information. If You create an Extension, You may add Your name as a Contributor, and add Your attribution notice, as an equally visible and functional element of any User-Visible Attribution Notice content. To ensure proper attribution, You must also include such User-Visible Attribution Notice in at least one location in the Software documentation where a user would be likely to look for such notice.
|
||||
6.5 Additional Terms. You may choose to offer, and charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Licensed Software. However, You may do so only on Your own behalf, and not on behalf of the Licensor or any Contributor except as permitted under other agreements between you and Licensor or Contributor. You must make it clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Licensor and every Contributor for any liability plus attorney fees, costs, and related expenses due to any such action or claim incurred by the Licensor or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
|
||||
6.6 Conflicts With Other Licenses. Where any portion of Your Extensions, by virtue of being Derivative Works of another product or similar circumstance, fall under the terms of another license, the terms of that license should be honored however You must also make Your Extensions available under this License. If the terms of this License continue to conflict with the terms of the other license you may write the Licensor for permission to resolve the conflict in a fashion that remains consistent with the intent of this License. Such permission will be granted at the sole discretion of the Licensor.
|
||||
7.0 Versions of This License. Licensor may publish from time to time revised versions of the License. Once Licensed Software has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Licensed Software under the terms of any subsequent version of the License published by Licensor. No one other than Licensor has the right to modify the terms applicable to Licensed Software created under this License.
|
||||
7.1 If You create or use a modified version of this License, which You may do only in order to apply it to software that is not already Licensed Software under this License, You must rename Your license so that it is not confusingly similar to this License, and must make it clear that Your license contains terms that differ from this License. In so naming Your license, You may not use any trademark of Licensor or of any Contributor. Should Your modifications to this License be limited to alteration of a) Section 13.8 solely to modify the legal Jurisdiction or Venue for disputes, b) EXHIBIT A solely to define License Notice text, or c) to EXHIBIT B solely to define a User-Visible Attribution Notice, You may continue to refer to Your License as the Reciprocal Public License or simply the RPL.
|
||||
8.0 Disclaimer of Warranty. LICENSED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE LICENSED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. FURTHER THERE IS NO WARRANTY MADE AND ALL IMPLIED WARRANTIES ARE DISCLAIMED THAT THE LICENSED SOFTWARE MEETS OR COMPLIES WITH ANY DESCRIPTION OF PERFORMANCE OR OPERATION, SAID COMPATIBILITY AND SUITABILITY BEING YOUR RESPONSIBILITY. LICENSOR DISCLAIMS ANY WARRANTY, IMPLIED OR EXPRESSED, THAT ANY CONTRIBUTOR'S EXTENSIONS MEET ANY STANDARD OF COMPATIBILITY OR DESCRIPTION OF PERFORMANCE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LICENSED SOFTWARE IS WITH YOU. SHOULD LICENSED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (AND NOT THE LICENSOR OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. UNDER THE TERMS OF THIS LICENSOR WILL NOT SUPPORT THIS SOFTWARE AND IS UNDER NO OBLIGATION TO ISSUE UPDATES TO THIS SOFTWARE. LICENSOR HAS NO KNOWLEDGE OF ERRANT CODE OR VIRUS IN THIS SOFTWARE, BUT DOES NOT WARRANT THAT THE SOFTWARE IS FREE FROM SUCH ERRORS OR VIRUSES. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF LICENSED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
9.0 Limitation of Liability. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE LICENSOR, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF LICENSED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||
10.0 High Risk Activities. THE LICENSED SOFTWARE IS NOT FAULT-TOLERANT AND IS NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE OR DISTRIBUTION AS ON-LINE CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATIONS SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE LICENSED SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). LICENSOR AND CONTRIBUTORS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.
|
||||
11.0 Responsibility for Claims. As between Licensor and Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License which specifically disclaims warranties and limits any liability of the Licensor. This paragraph is to be used in conjunction with and controlled by the Disclaimer Of Warranties of Section 8, the Limitation Of Damages in Section 9, and the disclaimer against use for High Risk Activities in Section 10. The Licensor has thereby disclaimed all warranties and limited any damages that it is or may be liable for. You agree to work with Licensor and Contributors to distribute such responsibility on an equitable basis consistent with the terms of this License including Sections 8, 9, and 10. Nothing herein is intended or shall be deemed to constitute any admission of liability.
|
||||
12.0 Termination. This License and all rights granted hereunder will terminate immediately in the event of the circumstances described in Section 13.6 or if applicable law prohibits or restricts You from fully and or specifically complying with Sections 3, 4 and/or 6, or prevents the enforceability of any of those Sections, and You must immediately discontinue any use of Licensed Software.
|
||||
12.1 Automatic Termination Upon Breach. This License and the rights granted hereunder will terminate automatically if You fail to comply with the terms herein and fail to cure such breach within thirty (30) days of becoming aware of the breach. All sublicenses to the Licensed Software that are properly granted shall survive any termination of this License. Provisions that, by their nature, must remain in effect beyond the termination of this License, shall survive.
|
||||
12.2 Termination Upon Assertion of Patent Infringement. If You initiate litigation by asserting a patent infringement claim (excluding declaratory judgment actions) against Licensor or a Contributor (Licensor or Contributor against whom You file such an action is referred to herein as "Respondent") alleging that Licensed Software directly or indirectly infringes any patent, then any and all rights granted by such Respondent to You under Sections 3 or 4 of this License shall terminate prospectively upon sixty (60) days notice from Respondent (the "Notice Period") unless within that Notice Period You either agree in writing (i) to pay Respondent a mutually agreeable reasonably royalty for Your past or future use of Licensed Software made by such Respondent, or (ii) withdraw Your litigation claim with respect to Licensed Software against such Respondent. If within said Notice Period a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Licensor to You under Sections 3 and 4 automatically terminate at the expiration of said Notice Period.
|
||||
12.3 Reasonable Value of This License. If You assert a patent infringement claim against Respondent alleging that Licensed Software directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by said Respondent under Sections 3 and 4 shall be taken into account in determining the amount or value of any payment or license.
|
||||
12.4 No Retroactive Effect of Termination. In the event of termination under this Section all end user license agreements (excluding licenses to distributors and resellers) that have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
|
||||
13.0 Miscellaneous.
|
||||
13.1 U.S. Government End Users. The Licensed Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Licensed Software with only those rights set forth herein.
|
||||
13.2 Relationship of Parties. This License will not be construed as creating an agency, partnership, joint venture, or any other form of legal association between or among You, Licensor, or any Contributor, and You will not represent to the contrary, whether expressly, by implication, appearance, or otherwise.
|
||||
13.3 Independent Development. Nothing in this License will impair Licensor's right to acquire, license, develop, subcontract, market, or distribute technology or products that perform the same or similar functions as, or otherwise compete with, Extensions that You may develop, produce, market, or distribute.
|
||||
13.4 Consent To Breach Not Waiver. Failure by Licensor or Contributor to enforce any provision of this License will not be deemed a waiver of future enforcement of that or any other provision.
|
||||
13.5 Severability. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
|
||||
13.6 Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Licensed Software due to statute, judicial order, or regulation, then You cannot use, modify, or distribute the software.
|
||||
13.7 Export Restrictions. You may be restricted with respect to downloading or otherwise acquiring, exporting, or reexporting the Licensed Software or any underlying information or technology by United States and other applicable laws and regulations. By downloading or by otherwise obtaining the Licensed Software, You are agreeing to be responsible for compliance with all applicable laws and regulations.
|
||||
13.8 Arbitration, Jurisdiction & Venue. This License shall be governed by Colorado law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. You expressly agree that any dispute relating to this License shall be submitted to binding arbitration under the rules then prevailing of the American Arbitration Association. You further agree that Adams County, Colorado USA is proper venue and grant such arbitration proceeding jurisdiction as may be appropriate for purposes of resolving any dispute under this License. Judgement upon any award made in arbitration may be entered and enforced in any court of competent jurisdiction. The arbitrator shall award attorney's fees and costs of arbitration to the prevailing party. Should either party find it necessary to enforce its arbitration award or seek specific performance of such award in a civil court of competent jurisdiction, the prevailing party shall be entitled to reasonable attorney's fees and costs. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. You and Licensor expressly waive any rights to a jury trial in any litigation concerning Licensed Software or this License. Any law or regulation that provides that the language of a contract shall be construed against the drafter shall not apply to this License.
|
||||
13.9 Entire Agreement. This License constitutes the entire agreement between the parties with respect to the subject matter hereof.
|
||||
EXHIBIT A
|
||||
|
||||
The License Notice below must appear in each file of the Source Code of any copy You distribute of the Licensed Software or any Extensions thereto:
|
||||
|
||||
Unless explicitly acquired and licensed from Licensor under another license, the contents of this file are subject to the Reciprocal Public License ("RPL") Version 1.5, or subsequent versions as allowed by the RPL, and You may not copy or use this file in either source code or executable form, except in compliance with the terms and conditions of the RPL.
|
||||
|
||||
All software distributed under the RPL is provided strictly on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND LICENSOR HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the RPL for specific language governing rights and limitations under the RPL.
|
||||
|
||||
EXHIBIT B
|
||||
|
||||
The User-Visible Attribution Notice below, when provided, must appear in each user-visible display as defined in Section 6.4 (d):
|
1
public/README.md
Normal file
1
public/README.md
Normal file
@ -0,0 +1 @@
|
||||
"# MeowPayment"
|
213
public/about.html
Normal file
213
public/about.html
Normal file
@ -0,0 +1,213 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
|
||||
<head>
|
||||
<!-- 设置文档编码和视口 -->
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Uptimeow</title>
|
||||
<!-- 引入 Bootstrap CSS -->
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/css/bootstrap-icons.min.css" rel="stylesheet">
|
||||
<!-- 引入 htmx JS -->
|
||||
<script src="/js/htmx.min.js"></script>
|
||||
<!-- 引入 highlight.js CSS -->
|
||||
<link rel="stylesheet" href="/css/highlight.js/monokai-sublime.css">
|
||||
<!-- 引入 highlight.js JS -->
|
||||
<script src="/js/highlight.min.js"></script>
|
||||
<!-- 引入自定义样式 -->
|
||||
<link href="/css/meowdream-better-links.css" rel="stylesheet">
|
||||
<link href="/css/meowdream-colors.css" rel="stylesheet">
|
||||
<link href="/css/meowdream-custom.css" rel="stylesheet">
|
||||
<script src="/js/meowdream-fetch-fix.js"></script>
|
||||
|
||||
<style>
|
||||
.col-md-8 {
|
||||
width: 66.66666667%; /* Assuming it's a Bootstrap-like grid system */
|
||||
}
|
||||
|
||||
.wrap {
|
||||
padding: 7.5px 2.5px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hp-bar-big {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.beat {
|
||||
width: 10px;
|
||||
height: 30px;
|
||||
background-color: #33333370; /* Example color */
|
||||
margin: 3px;
|
||||
border-radius: 5px; /* Example border radius */
|
||||
transition: transform 0.4s; /* For hover effect */
|
||||
}
|
||||
|
||||
.beat-good {
|
||||
background-color: #00ff7770;
|
||||
}
|
||||
|
||||
.beat-slightly-slow {
|
||||
background-color: #ffd90070;
|
||||
}
|
||||
|
||||
.beat-slow {
|
||||
background-color: #ff990070;
|
||||
}
|
||||
|
||||
.beat-very-slow {
|
||||
background-color: #ff800070;
|
||||
}
|
||||
|
||||
.beat-danger {
|
||||
background-color: #ff5e0070;
|
||||
}
|
||||
|
||||
.beat-dead {
|
||||
background-color: #ff000070;
|
||||
}
|
||||
|
||||
.beat:hover {
|
||||
transform: scale(1.25);
|
||||
}
|
||||
|
||||
.word {
|
||||
color: #333; /* Example color */
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.connecting-line {
|
||||
height: 1px;
|
||||
background-color: #333; /* Example color */
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.d-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.justify-content-between {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.align-items-center {
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<nav class="navbar navbar-expand-lg bg-primary" data-bs-theme="dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="#"><span style="padding-right: 8px;"></span>Uptimeow</a>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarColor01">
|
||||
<ul class="navbar-nav me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/">状态</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#">关于
|
||||
<span class="visually-hidden">(current)</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">其他</a>
|
||||
<div class="dropdown-menu">
|
||||
<a class="dropdown-item" href="#">按时间查询</a>
|
||||
<a class="dropdown-item" href="#">报修</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="#">清空数据</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="page-header">
|
||||
<h1>
|
||||
<br>
|
||||
Uptimeow <small style="font-size: 50%">随时随地检查服务器状态!</small>
|
||||
</h1>
|
||||
</div>
|
||||
<hr>
|
||||
<h2>
|
||||
简介
|
||||
</h2>
|
||||
<hr>
|
||||
<p>
|
||||
你说得对,但是Uptimeow是一款专为Minecraft服务器设计的实时状态监控面板。它构建于一个精密的网络架构之上,为服务器管理员提供了一个被称作“数据之窗”的透明界面。在这里,关键的服务器参数将被实时监控,如同被神选中的人获得“神之眼”一般,Uptimeow赋予了你洞察服务器运行状态的能力。你将扮演一位细心的管理员,在这个高效的监控平台中,邂逅各种图表和数据,它们各具特色,共同讲述着服务器的健康状况。与Uptimeow一起,你将轻松应对各种挑战,确保服务器稳定运行,找回玩家们流畅游戏体验的同时——逐步发掘服务器性能的真相。
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn" href="#">Learn more »</a>
|
||||
<a class="btn" href="#">Github »</a>
|
||||
</p>
|
||||
<hr>
|
||||
<h2>
|
||||
功能
|
||||
</h2>
|
||||
<hr>
|
||||
<h5>监控</h5>
|
||||
<p>
|
||||
通过Uptimeow,您可以在线监控服务器的运行状态,如是否在线、TPS、在线人数等
|
||||
</p>
|
||||
<h5>历史记录</h5>
|
||||
<p>
|
||||
您可以在线回溯过往的服务器状态记录,以便结合日志更好地排查问题
|
||||
</p>
|
||||
<h5>玩家反馈</h5>
|
||||
<p>
|
||||
通过将本面板开放给玩家,玩家可以通过配置的方式及时联系管理组以报告服务器故障
|
||||
</p>
|
||||
<h5>报警</h5>
|
||||
<p>
|
||||
您可以自定义配置消息推送服务,当服务器状态异常时,Uptimeow将会自动推送报警消息到您的手机,以便及时解决问题
|
||||
</p>
|
||||
<h5>加速管理</h5>
|
||||
<p>
|
||||
通过消息推送服务,您也可以将服务器信息汇总推送至服务器管理/技术,以便优化游戏体验
|
||||
</p>
|
||||
<hr>
|
||||
<h2>部署</h2>
|
||||
<p>Uptimeow的部署非常简单。<br>
|
||||
1. 修改服务器配置,启用RCON,记下端口和密码<br>
|
||||
2. 下载Release版本,修改配置文件<br>
|
||||
3. 启动服务,访问面板<br>
|
||||
</p>
|
||||
<hr>
|
||||
<h2>反馈</h2>
|
||||
<p>欢迎向我们提交Uptimeow的错误,或对Uptimeow提出您的宝贵意见,您的反馈是我们前进的动力!</p>
|
||||
<h5>反馈通道</h5>
|
||||
<p>
|
||||
<b>Github issues</b> <a class="btn btn-sm" href="">前往 »</a><br>
|
||||
<b>电子邮件</b> <a class="btn btn-sm" href="mailto:Meowdream反馈<feedback@meowdream.cn>?cc=%E6%A2%A6%E5%87%8C%E6%B1%90%3Cmew%40meowdream.cn%3E&subject=Issues%20on%20Uptimeow">发送 »</a><br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 引入 Bootstrap JS -->
|
||||
<script src="/js/bootstrap.bundle.min.js"></script>
|
||||
<!-- 引入 marked JS -->
|
||||
<script src="/js/marked.min.js"></script>
|
||||
<!-- 引入自定义 Markdown 渲染器 -->
|
||||
<script src="/js/meowdream-custom-md-renderer.js"></script>
|
||||
|
||||
<script src="/js/meowdream-utils.js"></script>
|
||||
</body>
|
||||
</html>
|
BIN
public/android-chrome-192x192.png
Normal file
BIN
public/android-chrome-192x192.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
BIN
public/android-chrome-512x512.png
Normal file
BIN
public/android-chrome-512x512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
BIN
public/apple-touch-icon.png
Normal file
BIN
public/apple-touch-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
9
public/browserconfig.xml
Normal file
9
public/browserconfig.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<TileColor>#4d4d4d</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
550
public/css/_bootswatch.scss
Normal file
550
public/css/_bootswatch.scss
Normal file
@ -0,0 +1,550 @@
|
||||
// Morph 5.3.3
|
||||
// Bootswatch
|
||||
|
||||
|
||||
// Variables
|
||||
|
||||
$web-font-path: "https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" !default;
|
||||
@if $web-font-path {
|
||||
@import url("#{$web-font-path}");
|
||||
}
|
||||
|
||||
$btn-box-shadow-inset: inset 2px 3px 6px rgba($black, .2), inset -3px -2px 6px rgba($white, .2) !default;
|
||||
|
||||
$box-shadow-dark: 5px 5px 10px rgba(darken($dark, 50%), .2), -5px -5px 10px rgba($white, .05) !default;
|
||||
|
||||
// Mixins
|
||||
|
||||
@mixin shadow($bg: $gray-200, $shadow: $box-shadow) {
|
||||
background-color: $bg;
|
||||
border: none;
|
||||
box-shadow: $shadow;
|
||||
transition: background-color .15s ease-in-out, border .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out;
|
||||
}
|
||||
|
||||
@mixin shadow-outline($bg: $body-bg, $shadow: $box-shadow) {
|
||||
position: absolute;
|
||||
top: -.5rem;
|
||||
right: -.5rem;
|
||||
bottom: -.5rem;
|
||||
left: -.5rem;
|
||||
z-index: -1;
|
||||
content: "";
|
||||
background-color: $bg;
|
||||
border: 1px solid rgba($white, .1);
|
||||
box-shadow: $shadow;
|
||||
transition: background-color .15s ease-in-out, border .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out;
|
||||
}
|
||||
|
||||
// Buttons
|
||||
|
||||
.btn {
|
||||
position: relative;
|
||||
color: $gray-700;
|
||||
border-radius: $btn-border-radius;
|
||||
@include shadow();
|
||||
|
||||
&:focus {
|
||||
color: $gray-700;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active,
|
||||
&:active:focus {
|
||||
@include shadow();
|
||||
color: $gray-700;
|
||||
}
|
||||
|
||||
&:active,
|
||||
&:active:focus {
|
||||
border-color: transparent;
|
||||
box-shadow: $btn-box-shadow-inset;
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&-#{$color} {
|
||||
|
||||
&:active,
|
||||
&:active:focus {
|
||||
@if ($color == secondary or $color == light) {
|
||||
color: $gray-700;
|
||||
background-color: $gray-200;
|
||||
} @else {
|
||||
color: $white;
|
||||
background-color: $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-link {
|
||||
font-weight: $btn-font-weight;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:active:focus {
|
||||
color: $dark;
|
||||
}
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: $gray-700;
|
||||
background-color: $gray-200;
|
||||
box-shadow: 2px 2px 5px rgba($black, .1), -2px -2px 5px rgba($white, .5);
|
||||
}
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
.btn {
|
||||
@include shadow($dark, $box-shadow-dark);
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
@each $color, $value in $theme-colors {
|
||||
&-#{$color} {
|
||||
background-color: $value;
|
||||
border: none;
|
||||
box-shadow: 5px 5px 10px rgba($black, .2), -5px -5px 10px rgba($white, .1);
|
||||
|
||||
@if ($color == secondary or $color == light) {
|
||||
color: $gray-700;
|
||||
} @else {
|
||||
color: $white;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: $value;
|
||||
border: none;
|
||||
box-shadow: 5px 5px 10px rgba($black, .2), -5px -5px 10px rgba($white, .1);
|
||||
|
||||
@if ($color == secondary or $color == light) {
|
||||
color: $gray-700;
|
||||
} @else {
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
|
||||
&:active,
|
||||
&:active:focus {
|
||||
background-color: $value;
|
||||
border: none;
|
||||
box-shadow: inset 2px 3px 6px rgba($black, .1), inset -3px -2px 6px rgba($white, .1);
|
||||
|
||||
@if ($color == secondary or $color == light) {
|
||||
color: $gray-700;
|
||||
} @else {
|
||||
color: $white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
@include shadow();
|
||||
border: none;
|
||||
border-radius: $btn-border-radius;
|
||||
|
||||
.btn,
|
||||
.btn-group {
|
||||
margin: 0;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus,
|
||||
&:active:focus {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
.btn-group,
|
||||
.btn-group-vertical {
|
||||
@include shadow($dark, $box-shadow-dark);
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
|
||||
> .btn:nth-child(n + 3),
|
||||
> :not(.btn-check) + .btn,
|
||||
> .btn-group:not(:first-child) > .btn {
|
||||
border-left: 1px solid $border-color;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:active:focus {
|
||||
border-left: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
> .btn:not(:last-child):not(.dropdown-toggle),
|
||||
> .btn-group:not(:last-child) > .btn {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group-vertical {
|
||||
border-radius: 1rem;
|
||||
|
||||
.btn {
|
||||
border-radius: 1rem;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:focus,
|
||||
&:active:focus {
|
||||
border-radius: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
> .btn:nth-child(n + 3),
|
||||
> :not(.btn-check) + .btn,
|
||||
> .btn-group:not(:first-child) > .btn {
|
||||
border-top: 1px solid rgba($black, .05);
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:active:focus {
|
||||
border-top: 1px solid rgba($black, .05);
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
> .btn:not(:last-child):not(.dropdown-toggle),
|
||||
> .btn-group:not(:last-child) > .btn {
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
|
||||
&:hover,
|
||||
&:active,
|
||||
&:active:focus {
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-check:checked + .btn,
|
||||
.btn-check:active + .btn {
|
||||
box-shadow: inset 2px 3px 6px rgba($black, .2);
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&-#{$color} {
|
||||
background-color: $value;
|
||||
|
||||
.btn-check:checked + &,
|
||||
.btn-check:active + & {
|
||||
@if $color == secondary {
|
||||
color: $gray-700;
|
||||
} @else {
|
||||
color: $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-check:not(:checked) + .btn,
|
||||
.btn-check:not(:checked) + .btn:active {
|
||||
color: $gray-700;
|
||||
background-color: $gray-200;
|
||||
}
|
||||
|
||||
.btn-check:checked ~ .btn-check:active + .btn,
|
||||
.btn-check:checked ~ .btn-check:checked + .btn {
|
||||
box-shadow: inset 0 3px 6px rgba($black, .2);
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
.btn-check:not(:checked) + .btn,
|
||||
.btn-check:not(:checked) + .btn:active {
|
||||
color: $navbar-dark-color;
|
||||
background-color: $dark;
|
||||
}
|
||||
}
|
||||
|
||||
// Navs
|
||||
|
||||
.dropdown-menu {
|
||||
backdrop-filter: blur(3px);
|
||||
}
|
||||
|
||||
.nav-tabs {
|
||||
@include shadow();
|
||||
border-radius: $border-radius;
|
||||
|
||||
.nav-item {
|
||||
box-shadow: 1px 0 $border-color;
|
||||
|
||||
&:first-child .nav-link {
|
||||
border-top-left-radius: $border-radius;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
}
|
||||
|
||||
&:last-child .nav-link {
|
||||
border-top-right-radius: $border-radius;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link.active,
|
||||
.nav-item.show .nav-link {
|
||||
box-shadow: inset 0 3px 6px rgba($black, .2);
|
||||
}
|
||||
}
|
||||
|
||||
.nav-pills {
|
||||
@include shadow();
|
||||
padding: 1rem;
|
||||
border-radius: $border-radius;
|
||||
|
||||
|
||||
.nav-link.active {
|
||||
box-shadow: inset 0 3px 6px rgba($black, .2);
|
||||
}
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
@include shadow();
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
.pagination {
|
||||
@include shadow();
|
||||
justify-content: center;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
.nav-tabs,
|
||||
.nav-pills,
|
||||
.breadcrumb,
|
||||
.pagination {
|
||||
@include shadow($dark, $box-shadow-dark);
|
||||
color: $navbar-dark-color;
|
||||
}
|
||||
}
|
||||
|
||||
// Forms
|
||||
|
||||
.input-group {
|
||||
background-color: $gray-100;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow-inset;
|
||||
|
||||
> .form-control {
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.input-group-text {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.btn {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
|
||||
&:first-child {
|
||||
border-radius: $border-radius 0 0 $border-radius;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 $border-radius $border-radius 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-range {
|
||||
&::-webkit-slider-runnable-track {
|
||||
box-shadow: inset 1px 1px 4px rgba($black, .15);
|
||||
}
|
||||
|
||||
&::-webkit-slider-thumb,
|
||||
&:focus::-webkit-slider-thumb {
|
||||
box-shadow: 1px 1px 3px rgba($black, .2), inset 2px 2px 8px rgba(shade-color($form-range-thumb-bg, 50%), .1);
|
||||
}
|
||||
}
|
||||
|
||||
.form-check-input {
|
||||
background-color: $gray-400;
|
||||
border: none;
|
||||
box-shadow: inset 1px 1px 7px rgba($black, .2);
|
||||
|
||||
&:focus {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
&:active {
|
||||
filter: none;
|
||||
}
|
||||
|
||||
&:checked {
|
||||
background-color: $primary;
|
||||
box-shadow: inset 1px 1px 7px rgba($black, .2);
|
||||
}
|
||||
}
|
||||
|
||||
.form-control {
|
||||
&::file-selector-button {
|
||||
box-shadow: 2px 2px 5px rgba($black, .2), inset 3px 3px 10px rgba(shade-color($form-range-thumb-bg, 50%), .1);
|
||||
}
|
||||
}
|
||||
|
||||
.form-select:not([multiple]) {
|
||||
position: relative;
|
||||
box-shadow: $box-shadow;
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
.form-control {
|
||||
&:disabled {
|
||||
background-color: $gray-400;
|
||||
}
|
||||
|
||||
&::file-selector-button {
|
||||
box-shadow: 2px 2px 5px rgba($black, .2), inset 3px 3px 10px rgba(shade-color($form-range-thumb-bg, 50%), .1);
|
||||
}
|
||||
}
|
||||
|
||||
.form-select:not([multiple]) {
|
||||
box-shadow: $box-shadow-dark;
|
||||
}
|
||||
}
|
||||
|
||||
// Indicators
|
||||
|
||||
.alert {
|
||||
backdrop-filter: blur(3px);
|
||||
box-shadow: $dropdown-box-shadow;
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&-#{$color} {
|
||||
background-color: rgba($value, .75);
|
||||
box-shadow: $box-shadow-lg, inset 1px 1px 3px rgba(tint-color($value, 80%), .4), inset -5px -5px 20px rgba(shade-color($value, 80%), .05);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.badge {
|
||||
&.bg-secondary,
|
||||
&.bg-light {
|
||||
color: $gray-700;
|
||||
}
|
||||
}
|
||||
|
||||
.tooltip {
|
||||
&.show {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
&-inner,
|
||||
.arrow {
|
||||
backdrop-filter: blur(3px);
|
||||
box-shadow: $dropdown-box-shadow;
|
||||
}
|
||||
}
|
||||
|
||||
.popover,
|
||||
.toast,
|
||||
.modal-content {
|
||||
backdrop-filter: blur(3px);
|
||||
box-shadow: $dropdown-box-shadow;
|
||||
}
|
||||
|
||||
.progress {
|
||||
box-shadow: inset 2px 4px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 5px rgba($white, .8);
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
box-shadow: 2px 2px 5px rgba($black, .2);
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: $border-radius-pill;
|
||||
border-bottom-left-radius: $border-radius-pill;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-top-right-radius: $border-radius-pill;
|
||||
border-bottom-right-radius: $border-radius-pill;
|
||||
}
|
||||
}
|
||||
|
||||
// Containers
|
||||
|
||||
.card {
|
||||
box-shadow: inset 2px 2px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 4px rgba($white, .2);
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&-#{$color} {
|
||||
box-shadow: inset 2px 2px 6px rgba(shade-color($value, 80%), .05), inset -3px -2px 4px rgba(tint-color($value, 80%), .2);
|
||||
}
|
||||
}
|
||||
|
||||
&-header {
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.list-group {
|
||||
background-color: $card-bg;
|
||||
box-shadow: inset 2px 2px 6px rgba(shade-color($body-bg, 50%), .2), inset -3px -2px 4px rgba($white, .2);
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
@include color-mode(dark) {
|
||||
|
||||
.card,
|
||||
.list-group {
|
||||
background-color: mix($black, $dark, 3%);
|
||||
box-shadow: inset 2px 2px 6px rgba(shade-color($dark, 50%), .2), inset -3px -2px 4px rgba($white, .05);
|
||||
}
|
||||
|
||||
.card {
|
||||
&.bg-secondary,
|
||||
&.bg-light {
|
||||
color: $body-color;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-content,
|
||||
.popover,
|
||||
.toast {
|
||||
background-color: mix($white, $dark, 3%);
|
||||
box-shadow: 8px 8px 40px rgba(0, 0, 0, .15), inset 1px 1px 3px rgba(255, 255, 255, .05), inset -5px -5px 20px rgba(0, 0, 0, .05);
|
||||
}
|
||||
|
||||
.popover-header,
|
||||
.toast-header {
|
||||
color: $white;
|
||||
}
|
||||
}
|
219
public/css/_variables.scss
Normal file
219
public/css/_variables.scss
Normal file
@ -0,0 +1,219 @@
|
||||
// Morph 5.3.3
|
||||
// Bootswatch
|
||||
|
||||
$theme: "morph" !default;
|
||||
|
||||
//
|
||||
// Color system
|
||||
//
|
||||
|
||||
$white: #fff !default;
|
||||
$gray-100: #f0f5fa !default;
|
||||
$gray-200: #d9e3f1 !default;
|
||||
$gray-300: #dee2e6 !default;
|
||||
$gray-400: #bed1e6 !default;
|
||||
$gray-500: #adb5bd !default;
|
||||
$gray-600: #7f8a99 !default;
|
||||
$gray-700: #7b8ab8 !default;
|
||||
$gray-800: #444b40 !default;
|
||||
$gray-900: #212529 !default;
|
||||
$black: #000 !default;
|
||||
|
||||
$blue: #378dfc !default;
|
||||
$indigo: #6610f2 !default;
|
||||
$purple: #5b62f4 !default;
|
||||
$pink: #d63384 !default;
|
||||
$red: #e52527 !default;
|
||||
$orange: #fd7e14 !default;
|
||||
$yellow: #ffc107 !default;
|
||||
$green: #43cc29 !default;
|
||||
$teal: #20c997 !default;
|
||||
$cyan: #0dcaf0 !default;
|
||||
|
||||
$primary: $blue !default;
|
||||
$secondary: $gray-200 !default;
|
||||
$success: $green !default;
|
||||
$info: $purple !default;
|
||||
$warning: $yellow !default;
|
||||
$danger: $red !default;
|
||||
$light: $gray-100 !default;
|
||||
$dark: $gray-900 !default;
|
||||
|
||||
$min-contrast-ratio: 1.5 !default;
|
||||
|
||||
$enable-shadows: true !default;
|
||||
|
||||
// Body
|
||||
|
||||
$body-bg: $gray-200 !default;
|
||||
$body-color: $gray-700 !default;
|
||||
|
||||
// Links
|
||||
|
||||
$link-color: darken($body-color, 20%) !default;
|
||||
|
||||
// Components
|
||||
|
||||
$border-width: 0 !default;
|
||||
$border-color: rgba(darken($body-bg, 50%), .1) !default;
|
||||
|
||||
$border-radius-pill: 50rem !default;
|
||||
|
||||
$box-shadow: 5px 5px 10px rgba(darken($body-bg, 50%), .2), -5px -5px 10px rgba($white, .4) !default;
|
||||
$box-shadow-sm: 0 .125rem .25rem rgba(darken($body-bg, 50%), .2) !default;
|
||||
$box-shadow-lg: 8px 8px 40px rgba(darken($body-bg, 90%), .15) !default;
|
||||
$box-shadow-inset: inset 2px 2px 8px rgba(darken($body-bg, 50%), .3), inset -3px -2px 5px rgba($white, .8) !default;
|
||||
|
||||
// Fonts
|
||||
|
||||
// stylelint-disable-next-line value-keyword-case
|
||||
$font-family-sans-serif: Nunito, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
|
||||
|
||||
$headings-color: $link-color !default;
|
||||
|
||||
$text-muted: lighten($body-color, 15%) !default;
|
||||
|
||||
// Buttons + Forms
|
||||
|
||||
$input-btn-padding-y: 1rem !default;
|
||||
$input-btn-padding-x: 1.5rem !default;
|
||||
|
||||
// Buttons
|
||||
|
||||
$btn-font-weight: 600 !default;
|
||||
|
||||
$btn-padding-y-lg: 1.5rem !default;
|
||||
$btn-padding-x-lg: 2.25rem !default;
|
||||
|
||||
$btn-box-shadow: $box-shadow !default;
|
||||
|
||||
$btn-border-radius: $border-radius-pill !default;
|
||||
$btn-border-radius-sm: $border-radius-pill !default;
|
||||
$btn-border-radius-lg: $border-radius-pill !default;
|
||||
|
||||
// Forms
|
||||
|
||||
$form-label-font-weight: $btn-font-weight !default;
|
||||
|
||||
$input-bg: $gray-100 !default;
|
||||
|
||||
$input-placeholder-color: $text-muted !default;
|
||||
|
||||
$form-switch-color: $white !default;
|
||||
$form-switch-focus-color: $form-switch-color !default;
|
||||
|
||||
$form-select-indicator-color: $body-color !default;
|
||||
$form-select-box-shadow: $box-shadow-inset !default;
|
||||
|
||||
$form-range-track-bg: rgba(darken($body-bg, 50%), .15) !default;
|
||||
$form-range-thumb-bg: $gray-100 !default;
|
||||
$form-range-thumb-active-bg: $form-range-thumb-bg !default;
|
||||
$form-range-thumb-disabled-bg: $gray-200 !default;
|
||||
|
||||
// Navs
|
||||
|
||||
$nav-link-color: $body-color !default;
|
||||
$nav-link-hover-color: $nav-link-color !default;
|
||||
$nav-link-disabled-color: $text-muted !default;
|
||||
|
||||
$nav-tabs-border-radius: 0 !default;
|
||||
$nav-tabs-link-active-color: $white !default;
|
||||
$nav-tabs-link-active-bg: $primary !default;
|
||||
|
||||
// Navbar
|
||||
|
||||
$navbar-dark-color: rgba($white, .75) !default;
|
||||
$navbar-dark-hover-color: $white !default;
|
||||
$navbar-dark-active-color: $navbar-dark-hover-color !default;
|
||||
$navbar-dark-disabled-color: rgba($white, .25) !default;
|
||||
|
||||
$navbar-light-color: $body-color !default;
|
||||
$navbar-light-hover-color: $link-color !default;
|
||||
$navbar-light-active-color: $navbar-light-hover-color !default;
|
||||
$navbar-light-disabled-color: $text-muted !default;
|
||||
|
||||
// Dropdowns
|
||||
|
||||
$dropdown-bg: rgba($gray-100, .8) !default;
|
||||
$dropdown-border-color: transparent !default;
|
||||
$dropdown-box-shadow: $box-shadow-lg, inset 1px 1px 3px rgba($white, .5), inset -5px -5px 20px rgba($black, .05) !default;
|
||||
|
||||
$dropdown-link-color: $gray-700 !default;
|
||||
$dropdown-link-hover-color: $gray-800 !default;
|
||||
$dropdown-link-hover-bg: transparent !default;
|
||||
|
||||
// Pagination
|
||||
|
||||
$pagination-padding-y: 1rem !default;
|
||||
$pagination-padding-x: .75rem !default;
|
||||
$pagination-padding-y-sm: .5rem !default;
|
||||
$pagination-padding-y-lg: 1.5rem !default;
|
||||
|
||||
$pagination-color: $gray-700 !default;
|
||||
$pagination-bg: transparent !default;
|
||||
|
||||
$pagination-active-color: darken($pagination-color, 20%) !default;
|
||||
$pagination-active-bg: transparent !default;
|
||||
|
||||
$pagination-disabled-color: $text-muted !default;
|
||||
|
||||
$pagination-disabled-bg: $pagination-bg !default;
|
||||
|
||||
// Cards
|
||||
|
||||
$card-spacer-y: 1.5rem !default;
|
||||
$card-spacer-x: 1.5rem !default;
|
||||
$card-cap-bg: transparent !default;
|
||||
|
||||
// Tooltips
|
||||
|
||||
$tooltip-color: $body-color !default;
|
||||
|
||||
// Popovers
|
||||
|
||||
$popover-header-bg: transparent !default;
|
||||
|
||||
$popover-arrow-width: 0 !default;
|
||||
|
||||
// Toasts
|
||||
|
||||
$toast-border-width: 0 !default;
|
||||
|
||||
$toast-header-color: $body-color !default;
|
||||
$toast-header-background-color: transparent !default;
|
||||
|
||||
// Badges
|
||||
|
||||
$badge-padding-y: .75em !default;
|
||||
$badge-padding-x: 1.25em !default;
|
||||
|
||||
// Modals
|
||||
|
||||
// Progress bars
|
||||
|
||||
$progress-height: 1.5rem !default;
|
||||
$progress-border-radius: $border-radius-pill !default;
|
||||
|
||||
// List groups
|
||||
|
||||
$list-group-hover-bg: transparent !default;
|
||||
$list-group-active-color: $link-color !default;
|
||||
$list-group-active-bg: transparent !default;
|
||||
|
||||
$list-group-disabled-color: $text-muted !default;
|
||||
$list-group-disabled-bg: transparent !default;
|
||||
|
||||
$list-group-action-active-color: $link-color !default;
|
||||
$list-group-action-active-bg: transparent !default;
|
||||
|
||||
// Breadcrumbs
|
||||
|
||||
$breadcrumb-padding-y: $pagination-padding-y !default;
|
||||
$breadcrumb-padding-x: $pagination-padding-x !default;
|
||||
|
||||
$breadcrumb-divider-color: $text-muted !default;
|
||||
$breadcrumb-active-color: $link-color !default;
|
||||
|
||||
// Close
|
||||
|
||||
$btn-close-color: $headings-color !default;
|
4085
public/css/bootstrap-grid.css
vendored
Normal file
4085
public/css/bootstrap-grid.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/css/bootstrap-grid.css.map
Normal file
1
public/css/bootstrap-grid.css.map
Normal file
File diff suppressed because one or more lines are too long
6
public/css/bootstrap-grid.min.css
vendored
Normal file
6
public/css/bootstrap-grid.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap-grid.min.css.map
Normal file
1
public/css/bootstrap-grid.min.css.map
Normal file
File diff suppressed because one or more lines are too long
4084
public/css/bootstrap-grid.rtl.css
vendored
Normal file
4084
public/css/bootstrap-grid.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/css/bootstrap-grid.rtl.css.map
Normal file
1
public/css/bootstrap-grid.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
6
public/css/bootstrap-grid.rtl.min.css
vendored
Normal file
6
public/css/bootstrap-grid.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap-grid.rtl.min.css.map
Normal file
1
public/css/bootstrap-grid.rtl.min.css.map
Normal file
File diff suppressed because one or more lines are too long
2078
public/css/bootstrap-icons.css
vendored
Normal file
2078
public/css/bootstrap-icons.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2052
public/css/bootstrap-icons.json
Normal file
2052
public/css/bootstrap-icons.json
Normal file
File diff suppressed because it is too large
Load Diff
5
public/css/bootstrap-icons.min.css
vendored
Normal file
5
public/css/bootstrap-icons.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2090
public/css/bootstrap-icons.scss
vendored
Normal file
2090
public/css/bootstrap-icons.scss
vendored
Normal file
File diff suppressed because it is too large
Load Diff
597
public/css/bootstrap-reboot.css
vendored
Normal file
597
public/css/bootstrap-reboot.css
vendored
Normal file
@ -0,0 +1,597 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2024 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: left;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
/* rtl:raw:
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
*/
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
1
public/css/bootstrap-reboot.css.map
Normal file
1
public/css/bootstrap-reboot.css.map
Normal file
File diff suppressed because one or more lines are too long
6
public/css/bootstrap-reboot.min.css
vendored
Normal file
6
public/css/bootstrap-reboot.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap-reboot.min.css.map
Normal file
1
public/css/bootstrap-reboot.min.css.map
Normal file
File diff suppressed because one or more lines are too long
594
public/css/bootstrap-reboot.rtl.css
vendored
Normal file
594
public/css/bootstrap-reboot.rtl.css
vendored
Normal file
@ -0,0 +1,594 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2024 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: right;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
line-height: inherit;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
|
1
public/css/bootstrap-reboot.rtl.css.map
Normal file
1
public/css/bootstrap-reboot.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
6
public/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
6
public/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap-reboot.rtl.min.css.map
Normal file
1
public/css/bootstrap-reboot.rtl.min.css.map
Normal file
File diff suppressed because one or more lines are too long
5402
public/css/bootstrap-utilities.css
vendored
Normal file
5402
public/css/bootstrap-utilities.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/css/bootstrap-utilities.css.map
Normal file
1
public/css/bootstrap-utilities.css.map
Normal file
File diff suppressed because one or more lines are too long
6
public/css/bootstrap-utilities.min.css
vendored
Normal file
6
public/css/bootstrap-utilities.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap-utilities.min.css.map
Normal file
1
public/css/bootstrap-utilities.min.css.map
Normal file
File diff suppressed because one or more lines are too long
5393
public/css/bootstrap-utilities.rtl.css
vendored
Normal file
5393
public/css/bootstrap-utilities.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/css/bootstrap-utilities.rtl.css.map
Normal file
1
public/css/bootstrap-utilities.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
6
public/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
6
public/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap-utilities.rtl.min.css.map
Normal file
1
public/css/bootstrap-utilities.rtl.min.css.map
Normal file
File diff suppressed because one or more lines are too long
12805
public/css/bootstrap.css
vendored
Normal file
12805
public/css/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/css/bootstrap.css.map
Normal file
1
public/css/bootstrap.css.map
Normal file
File diff suppressed because one or more lines are too long
12
public/css/bootstrap.min.css
vendored
Normal file
12
public/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap.min.css.map
Normal file
1
public/css/bootstrap.min.css.map
Normal file
File diff suppressed because one or more lines are too long
12779
public/css/bootstrap.rtl.css
vendored
Normal file
12779
public/css/bootstrap.rtl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/css/bootstrap.rtl.css.map
Normal file
1
public/css/bootstrap.rtl.css.map
Normal file
File diff suppressed because one or more lines are too long
12
public/css/bootstrap.rtl.min.css
vendored
Normal file
12
public/css/bootstrap.rtl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
public/css/bootstrap.rtl.min.css.map
Normal file
1
public/css/bootstrap.rtl.min.css.map
Normal file
File diff suppressed because one or more lines are too long
BIN
public/css/fonts/bootstrap-icons.woff
Normal file
BIN
public/css/fonts/bootstrap-icons.woff
Normal file
Binary file not shown.
BIN
public/css/fonts/bootstrap-icons.woff2
Normal file
BIN
public/css/fonts/bootstrap-icons.woff2
Normal file
Binary file not shown.
94
public/css/highlight.js/a11y-dark.css
Normal file
94
public/css/highlight.js/a11y-dark.css
Normal file
@ -0,0 +1,94 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: a11y-dark
|
||||
Author: @ericwbailey
|
||||
Maintainer: @ericwbailey
|
||||
|
||||
Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
|
||||
*/
|
||||
.hljs {
|
||||
background: #2b2b2b;
|
||||
color: #f8f8f2
|
||||
}
|
||||
/* Comment */
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #d4d0ab
|
||||
}
|
||||
/* Red */
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-tag,
|
||||
.hljs-name,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-regexp,
|
||||
.hljs-deletion {
|
||||
color: #ffa07a
|
||||
}
|
||||
/* Orange */
|
||||
.hljs-number,
|
||||
.hljs-built_in,
|
||||
.hljs-literal,
|
||||
.hljs-type,
|
||||
.hljs-params,
|
||||
.hljs-meta,
|
||||
.hljs-link {
|
||||
color: #f5ab35
|
||||
}
|
||||
/* Yellow */
|
||||
.hljs-attribute {
|
||||
color: #ffd700
|
||||
}
|
||||
/* Green */
|
||||
.hljs-string,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-addition {
|
||||
color: #abe338
|
||||
}
|
||||
/* Blue */
|
||||
.hljs-title,
|
||||
.hljs-section {
|
||||
color: #00e0e0
|
||||
}
|
||||
/* Purple */
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag {
|
||||
color: #dcc6e0
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-built_in,
|
||||
.hljs-bullet,
|
||||
.hljs-comment,
|
||||
.hljs-link,
|
||||
.hljs-literal,
|
||||
.hljs-meta,
|
||||
.hljs-number,
|
||||
.hljs-params,
|
||||
.hljs-string,
|
||||
.hljs-symbol,
|
||||
.hljs-type,
|
||||
.hljs-quote {
|
||||
color: highlight
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag {
|
||||
font-weight: bold
|
||||
}
|
||||
}
|
7
public/css/highlight.js/a11y-dark.min.css
vendored
Normal file
7
public/css/highlight.js/a11y-dark.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
||||
Theme: a11y-dark
|
||||
Author: @ericwbailey
|
||||
Maintainer: @ericwbailey
|
||||
|
||||
Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
|
||||
*/.hljs{background:#2b2b2b;color:#f8f8f2}.hljs-comment,.hljs-quote{color:#d4d0ab}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ffa07a}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#f5ab35}.hljs-attribute{color:gold}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#abe338}.hljs-section,.hljs-title{color:#00e0e0}.hljs-keyword,.hljs-selector-tag{color:#dcc6e0}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}}
|
94
public/css/highlight.js/a11y-light.css
Normal file
94
public/css/highlight.js/a11y-light.css
Normal file
@ -0,0 +1,94 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: a11y-light
|
||||
Author: @ericwbailey
|
||||
Maintainer: @ericwbailey
|
||||
|
||||
Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
|
||||
*/
|
||||
.hljs {
|
||||
background: #fefefe;
|
||||
color: #545454
|
||||
}
|
||||
/* Comment */
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #696969
|
||||
}
|
||||
/* Red */
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-tag,
|
||||
.hljs-name,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-regexp,
|
||||
.hljs-deletion {
|
||||
color: #d91e18
|
||||
}
|
||||
/* Orange */
|
||||
.hljs-number,
|
||||
.hljs-built_in,
|
||||
.hljs-literal,
|
||||
.hljs-type,
|
||||
.hljs-params,
|
||||
.hljs-meta,
|
||||
.hljs-link {
|
||||
color: #aa5d00
|
||||
}
|
||||
/* Yellow */
|
||||
.hljs-attribute {
|
||||
color: #aa5d00
|
||||
}
|
||||
/* Green */
|
||||
.hljs-string,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-addition {
|
||||
color: #008000
|
||||
}
|
||||
/* Blue */
|
||||
.hljs-title,
|
||||
.hljs-section {
|
||||
color: #007faa
|
||||
}
|
||||
/* Purple */
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag {
|
||||
color: #7928a1
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
@media screen and (-ms-high-contrast: active) {
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-built_in,
|
||||
.hljs-bullet,
|
||||
.hljs-comment,
|
||||
.hljs-link,
|
||||
.hljs-literal,
|
||||
.hljs-meta,
|
||||
.hljs-number,
|
||||
.hljs-params,
|
||||
.hljs-string,
|
||||
.hljs-symbol,
|
||||
.hljs-type,
|
||||
.hljs-quote {
|
||||
color: highlight
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag {
|
||||
font-weight: bold
|
||||
}
|
||||
}
|
7
public/css/highlight.js/a11y-light.min.css
vendored
Normal file
7
public/css/highlight.js/a11y-light.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
||||
Theme: a11y-light
|
||||
Author: @ericwbailey
|
||||
Maintainer: @ericwbailey
|
||||
|
||||
Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
|
||||
*/.hljs{background:#fefefe;color:#545454}.hljs-comment,.hljs-quote{color:#696969}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#d91e18}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#aa5d00}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:green}.hljs-section,.hljs-title{color:#007faa}.hljs-keyword,.hljs-selector-tag{color:#7928a1}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}}
|
127
public/css/highlight.js/agate.css
Normal file
127
public/css/highlight.js/agate.css
Normal file
@ -0,0 +1,127 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Agate
|
||||
Author: (c) Taufik Nurrohman <hi@taufik-nurrohman.com>
|
||||
Maintainer: @taufik-nurrohman
|
||||
Updated: 2021-04-24
|
||||
|
||||
#333
|
||||
#62c8f3
|
||||
#7bd694
|
||||
#888
|
||||
#a2fca2
|
||||
#ade5fc
|
||||
#b8d8a2
|
||||
#c6b4f0
|
||||
#d36363
|
||||
#fc9b9b
|
||||
#fcc28c
|
||||
#ffa
|
||||
#fff
|
||||
*/
|
||||
.hljs {
|
||||
background: #333;
|
||||
color: #fff
|
||||
}
|
||||
.hljs-doctag,
|
||||
.hljs-meta-keyword,
|
||||
.hljs-name,
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-code,
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-section,
|
||||
.hljs-tag {
|
||||
color: #62c8f3
|
||||
}
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-id,
|
||||
.hljs-template-variable,
|
||||
.hljs-variable {
|
||||
color: #ade5fc
|
||||
}
|
||||
.hljs-meta-string,
|
||||
.hljs-string {
|
||||
color: #a2fca2
|
||||
}
|
||||
.hljs-attr,
|
||||
.hljs-quote,
|
||||
.hljs-selector-attr {
|
||||
color: #7bd694
|
||||
}
|
||||
.hljs-tag .hljs-attr {
|
||||
color: inherit
|
||||
}
|
||||
.hljs-attribute,
|
||||
.hljs-title,
|
||||
.hljs-type {
|
||||
color: #ffa
|
||||
}
|
||||
.hljs-number,
|
||||
.hljs-symbol {
|
||||
color: #d36363
|
||||
}
|
||||
.hljs-bullet,
|
||||
.hljs-template-tag {
|
||||
color: #b8d8a2
|
||||
}
|
||||
.hljs-built_in,
|
||||
.hljs-keyword,
|
||||
.hljs-literal,
|
||||
.hljs-selector-tag {
|
||||
color: #fcc28c
|
||||
}
|
||||
.hljs-code,
|
||||
.hljs-comment,
|
||||
.hljs-formula {
|
||||
color: #888
|
||||
}
|
||||
.hljs-link,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-regexp {
|
||||
color: #c6b4f0
|
||||
}
|
||||
.hljs-meta {
|
||||
color: #fc9b9b
|
||||
}
|
||||
.hljs-deletion {
|
||||
background: #fc9b9b;
|
||||
color: #333
|
||||
}
|
||||
.hljs-addition {
|
||||
background: #a2fca2;
|
||||
color: #333
|
||||
}
|
||||
/* Purposely ignored */
|
||||
.hljs-operator,
|
||||
.hljs-params,
|
||||
.hljs-property,
|
||||
.hljs-punctuation {
|
||||
|
||||
}
|
||||
.hljs-subst {
|
||||
color: #fff
|
||||
}
|
||||
/* This applies only if HTML auto-merging plugin is enabled by user (#2889) */
|
||||
.hljs a {
|
||||
color: inherit
|
||||
}
|
||||
.hljs a:focus,
|
||||
.hljs a:hover {
|
||||
color: inherit;
|
||||
text-decoration: underline
|
||||
}
|
||||
.hljs mark {
|
||||
background: #555;
|
||||
color: inherit
|
||||
}
|
20
public/css/highlight.js/agate.min.css
vendored
Normal file
20
public/css/highlight.js/agate.min.css
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
||||
Theme: Agate
|
||||
Author: (c) Taufik Nurrohman <hi@taufik-nurrohman.com>
|
||||
Maintainer: @taufik-nurrohman
|
||||
Updated: 2021-04-24
|
||||
|
||||
#333
|
||||
#62c8f3
|
||||
#7bd694
|
||||
#888
|
||||
#a2fca2
|
||||
#ade5fc
|
||||
#b8d8a2
|
||||
#c6b4f0
|
||||
#d36363
|
||||
#fc9b9b
|
||||
#fcc28c
|
||||
#ffa
|
||||
#fff
|
||||
*/.hljs{background:#333;color:#fff}.hljs-doctag,.hljs-meta-keyword,.hljs-name,.hljs-strong{font-weight:700}.hljs-code,.hljs-emphasis{font-style:italic}.hljs-section,.hljs-tag{color:#62c8f3}.hljs-selector-class,.hljs-selector-id,.hljs-template-variable,.hljs-variable{color:#ade5fc}.hljs-meta-string,.hljs-string{color:#a2fca2}.hljs-attr,.hljs-quote,.hljs-selector-attr{color:#7bd694}.hljs-tag .hljs-attr{color:inherit}.hljs-attribute,.hljs-title,.hljs-type{color:#ffa}.hljs-number,.hljs-symbol{color:#d36363}.hljs-bullet,.hljs-template-tag{color:#b8d8a2}.hljs-built_in,.hljs-keyword,.hljs-literal,.hljs-selector-tag{color:#fcc28c}.hljs-code,.hljs-comment,.hljs-formula{color:#888}.hljs-link,.hljs-regexp,.hljs-selector-pseudo{color:#c6b4f0}.hljs-meta{color:#fc9b9b}.hljs-deletion{background:#fc9b9b;color:#333}.hljs-addition{background:#a2fca2;color:#333}.hljs-subst{color:#fff}.hljs a{color:inherit}.hljs a:focus,.hljs a:hover{color:inherit;text-decoration:underline}.hljs mark{background:#555;color:inherit}
|
75
public/css/highlight.js/an-old-hope.css
Normal file
75
public/css/highlight.js/an-old-hope.css
Normal file
@ -0,0 +1,75 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: An Old Hope – Star Wars Syntax
|
||||
Author: (c) Gustavo Costa <gusbemacbe@gmail.com>
|
||||
Maintainer: @gusbemacbe
|
||||
|
||||
Original theme - Ocean Dark Theme – by https://github.com/gavsiu
|
||||
Based on Jesse Leite's Atom syntax theme 'An Old Hope'
|
||||
https://github.com/JesseLeite/an-old-hope-syntax-atom
|
||||
*/
|
||||
/* Millenium Falcon */
|
||||
.hljs {
|
||||
background: #1C1D21;
|
||||
color: #c0c5ce
|
||||
}
|
||||
/* Death Star Comment */
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #B6B18B
|
||||
}
|
||||
/* Darth Vader */
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-tag,
|
||||
.hljs-name,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-regexp,
|
||||
.hljs-deletion {
|
||||
color: #EB3C54
|
||||
}
|
||||
/* Threepio */
|
||||
.hljs-number,
|
||||
.hljs-built_in,
|
||||
.hljs-literal,
|
||||
.hljs-type,
|
||||
.hljs-params,
|
||||
.hljs-meta,
|
||||
.hljs-link {
|
||||
color: #E7CE56
|
||||
}
|
||||
/* Luke Skywalker */
|
||||
.hljs-attribute {
|
||||
color: #EE7C2B
|
||||
}
|
||||
/* Obi Wan Kenobi */
|
||||
.hljs-string,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-addition {
|
||||
color: #4FB4D7
|
||||
}
|
||||
/* Yoda */
|
||||
.hljs-title,
|
||||
.hljs-section {
|
||||
color: #78BB65
|
||||
}
|
||||
/* Mace Windu */
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag {
|
||||
color: #B45EA4
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
9
public/css/highlight.js/an-old-hope.min.css
vendored
Normal file
9
public/css/highlight.js/an-old-hope.min.css
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
||||
Theme: An Old Hope – Star Wars Syntax
|
||||
Author: (c) Gustavo Costa <gusbemacbe@gmail.com>
|
||||
Maintainer: @gusbemacbe
|
||||
|
||||
Original theme - Ocean Dark Theme – by https://github.com/gavsiu
|
||||
Based on Jesse Leite's Atom syntax theme 'An Old Hope'
|
||||
https://github.com/JesseLeite/an-old-hope-syntax-atom
|
||||
*/.hljs{background:#1c1d21;color:#c0c5ce}.hljs-comment,.hljs-quote{color:#b6b18b}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#eb3c54}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#e7ce56}.hljs-attribute{color:#ee7c2b}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#4fb4d7}.hljs-section,.hljs-title{color:#78bb65}.hljs-keyword,.hljs-selector-tag{color:#b45ea4}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
|
60
public/css/highlight.js/androidstudio.css
Normal file
60
public/css/highlight.js/androidstudio.css
Normal file
@ -0,0 +1,60 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
Date: 24 Fev 2015
|
||||
Author: Pedro Oliveira <kanytu@gmail . com>
|
||||
*/
|
||||
.hljs {
|
||||
color: #a9b7c6;
|
||||
background: #282b2e
|
||||
}
|
||||
.hljs-number,
|
||||
.hljs-literal,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet {
|
||||
color: #6897BB
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-deletion {
|
||||
color: #cc7832
|
||||
}
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-link {
|
||||
color: #629755
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #808080
|
||||
}
|
||||
.hljs-meta {
|
||||
color: #bbb529
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-attribute,
|
||||
.hljs-addition {
|
||||
color: #6A8759
|
||||
}
|
||||
.hljs-section,
|
||||
.hljs-title,
|
||||
.hljs-type {
|
||||
color: #ffc66d
|
||||
}
|
||||
.hljs-name,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class {
|
||||
color: #e8bf6a
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
1
public/css/highlight.js/androidstudio.min.css
vendored
Normal file
1
public/css/highlight.js/androidstudio.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a9b7c6;background:#282b2e}.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#6897bb}.hljs-deletion,.hljs-keyword,.hljs-selector-tag{color:#cc7832}.hljs-link,.hljs-template-variable,.hljs-variable{color:#629755}.hljs-comment,.hljs-quote{color:grey}.hljs-meta{color:#bbb529}.hljs-addition,.hljs-attribute,.hljs-string{color:#6a8759}.hljs-section,.hljs-title,.hljs-type{color:#ffc66d}.hljs-name,.hljs-selector-class,.hljs-selector-id{color:#e8bf6a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
|
78
public/css/highlight.js/arduino-light.css
Normal file
78
public/css/highlight.js/arduino-light.css
Normal file
@ -0,0 +1,78 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
|
||||
Arduino® Light Theme - Stefania Mellai <s.mellai@arduino.cc>
|
||||
|
||||
*/
|
||||
.hljs {
|
||||
background: white;
|
||||
color: #434f54
|
||||
}
|
||||
.hljs-subst {
|
||||
color: #434f54
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-attribute,
|
||||
.hljs-selector-tag,
|
||||
.hljs-doctag,
|
||||
.hljs-name {
|
||||
color: #00979D
|
||||
}
|
||||
.hljs-built_in,
|
||||
.hljs-literal,
|
||||
.hljs-bullet,
|
||||
.hljs-code,
|
||||
.hljs-addition {
|
||||
color: #D35400
|
||||
}
|
||||
.hljs-regexp,
|
||||
.hljs-symbol,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-link,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo {
|
||||
color: #00979D
|
||||
}
|
||||
.hljs-type,
|
||||
.hljs-string,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-quote,
|
||||
.hljs-template-tag,
|
||||
.hljs-deletion {
|
||||
color: #005C5F
|
||||
}
|
||||
.hljs-comment {
|
||||
color: rgba(149,165,166,.8)
|
||||
}
|
||||
.hljs-meta .hljs-keyword {
|
||||
color: #728E00
|
||||
}
|
||||
.hljs-meta {
|
||||
color: #434f54
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-function {
|
||||
color: #728E00
|
||||
}
|
||||
.hljs-title,
|
||||
.hljs-section {
|
||||
color: #880000;
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-number {
|
||||
color: #8A7B52
|
||||
}
|
1
public/css/highlight.js/arduino-light.min.css
vendored
Normal file
1
public/css/highlight.js/arduino-light.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#434f54}.hljs-subst{color:#434f54}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-name,.hljs-selector-tag{color:#00979d}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-literal{color:#d35400}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#00979d}.hljs-deletion,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#005c5f}.hljs-comment{color:rgba(149,165,166,.8)}.hljs-meta .hljs-keyword{color:#728e00}.hljs-meta{color:#434f54}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-function{color:#728e00}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-number{color:#8a7b52}
|
66
public/css/highlight.js/arta.css
Normal file
66
public/css/highlight.js/arta.css
Normal file
@ -0,0 +1,66 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
Date: 17.V.2011
|
||||
Author: pumbur <pumbur@pumbur.net>
|
||||
*/
|
||||
.hljs {
|
||||
background: #222;
|
||||
color: #aaa
|
||||
}
|
||||
.hljs-subst {
|
||||
color: #aaa
|
||||
}
|
||||
.hljs-section {
|
||||
color: #fff
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote,
|
||||
.hljs-meta {
|
||||
color: #444
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-regexp {
|
||||
color: #ffcc33
|
||||
}
|
||||
.hljs-number,
|
||||
.hljs-addition {
|
||||
color: #00cc66
|
||||
}
|
||||
.hljs-built_in,
|
||||
.hljs-literal,
|
||||
.hljs-type,
|
||||
.hljs-template-variable,
|
||||
.hljs-attribute,
|
||||
.hljs-link {
|
||||
color: #32aaee
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class {
|
||||
color: #6644aa
|
||||
}
|
||||
.hljs-title,
|
||||
.hljs-variable,
|
||||
.hljs-deletion,
|
||||
.hljs-template-tag {
|
||||
color: #bb1166
|
||||
}
|
||||
.hljs-section,
|
||||
.hljs-doctag,
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
1
public/css/highlight.js/arta.min.css
vendored
Normal file
1
public/css/highlight.js/arta.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#222;color:#aaa}.hljs-subst{color:#aaa}.hljs-section{color:#fff}.hljs-comment,.hljs-meta,.hljs-quote{color:#444}.hljs-bullet,.hljs-regexp,.hljs-string,.hljs-symbol{color:#fc3}.hljs-addition,.hljs-number{color:#0c6}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-literal,.hljs-template-variable,.hljs-type{color:#32aaee}.hljs-keyword,.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-selector-tag{color:#64a}.hljs-deletion,.hljs-template-tag,.hljs-title,.hljs-variable{color:#b16}.hljs-doctag,.hljs-section,.hljs-strong{font-weight:700}.hljs-emphasis{font-style:italic}
|
45
public/css/highlight.js/ascetic.css
Normal file
45
public/css/highlight.js/ascetic.css
Normal file
@ -0,0 +1,45 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
|
||||
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
|
||||
|
||||
*/
|
||||
.hljs {
|
||||
background: white;
|
||||
color: black
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-section,
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-link {
|
||||
color: #888
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote,
|
||||
.hljs-meta,
|
||||
.hljs-deletion {
|
||||
color: #ccc
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-section,
|
||||
.hljs-name,
|
||||
.hljs-type,
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
1
public/css/highlight.js/ascetic.min.css
vendored
Normal file
1
public/css/highlight.js/ascetic.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-addition,.hljs-attribute,.hljs-bullet,.hljs-link,.hljs-section,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#888}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#ccc}.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-type{font-weight:700}.hljs-emphasis{font-style:italic}
|
105
public/css/highlight.js/atom-one-dark-reasonable.css
Normal file
105
public/css/highlight.js/atom-one-dark-reasonable.css
Normal file
@ -0,0 +1,105 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
|
||||
Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage
|
||||
|
||||
Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
|
||||
|
||||
*/
|
||||
.hljs {
|
||||
color: #abb2bf;
|
||||
background: #282c34
|
||||
}
|
||||
.hljs-keyword,
|
||||
.hljs-operator {
|
||||
color: #F92672
|
||||
}
|
||||
.hljs-pattern-match {
|
||||
color: #F92672
|
||||
}
|
||||
.hljs-pattern-match .hljs-constructor {
|
||||
color: #61aeee
|
||||
}
|
||||
.hljs-function {
|
||||
color: #61aeee
|
||||
}
|
||||
.hljs-function .hljs-params {
|
||||
color: #A6E22E
|
||||
}
|
||||
.hljs-function .hljs-params .hljs-typing {
|
||||
color: #FD971F
|
||||
}
|
||||
.hljs-module-access .hljs-module {
|
||||
color: #7e57c2
|
||||
}
|
||||
.hljs-constructor {
|
||||
color: #e2b93d
|
||||
}
|
||||
.hljs-constructor .hljs-string {
|
||||
color: #9CCC65
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #b18eb1;
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-doctag,
|
||||
.hljs-formula {
|
||||
color: #c678dd
|
||||
}
|
||||
.hljs-section,
|
||||
.hljs-name,
|
||||
.hljs-selector-tag,
|
||||
.hljs-deletion,
|
||||
.hljs-subst {
|
||||
color: #e06c75
|
||||
}
|
||||
.hljs-literal {
|
||||
color: #56b6c2
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-regexp,
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #98c379
|
||||
}
|
||||
.hljs-built_in,
|
||||
.hljs-title.class_,
|
||||
.hljs-class .hljs-title {
|
||||
color: #e6c07b
|
||||
}
|
||||
.hljs-attr,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-type,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-number {
|
||||
color: #d19a66
|
||||
}
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-link,
|
||||
.hljs-meta,
|
||||
.hljs-selector-id,
|
||||
.hljs-title {
|
||||
color: #61aeee
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-link {
|
||||
text-decoration: underline
|
||||
}
|
1
public/css/highlight.js/atom-one-dark-reasonable.min.css
vendored
Normal file
1
public/css/highlight.js/atom-one-dark-reasonable.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-keyword,.hljs-operator,.hljs-pattern-match{color:#f92672}.hljs-function,.hljs-pattern-match .hljs-constructor{color:#61aeee}.hljs-function .hljs-params{color:#a6e22e}.hljs-function .hljs-params .hljs-typing{color:#fd971f}.hljs-module-access .hljs-module{color:#7e57c2}.hljs-constructor{color:#e2b93d}.hljs-constructor .hljs-string{color:#9ccc65}.hljs-comment,.hljs-quote{color:#b18eb1;font-style:italic}.hljs-doctag,.hljs-formula{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
|
90
public/css/highlight.js/atom-one-dark.css
Normal file
90
public/css/highlight.js/atom-one-dark.css
Normal file
@ -0,0 +1,90 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
|
||||
Atom One Dark by Daniel Gamage
|
||||
Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
|
||||
|
||||
base: #282c34
|
||||
mono-1: #abb2bf
|
||||
mono-2: #818896
|
||||
mono-3: #5c6370
|
||||
hue-1: #56b6c2
|
||||
hue-2: #61aeee
|
||||
hue-3: #c678dd
|
||||
hue-4: #98c379
|
||||
hue-5: #e06c75
|
||||
hue-5-2: #be5046
|
||||
hue-6: #d19a66
|
||||
hue-6-2: #e6c07b
|
||||
|
||||
*/
|
||||
.hljs {
|
||||
color: #abb2bf;
|
||||
background: #282c34
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #5c6370;
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-doctag,
|
||||
.hljs-keyword,
|
||||
.hljs-formula {
|
||||
color: #c678dd
|
||||
}
|
||||
.hljs-section,
|
||||
.hljs-name,
|
||||
.hljs-selector-tag,
|
||||
.hljs-deletion,
|
||||
.hljs-subst {
|
||||
color: #e06c75
|
||||
}
|
||||
.hljs-literal {
|
||||
color: #56b6c2
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-regexp,
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #98c379
|
||||
}
|
||||
.hljs-attr,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-type,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-number {
|
||||
color: #d19a66
|
||||
}
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-link,
|
||||
.hljs-meta,
|
||||
.hljs-selector-id,
|
||||
.hljs-title {
|
||||
color: #61aeee
|
||||
}
|
||||
.hljs-built_in,
|
||||
.hljs-title.class_,
|
||||
.hljs-class .hljs-title {
|
||||
color: #e6c07b
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-link {
|
||||
text-decoration: underline
|
||||
}
|
1
public/css/highlight.js/atom-one-dark.min.css
vendored
Normal file
1
public/css/highlight.js/atom-one-dark.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#c678dd}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#98c379}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#d19a66}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
|
90
public/css/highlight.js/atom-one-light.css
Normal file
90
public/css/highlight.js/atom-one-light.css
Normal file
@ -0,0 +1,90 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*
|
||||
|
||||
Atom One Light by Daniel Gamage
|
||||
Original One Light Syntax theme from https://github.com/atom/one-light-syntax
|
||||
|
||||
base: #fafafa
|
||||
mono-1: #383a42
|
||||
mono-2: #686b77
|
||||
mono-3: #a0a1a7
|
||||
hue-1: #0184bb
|
||||
hue-2: #4078f2
|
||||
hue-3: #a626a4
|
||||
hue-4: #50a14f
|
||||
hue-5: #e45649
|
||||
hue-5-2: #c91243
|
||||
hue-6: #986801
|
||||
hue-6-2: #c18401
|
||||
|
||||
*/
|
||||
.hljs {
|
||||
color: #383a42;
|
||||
background: #fafafa
|
||||
}
|
||||
.hljs-comment,
|
||||
.hljs-quote {
|
||||
color: #a0a1a7;
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-doctag,
|
||||
.hljs-keyword,
|
||||
.hljs-formula {
|
||||
color: #a626a4
|
||||
}
|
||||
.hljs-section,
|
||||
.hljs-name,
|
||||
.hljs-selector-tag,
|
||||
.hljs-deletion,
|
||||
.hljs-subst {
|
||||
color: #e45649
|
||||
}
|
||||
.hljs-literal {
|
||||
color: #0184bb
|
||||
}
|
||||
.hljs-string,
|
||||
.hljs-regexp,
|
||||
.hljs-addition,
|
||||
.hljs-attribute,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #50a14f
|
||||
}
|
||||
.hljs-attr,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-type,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-number {
|
||||
color: #986801
|
||||
}
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-link,
|
||||
.hljs-meta,
|
||||
.hljs-selector-id,
|
||||
.hljs-title {
|
||||
color: #4078f2
|
||||
}
|
||||
.hljs-built_in,
|
||||
.hljs-title.class_,
|
||||
.hljs-class .hljs-title {
|
||||
color: #c18401
|
||||
}
|
||||
.hljs-emphasis {
|
||||
font-style: italic
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold
|
||||
}
|
||||
.hljs-link {
|
||||
text-decoration: underline
|
||||
}
|
1
public/css/highlight.js/atom-one-light.min.css
vendored
Normal file
1
public/css/highlight.js/atom-one-light.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}
|
163
public/css/highlight.js/base16/3024.css
Normal file
163
public/css/highlight.js/base16/3024.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: 3024
|
||||
Author: Jan T. Sott (http://github.com/idleberg)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme 3024
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #090300 Default Background
|
||||
base01 #3a3432 Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #4a4543 Selection Background
|
||||
base03 #5c5855 Comments, Invisibles, Line Highlighting
|
||||
base04 #807d7c Dark Foreground (Used for status bars)
|
||||
base05 #a5a2a2 Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #d6d5d4 Light Foreground (Not often used)
|
||||
base07 #f7f7f7 Light Background (Not often used)
|
||||
base08 #db2d20 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #e8bbd0 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #fded02 Classes, Markup Bold, Search Text Background
|
||||
base0B #01a252 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #b5e4f4 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #01a0e4 Functions, Methods, Attribute IDs, Headings
|
||||
base0E #a16a94 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #cdab53 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #a5a2a2;
|
||||
background: #090300
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #4a4543;
|
||||
color: #a5a2a2
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #5c5855 - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #5c5855
|
||||
}
|
||||
/* base04 - #807d7c - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #807d7c
|
||||
}
|
||||
/* base05 - #a5a2a2 - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #a5a2a2
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #db2d20
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #e8bbd0
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #fded02
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #fded02
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #01a252
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #b5e4f4
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #01a0e4
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #a16a94
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #a16a94;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #cdab53
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/3024.min.css
vendored
Normal file
7
public/css/highlight.js/base16/3024.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: 3024
|
||||
Author: Jan T. Sott (http://github.com/idleberg)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a5a2a2;background:#090300}.hljs ::selection,.hljs::selection{background-color:#4a4543;color:#a5a2a2}.hljs-comment{color:#5c5855}.hljs-tag{color:#807d7c}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a5a2a2}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#db2d20}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#e8bbd0}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fded02}.hljs-strong{font-weight:700;color:#fded02}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#01a252}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#b5e4f4}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#01a0e4}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a16a94}.hljs-emphasis{color:#a16a94;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cdab53}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/apathy.css
Normal file
163
public/css/highlight.js/base16/apathy.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Apathy
|
||||
Author: Jannik Siebert (https://github.com/janniks)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme apathy
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #031A16 Default Background
|
||||
base01 #0B342D Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #184E45 Selection Background
|
||||
base03 #2B685E Comments, Invisibles, Line Highlighting
|
||||
base04 #5F9C92 Dark Foreground (Used for status bars)
|
||||
base05 #81B5AC Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #A7CEC8 Light Foreground (Not often used)
|
||||
base07 #D2E7E4 Light Background (Not often used)
|
||||
base08 #3E9688 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #3E7996 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #3E4C96 Classes, Markup Bold, Search Text Background
|
||||
base0B #883E96 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #963E4C Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #96883E Functions, Methods, Attribute IDs, Headings
|
||||
base0E #4C963E Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #3E965B Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #81B5AC;
|
||||
background: #031A16
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #184E45;
|
||||
color: #81B5AC
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #2B685E - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #2B685E
|
||||
}
|
||||
/* base04 - #5F9C92 - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #5F9C92
|
||||
}
|
||||
/* base05 - #81B5AC - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #81B5AC
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #3E9688
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #3E7996
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #3E4C96
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #3E4C96
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #883E96
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #963E4C
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #96883E
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #4C963E
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #4C963E;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #3E965B
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/apathy.min.css
vendored
Normal file
7
public/css/highlight.js/base16/apathy.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Apathy
|
||||
Author: Jannik Siebert (https://github.com/janniks)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#81b5ac;background:#031a16}.hljs ::selection,.hljs::selection{background-color:#184e45;color:#81b5ac}.hljs-comment{color:#2b685e}.hljs-tag{color:#5f9c92}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#81b5ac}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#3e9688}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#3e7996}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#3e4c96}.hljs-strong{font-weight:700;color:#3e4c96}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#883e96}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#963e4c}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#96883e}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#4c963e}.hljs-emphasis{color:#4c963e;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#3e965b}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/apprentice.css
Normal file
163
public/css/highlight.js/base16/apprentice.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Apprentice
|
||||
Author: romainl
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme apprentice
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #262626 Default Background
|
||||
base01 #303030 Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #333333 Selection Background
|
||||
base03 #6C6C6C Comments, Invisibles, Line Highlighting
|
||||
base04 #787878 Dark Foreground (Used for status bars)
|
||||
base05 #BCBCBC Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #C9C9C9 Light Foreground (Not often used)
|
||||
base07 #FFFFFF Light Background (Not often used)
|
||||
base08 #5F8787 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #FF8700 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #5F8787 Classes, Markup Bold, Search Text Background
|
||||
base0B #87AF87 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #5F875F Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #FFFFAF Functions, Methods, Attribute IDs, Headings
|
||||
base0E #87AFD7 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #5F87AF Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #BCBCBC;
|
||||
background: #262626
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #333333;
|
||||
color: #BCBCBC
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #6C6C6C - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #6C6C6C
|
||||
}
|
||||
/* base04 - #787878 - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #787878
|
||||
}
|
||||
/* base05 - #BCBCBC - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #BCBCBC
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #5F8787
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #FF8700
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #5F8787
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #5F8787
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #87AF87
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #5F875F
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #FFFFAF
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #87AFD7
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #87AFD7;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #5F87AF
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/apprentice.min.css
vendored
Normal file
7
public/css/highlight.js/base16/apprentice.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Apprentice
|
||||
Author: romainl
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#bcbcbc;background:#262626}.hljs ::selection,.hljs::selection{background-color:#333;color:#bcbcbc}.hljs-comment{color:#6c6c6c}.hljs-tag{color:#787878}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#bcbcbc}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#5f8787}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ff8700}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#5f8787}.hljs-strong{font-weight:700;color:#5f8787}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#87af87}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5f875f}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ffffaf}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#87afd7}.hljs-emphasis{color:#87afd7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#5f87af}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/ashes.css
Normal file
163
public/css/highlight.js/base16/ashes.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Ashes
|
||||
Author: Jannik Siebert (https://github.com/janniks)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme ashes
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #1C2023 Default Background
|
||||
base01 #393F45 Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #565E65 Selection Background
|
||||
base03 #747C84 Comments, Invisibles, Line Highlighting
|
||||
base04 #ADB3BA Dark Foreground (Used for status bars)
|
||||
base05 #C7CCD1 Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #DFE2E5 Light Foreground (Not often used)
|
||||
base07 #F3F4F5 Light Background (Not often used)
|
||||
base08 #C7AE95 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #C7C795 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #AEC795 Classes, Markup Bold, Search Text Background
|
||||
base0B #95C7AE Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #95AEC7 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #AE95C7 Functions, Methods, Attribute IDs, Headings
|
||||
base0E #C795AE Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #C79595 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #C7CCD1;
|
||||
background: #1C2023
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #565E65;
|
||||
color: #C7CCD1
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #747C84 - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #747C84
|
||||
}
|
||||
/* base04 - #ADB3BA - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #ADB3BA
|
||||
}
|
||||
/* base05 - #C7CCD1 - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #C7CCD1
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #C7AE95
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #C7C795
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #AEC795
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #AEC795
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #95C7AE
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #95AEC7
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #AE95C7
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #C795AE
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #C795AE;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #C79595
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/ashes.min.css
vendored
Normal file
7
public/css/highlight.js/base16/ashes.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Ashes
|
||||
Author: Jannik Siebert (https://github.com/janniks)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c7ccd1;background:#1c2023}.hljs ::selection,.hljs::selection{background-color:#565e65;color:#c7ccd1}.hljs-comment{color:#747c84}.hljs-tag{color:#adb3ba}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c7ccd1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#c7ae95}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#c7c795}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#aec795}.hljs-strong{font-weight:700;color:#aec795}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#95c7ae}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#95aec7}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#ae95c7}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#c795ae}.hljs-emphasis{color:#c795ae;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#c79595}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/atelier-cave-light.css
Normal file
163
public/css/highlight.js/base16/atelier-cave-light.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Atelier Cave Light
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme atelier-cave-light
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #efecf4 Default Background
|
||||
base01 #e2dfe7 Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #8b8792 Selection Background
|
||||
base03 #7e7887 Comments, Invisibles, Line Highlighting
|
||||
base04 #655f6d Dark Foreground (Used for status bars)
|
||||
base05 #585260 Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #26232a Light Foreground (Not often used)
|
||||
base07 #19171c Light Background (Not often used)
|
||||
base08 #be4678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #aa573c Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #a06e3b Classes, Markup Bold, Search Text Background
|
||||
base0B #2a9292 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #398bc6 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #576ddb Functions, Methods, Attribute IDs, Headings
|
||||
base0E #955ae7 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #bf40bf Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #585260;
|
||||
background: #efecf4
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #8b8792;
|
||||
color: #585260
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #7e7887 - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #7e7887
|
||||
}
|
||||
/* base04 - #655f6d - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #655f6d
|
||||
}
|
||||
/* base05 - #585260 - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #585260
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #be4678
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #aa573c
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #a06e3b
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #a06e3b
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #2a9292
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #398bc6
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #576ddb
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #955ae7
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #955ae7;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #bf40bf
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/atelier-cave-light.min.css
vendored
Normal file
7
public/css/highlight.js/base16/atelier-cave-light.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Atelier Cave Light
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#585260;background:#efecf4}.hljs ::selection,.hljs::selection{background-color:#8b8792;color:#585260}.hljs-comment{color:#7e7887}.hljs-tag{color:#655f6d}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#585260}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#be4678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa573c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2a9292}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#398bc6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#576ddb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#955ae7}.hljs-emphasis{color:#955ae7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf40bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/atelier-cave.css
Normal file
163
public/css/highlight.js/base16/atelier-cave.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Atelier Cave
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme atelier-cave
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #19171c Default Background
|
||||
base01 #26232a Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #585260 Selection Background
|
||||
base03 #655f6d Comments, Invisibles, Line Highlighting
|
||||
base04 #7e7887 Dark Foreground (Used for status bars)
|
||||
base05 #8b8792 Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #e2dfe7 Light Foreground (Not often used)
|
||||
base07 #efecf4 Light Background (Not often used)
|
||||
base08 #be4678 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #aa573c Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #a06e3b Classes, Markup Bold, Search Text Background
|
||||
base0B #2a9292 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #398bc6 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #576ddb Functions, Methods, Attribute IDs, Headings
|
||||
base0E #955ae7 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #bf40bf Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #8b8792;
|
||||
background: #19171c
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #585260;
|
||||
color: #8b8792
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #655f6d - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #655f6d
|
||||
}
|
||||
/* base04 - #7e7887 - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #7e7887
|
||||
}
|
||||
/* base05 - #8b8792 - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #8b8792
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #be4678
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #aa573c
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #a06e3b
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #a06e3b
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #2a9292
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #398bc6
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #576ddb
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #955ae7
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #955ae7;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #bf40bf
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/atelier-cave.min.css
vendored
Normal file
7
public/css/highlight.js/base16/atelier-cave.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Atelier Cave
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#8b8792;background:#19171c}.hljs ::selection,.hljs::selection{background-color:#585260;color:#8b8792}.hljs-comment{color:#655f6d}.hljs-tag{color:#7e7887}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#8b8792}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#be4678}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#aa573c}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a06e3b}.hljs-strong{font-weight:700;color:#a06e3b}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#2a9292}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#398bc6}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#576ddb}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#955ae7}.hljs-emphasis{color:#955ae7;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#bf40bf}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/atelier-dune-light.css
Normal file
163
public/css/highlight.js/base16/atelier-dune-light.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Atelier Dune Light
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme atelier-dune-light
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #fefbec Default Background
|
||||
base01 #e8e4cf Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #a6a28c Selection Background
|
||||
base03 #999580 Comments, Invisibles, Line Highlighting
|
||||
base04 #7d7a68 Dark Foreground (Used for status bars)
|
||||
base05 #6e6b5e Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #292824 Light Foreground (Not often used)
|
||||
base07 #20201d Light Background (Not often used)
|
||||
base08 #d73737 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #b65611 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #ae9513 Classes, Markup Bold, Search Text Background
|
||||
base0B #60ac39 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #1fad83 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #6684e1 Functions, Methods, Attribute IDs, Headings
|
||||
base0E #b854d4 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #d43552 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #6e6b5e;
|
||||
background: #fefbec
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #a6a28c;
|
||||
color: #6e6b5e
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #999580 - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #999580
|
||||
}
|
||||
/* base04 - #7d7a68 - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #7d7a68
|
||||
}
|
||||
/* base05 - #6e6b5e - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #6e6b5e
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #d73737
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #b65611
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #ae9513
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #ae9513
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #60ac39
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #1fad83
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #6684e1
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #b854d4
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #b854d4;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #d43552
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/atelier-dune-light.min.css
vendored
Normal file
7
public/css/highlight.js/base16/atelier-dune-light.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Atelier Dune Light
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#6e6b5e;background:#fefbec}.hljs ::selection,.hljs::selection{background-color:#a6a28c;color:#6e6b5e}.hljs-comment{color:#999580}.hljs-tag{color:#7d7a68}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#6e6b5e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d73737}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b65611}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae9513}.hljs-strong{font-weight:700;color:#ae9513}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#60ac39}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1fad83}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6684e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b854d4}.hljs-emphasis{color:#b854d4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d43552}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/atelier-dune.css
Normal file
163
public/css/highlight.js/base16/atelier-dune.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Atelier Dune
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme atelier-dune
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #20201d Default Background
|
||||
base01 #292824 Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #6e6b5e Selection Background
|
||||
base03 #7d7a68 Comments, Invisibles, Line Highlighting
|
||||
base04 #999580 Dark Foreground (Used for status bars)
|
||||
base05 #a6a28c Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #e8e4cf Light Foreground (Not often used)
|
||||
base07 #fefbec Light Background (Not often used)
|
||||
base08 #d73737 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #b65611 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #ae9513 Classes, Markup Bold, Search Text Background
|
||||
base0B #60ac39 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #1fad83 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #6684e1 Functions, Methods, Attribute IDs, Headings
|
||||
base0E #b854d4 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #d43552 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #a6a28c;
|
||||
background: #20201d
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #6e6b5e;
|
||||
color: #a6a28c
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #7d7a68 - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #7d7a68
|
||||
}
|
||||
/* base04 - #999580 - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #999580
|
||||
}
|
||||
/* base05 - #a6a28c - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #a6a28c
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #d73737
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #b65611
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #ae9513
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #ae9513
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #60ac39
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #1fad83
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #6684e1
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #b854d4
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #b854d4;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #d43552
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/atelier-dune.min.css
vendored
Normal file
7
public/css/highlight.js/base16/atelier-dune.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Atelier Dune
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a6a28c;background:#20201d}.hljs ::selection,.hljs::selection{background-color:#6e6b5e;color:#a6a28c}.hljs-comment{color:#7d7a68}.hljs-tag{color:#999580}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a6a28c}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#d73737}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#b65611}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#ae9513}.hljs-strong{font-weight:700;color:#ae9513}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#60ac39}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#1fad83}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#6684e1}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#b854d4}.hljs-emphasis{color:#b854d4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d43552}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
163
public/css/highlight.js/base16/atelier-estuary-light.css
Normal file
163
public/css/highlight.js/base16/atelier-estuary-light.css
Normal file
@ -0,0 +1,163 @@
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
/*!
|
||||
Theme: Atelier Estuary Light
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/
|
||||
/*
|
||||
WARNING: DO NOT EDIT THIS FILE DIRECTLY.
|
||||
|
||||
This theme file was auto-generated from the Base16 scheme atelier-estuary-light
|
||||
by the Highlight.js Base16 template builder.
|
||||
|
||||
- https://github.com/highlightjs/base16-highlightjs
|
||||
*/
|
||||
/*
|
||||
base00 #f4f3ec Default Background
|
||||
base01 #e7e6df Lighter Background (Used for status bars, line number and folding marks)
|
||||
base02 #929181 Selection Background
|
||||
base03 #878573 Comments, Invisibles, Line Highlighting
|
||||
base04 #6c6b5a Dark Foreground (Used for status bars)
|
||||
base05 #5f5e4e Default Foreground, Caret, Delimiters, Operators
|
||||
base06 #302f27 Light Foreground (Not often used)
|
||||
base07 #22221b Light Background (Not often used)
|
||||
base08 #ba6236 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted
|
||||
base09 #ae7313 Integers, Boolean, Constants, XML Attributes, Markup Link Url
|
||||
base0A #a5980d Classes, Markup Bold, Search Text Background
|
||||
base0B #7d9726 Strings, Inherited Class, Markup Code, Diff Inserted
|
||||
base0C #5b9d48 Support, Regular Expressions, Escape Characters, Markup Quotes
|
||||
base0D #36a166 Functions, Methods, Attribute IDs, Headings
|
||||
base0E #5f9182 Keywords, Storage, Selector, Markup Italic, Diff Changed
|
||||
base0F #9d6c7c Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?>
|
||||
*/
|
||||
pre code.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 1em
|
||||
}
|
||||
code.hljs {
|
||||
padding: 3px 5px
|
||||
}
|
||||
.hljs {
|
||||
color: #5f5e4e;
|
||||
background: #f4f3ec
|
||||
}
|
||||
.hljs::selection,
|
||||
.hljs ::selection {
|
||||
background-color: #929181;
|
||||
color: #5f5e4e
|
||||
}
|
||||
/* purposely do not highlight these things */
|
||||
.hljs-formula,
|
||||
.hljs-params,
|
||||
.hljs-property {
|
||||
|
||||
}
|
||||
/* base03 - #878573 - Comments, Invisibles, Line Highlighting */
|
||||
.hljs-comment {
|
||||
color: #878573
|
||||
}
|
||||
/* base04 - #6c6b5a - Dark Foreground (Used for status bars) */
|
||||
.hljs-tag {
|
||||
color: #6c6b5a
|
||||
}
|
||||
/* base05 - #5f5e4e - Default Foreground, Caret, Delimiters, Operators */
|
||||
.hljs-subst,
|
||||
.hljs-punctuation,
|
||||
.hljs-operator {
|
||||
color: #5f5e4e
|
||||
}
|
||||
.hljs-operator {
|
||||
opacity: 0.7
|
||||
}
|
||||
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */
|
||||
.hljs-bullet,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-deletion {
|
||||
color: #ba6236
|
||||
}
|
||||
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */
|
||||
.hljs-symbol,
|
||||
.hljs-number,
|
||||
.hljs-link,
|
||||
.hljs-attr,
|
||||
.hljs-variable.constant_,
|
||||
.hljs-literal {
|
||||
color: #ae7313
|
||||
}
|
||||
/* base0A - Classes, Markup Bold, Search Text Background */
|
||||
.hljs-title,
|
||||
.hljs-class .hljs-title,
|
||||
.hljs-title.class_ {
|
||||
color: #a5980d
|
||||
}
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
color: #a5980d
|
||||
}
|
||||
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */
|
||||
.hljs-code,
|
||||
.hljs-addition,
|
||||
.hljs-title.class_.inherited__,
|
||||
.hljs-string {
|
||||
color: #7d9726
|
||||
}
|
||||
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */
|
||||
/* guessing */
|
||||
.hljs-built_in,
|
||||
.hljs-doctag,
|
||||
.hljs-quote,
|
||||
.hljs-keyword.hljs-atrule,
|
||||
.hljs-regexp {
|
||||
color: #5b9d48
|
||||
}
|
||||
/* base0D - Functions, Methods, Attribute IDs, Headings */
|
||||
.hljs-function .hljs-title,
|
||||
.hljs-attribute,
|
||||
.ruby .hljs-property,
|
||||
.hljs-title.function_,
|
||||
.hljs-section {
|
||||
color: #36a166
|
||||
}
|
||||
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */
|
||||
/* .hljs-selector-id, */
|
||||
/* .hljs-selector-class, */
|
||||
/* .hljs-selector-attr, */
|
||||
/* .hljs-selector-pseudo, */
|
||||
.hljs-type,
|
||||
.hljs-template-tag,
|
||||
.diff .hljs-meta,
|
||||
.hljs-keyword {
|
||||
color: #5f9182
|
||||
}
|
||||
.hljs-emphasis {
|
||||
color: #5f9182;
|
||||
font-style: italic
|
||||
}
|
||||
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */
|
||||
/*
|
||||
prevent top level .keyword and .string scopes
|
||||
from leaking into meta by accident
|
||||
*/
|
||||
.hljs-meta,
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta .hljs-string {
|
||||
color: #9d6c7c
|
||||
}
|
||||
/* for v10 compatible themes */
|
||||
.hljs-meta .hljs-keyword,
|
||||
.hljs-meta-keyword {
|
||||
font-weight: bold
|
||||
}
|
7
public/css/highlight.js/base16/atelier-estuary-light.min.css
vendored
Normal file
7
public/css/highlight.js/base16/atelier-estuary-light.min.css
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Theme: Atelier Estuary Light
|
||||
Author: Bram de Haan (http://atelierbramdehaan.nl)
|
||||
License: ~ MIT (or more permissive) [via base16-schemes-source]
|
||||
Maintainer: @highlightjs/core-team
|
||||
Version: 2021.09.0
|
||||
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#5f5e4e;background:#f4f3ec}.hljs ::selection,.hljs::selection{background-color:#929181;color:#5f5e4e}.hljs-comment{color:#878573}.hljs-tag{color:#6c6b5a}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#5f5e4e}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#ba6236}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ae7313}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a5980d}.hljs-strong{font-weight:700;color:#a5980d}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#7d9726}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#5b9d48}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#36a166}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#5f9182}.hljs-emphasis{color:#5f9182;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#9d6c7c}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user