增加配置项与图标库

This commit is contained in:
2025-12-12 18:42:22 +08:00
parent cc4e07f5ca
commit 9f21fa1f4f
5686 changed files with 408136 additions and 0 deletions

150
public/font-awesome/scss/_animated.scss vendored Normal file
View File

@@ -0,0 +1,150 @@
// animating icons
// --------------------------
@use 'variables' as v;
.#{v.$css-prefix}-beat {
animation-name: #{v.$css-prefix}-beat;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, ease-in-out);
}
.#{v.$css-prefix}-bounce {
animation-name: #{v.$css-prefix}-bounce;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, cubic-bezier(0.280, 0.840, 0.420, 1));
}
.#{v.$css-prefix}-fade {
animation-name: #{v.$css-prefix}-fade;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));
}
.#{v.$css-prefix}-beat-fade {
animation-name: #{v.$css-prefix}-beat-fade;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, cubic-bezier(.4,0,.6,1));
}
.#{v.$css-prefix}-flip {
animation-name: #{v.$css-prefix}-flip;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, ease-in-out);
}
.#{v.$css-prefix}-shake {
animation-name: #{v.$css-prefix}-shake;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, linear);
}
.#{v.$css-prefix}-spin {
animation-name: #{v.$css-prefix}-spin;
animation-delay: var(--#{v.$css-prefix}-animation-delay, 0s);
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 2s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, linear);
}
.#{v.$css-prefix}-spin-reverse {
--#{v.$css-prefix}-animation-direction: reverse;
}
.#{v.$css-prefix}-pulse,
.#{v.$css-prefix}-spin-pulse {
animation-name: #{v.$css-prefix}-spin;
animation-direction: var(--#{v.$css-prefix}-animation-direction, normal);
animation-duration: var(--#{v.$css-prefix}-animation-duration, 1s);
animation-iteration-count: var(--#{v.$css-prefix}-animation-iteration-count, infinite);
animation-timing-function: var(--#{v.$css-prefix}-animation-timing, steps(8));
}
// if agent or operating system prefers reduced motion, disable animations
// see: https://www.smashingmagazine.com/2020/09/design-reduced-motion-sensitivities/
// see: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion
@media (prefers-reduced-motion: reduce) {
.#{v.$css-prefix}-beat,
.#{v.$css-prefix}-bounce,
.#{v.$css-prefix}-fade,
.#{v.$css-prefix}-beat-fade,
.#{v.$css-prefix}-flip,
.#{v.$css-prefix}-pulse,
.#{v.$css-prefix}-shake,
.#{v.$css-prefix}-spin,
.#{v.$css-prefix}-spin-pulse {
animation: none !important;
transition: none !important;
}
}
@keyframes #{v.$css-prefix}-beat {
0%, 90% { transform: scale(1); }
45% { transform: scale(var(--#{v.$css-prefix}-beat-scale, 1.25)); }
}
@keyframes #{v.$css-prefix}-bounce {
0% { transform: scale(1,1) translateY(0); }
10% { transform: scale(var(--#{v.$css-prefix}-bounce-start-scale-x, 1.1),var(--#{v.$css-prefix}-bounce-start-scale-y, 0.9)) translateY(0); }
30% { transform: scale(var(--#{v.$css-prefix}-bounce-jump-scale-x, 0.9),var(--#{v.$css-prefix}-bounce-jump-scale-y, 1.1)) translateY(var(--#{v.$css-prefix}-bounce-height, -0.5em)); }
50% { transform: scale(var(--#{v.$css-prefix}-bounce-land-scale-x, 1.05),var(--#{v.$css-prefix}-bounce-land-scale-y, 0.95)) translateY(0); }
57% { transform: scale(1,1) translateY(var(--#{v.$css-prefix}-bounce-rebound, -0.125em)); }
64% { transform: scale(1,1) translateY(0); }
100% { transform: scale(1,1) translateY(0); }
}
@keyframes #{v.$css-prefix}-fade {
50% { opacity: var(--#{v.$css-prefix}-fade-opacity, 0.4); }
}
@keyframes #{v.$css-prefix}-beat-fade {
0%, 100% {
opacity: var(--#{v.$css-prefix}-beat-fade-opacity, 0.4);
transform: scale(1);
}
50% {
opacity: 1;
transform: scale(var(--#{v.$css-prefix}-beat-fade-scale, 1.125));
}
}
@keyframes #{v.$css-prefix}-flip {
50% {
transform: rotate3d(var(--#{v.$css-prefix}-flip-x, 0), var(--#{v.$css-prefix}-flip-y, 1), var(--#{v.$css-prefix}-flip-z, 0), var(--#{v.$css-prefix}-flip-angle, -180deg));
}
}
@keyframes #{v.$css-prefix}-shake {
0% { transform: rotate(-15deg); }
4% { transform: rotate(15deg); }
8%, 24% { transform: rotate(-18deg); }
12%, 28% { transform: rotate(18deg); }
16% { transform: rotate(-22deg); }
20% { transform: rotate(22deg); }
32% { transform: rotate(-12deg); }
36% { transform: rotate(12deg); }
40%, 100% { transform: rotate(0deg); }
}
@keyframes #{v.$css-prefix}-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

24
public/font-awesome/scss/_bordered.scss vendored Normal file
View File

@@ -0,0 +1,24 @@
// bordered icons
// -------------------------
@use 'variables' as v;
/* Heads Up: Bordered Icons will not be supported in the future!
- This feature will be deprecated in the next major release of Font Awesome (v8)!
- You may continue to use it in this version *v7), but it will not be supported in Font Awesome v8.
*/
/* Notes:
* --@{v.$css-prefix}-border-width = 1/16 by default (to render as ~1px based on a 16px default font-size)
* --@{v.$css-prefix}-border-padding =
** 3/16 for vertical padding (to give ~2px of vertical whitespace around an icon considering it's vertical alignment)
** 4/16 for horizontal padding (to give ~4px of horizontal whitespace around an icon)
*/
.#{v.$css-prefix}-border {
border-color: var(--#{v.$css-prefix}-border-color, #{v.$border-color});
border-radius: var(--#{v.$css-prefix}-border-radius, #{v.$border-radius});
border-style: var(--#{v.$css-prefix}-border-style, #{v.$border-style});
border-width: var(--#{v.$css-prefix}-border-width, #{v.$border-width});
box-sizing: var(--#{v.$css-prefix}-border-box-sizing, #{v.$border-box-sizing});
padding: var(--#{v.$css-prefix}-border-padding, #{v.$border-padding});
}

43
public/font-awesome/scss/_core.scss vendored Normal file
View File

@@ -0,0 +1,43 @@
// base icon class definition
// -------------------------
@use 'variables' as v;
@use 'mixins' as m;
.#{v.$css-prefix}-solid,
.#{v.$css-prefix}-regular,
.#{v.$css-prefix}-brands,
.#{v.$css-prefix}-classic,
.fas,
.far,
.fab,
.#{v.$css-prefix} {
@include m.fa-icon();
}
:is(
.fas,
.far,
.fab,
.#{v.$css-prefix}-solid,
.#{v.$css-prefix}-regular,
.#{v.$css-prefix}-brands,
.#{v.$css-prefix}-classic,
.fa
)::before {
content: var(#{v.$icon-property})/"";
}
@supports not (content: ''/'') {
:is(
.fas,
.far,
.fab,
.#{v.$css-prefix}-solid,
.#{v.$css-prefix}-regular,
.#{v.$css-prefix}-brands,
.#{v.$css-prefix}-classic,
.fa
)::before {
content: var(#{v.$icon-property});
}
}

3
public/font-awesome/scss/_fa.scss vendored Normal file
View File

@@ -0,0 +1,3 @@
@forward "functions";
@forward "variables";
@forward "mixins";

View File

@@ -0,0 +1,8 @@
// functions
// --------------------------
@use "sass:string";
// fa-content: convenience function used to set content property
@function fa-content($var) {
@return string.unquote("\"#{ $var }\"");
}

15
public/font-awesome/scss/_icons.scss vendored Normal file
View File

@@ -0,0 +1,15 @@
// specific icon class definition
// -------------------------
@use "sass:string";
@use 'variables' as v;
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
@each $name, $icon in v.$icons {
.#{v.$css-prefix}-#{$name} {
#{v.$icon-property}: string.unquote("\"#{ $icon }\"");
}
}

19
public/font-awesome/scss/_list.scss vendored Normal file
View File

@@ -0,0 +1,19 @@
// icons in a list
// -------------------------
@use 'variables' as v;
.#{v.$css-prefix}-ul {
list-style-type: none;
margin-inline-start: var(--#{v.$css-prefix}-li-margin, #{v.$li-margin});
padding-inline-start: 0;
> li { position: relative; }
}
.#{v.$css-prefix}-li {
inset-inline-start: calc(-1 * var(--#{v.$css-prefix}-li-width, #{v.$li-width}));
position: absolute;
text-align: center;
width: var(--#{v.$css-prefix}-li-width, #{v.$li-width});
line-height: inherit;
}

28
public/font-awesome/scss/_mixins.scss vendored Normal file
View File

@@ -0,0 +1,28 @@
// mixins
// --------------------------
@use 'variables' as v;
// base rendering for an icon
@mixin fa-icon($family: v.$family) {
--_#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family, var(--#{v.$css-prefix}-style-family, '#{$family}'));
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: var(--#{v.$css-prefix}-display, #{v.$display});
font-family: var(--_#{v.$css-prefix}-family);
font-feature-settings: normal;
font-style: normal;
font-synthesis: none;
font-variant: normal;
font-weight: var(--#{v.$css-prefix}-style, #{v.$style});
line-height: 1;
text-align: center;
text-rendering: auto;
width: var(--#{v.$css-prefix}-width, #{v.$fw-width});
}
// sets relative font-sizing and alignment (in _sizing)
@mixin fa-size ($font-size) {
font-size: calc(#{$font-size} / #{v.$size-scale-base} * 1em); /* converts a #{$font-size}px size into an em-based value that's relative to the scale's #{v.$size-scale-base}px base */
line-height: calc(1 / #{$font-size} * 1em); /* sets the line-height of the icon back to that of it's parent */
vertical-align: calc(((6 / #{$font-size}) - (3 / 8)) * 1em); /* vertically centers the icon taking into account the surrounding text's descender */
}

15
public/font-awesome/scss/_pulled.scss vendored Normal file
View File

@@ -0,0 +1,15 @@
// pulled icons
// -------------------------
@use 'variables' as v;
.#{v.$css-prefix}-pull-left,
.#{v.$css-prefix}-pull-start {
float: inline-start;
margin-inline-end: var(--#{v.$css-prefix}-pull-margin, #{v.$pull-margin});
}
.#{v.$css-prefix}-pull-right,
.#{v.$css-prefix}-pull-end {
float: inline-end;
margin-inline-start: var(--#{v.$css-prefix}-pull-margin, #{v.$pull-margin});
}

View File

@@ -0,0 +1,32 @@
// rotating + flipping icons
// -------------------------
@use 'variables' as v;
.#{v.$css-prefix}-rotate-90 {
transform: rotate(90deg);
}
.#{v.$css-prefix}-rotate-180 {
transform: rotate(180deg);
}
.#{v.$css-prefix}-rotate-270 {
transform: rotate(270deg);
}
.#{v.$css-prefix}-flip-horizontal {
transform: scale(-1, 1);
}
.#{v.$css-prefix}-flip-vertical {
transform: scale(1, -1);
}
.#{v.$css-prefix}-flip-both,
.#{v.$css-prefix}-flip-horizontal.#{v.$css-prefix}-flip-vertical {
transform: scale(-1, -1);
}
.#{v.$css-prefix}-rotate-by {
transform: rotate(var(--#{v.$css-prefix}-rotate-angle, 0));
}

2193
public/font-awesome/scss/_shims.scss vendored Normal file

File diff suppressed because it is too large Load Diff

18
public/font-awesome/scss/_sizing.scss vendored Normal file
View File

@@ -0,0 +1,18 @@
// sizing icons
// -------------------------
@use 'variables' as v;
@use 'mixins' as m;
// literal magnification scale
@for $i from 1 through 10 {
.#{v.$css-prefix}-#{$i}x {
font-size: $i * 1em;
}
}
// step-based scale (with alignment)
@each $size, $value in v.$sizes {
.#{v.$css-prefix}-#{$size} {
@include m.fa-size($value);
}
}

35
public/font-awesome/scss/_stacked.scss vendored Normal file
View File

@@ -0,0 +1,35 @@
// stacking icons
// -------------------------
@use 'variables' as v;
.#{v.$css-prefix}-stack {
display: inline-block;
height: 2em;
line-height: 2em;
position: relative;
vertical-align: v.$stack-vertical-align;
width: v.$stack-width;
}
.#{v.$css-prefix}-stack-1x,
.#{v.$css-prefix}-stack-2x {
--#{v.$css-prefix}-width: 100%;
inset: 0;
position: absolute;
text-align: center;
width: var(--#{v.$css-prefix}-width);
z-index: var(--#{v.$css-prefix}-stack-z-index, #{v.$stack-z-index});
}
.#{v.$css-prefix}-stack-1x {
line-height: inherit;
}
.#{v.$css-prefix}-stack-2x {
font-size: 2em;
}
.#{v.$css-prefix}-inverse {
color: var(--#{v.$css-prefix}-inverse, #{v.$inverse});
}

5130
public/font-awesome/scss/_variables.scss vendored Normal file

File diff suppressed because it is too large Load Diff

12
public/font-awesome/scss/_widths.scss vendored Normal file
View File

@@ -0,0 +1,12 @@
// icon widths
// -------------------------
@use 'variables' as v;
.#{v.$css-prefix}-width-auto {
--#{v.$css-prefix}-width: auto;
}
.#{v.$css-prefix}-fw,
.#{v.$css-prefix}-width-fixed {
--#{v.$css-prefix}-width: #{v.$fw-width};
}

45
public/font-awesome/scss/brands.scss vendored Normal file
View File

@@ -0,0 +1,45 @@
/*!
* Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2025 Fonticons, Inc.
*/
@use "sass:string";
@use 'variables' as v;
@use 'mixins' as m;
:root, :host {
--#{v.$css-prefix}-family-brands: 'Font Awesome 7 Brands';
--#{v.$css-prefix}-font-brands: normal 400 1em/1 var(--#{v.$css-prefix}-family-brands);
}
@font-face {
font-family: 'Font Awesome 7 Brands';
font-style: normal;
font-weight: 400;
font-display: v.$font-display;
src: url('#{v.$font-path}/fa-brands-400.woff2');
}
.fab,
.#{v.$css-prefix}-brands,
.#{v.$css-prefix}-classic.#{v.$css-prefix}-brands {
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-brands);
--#{v.$css-prefix}-style: 400;
}
@each $name, $icon in v.$brand-icons {
.#{v.$css-prefix}-#{$name} {
#{v.$icon-property}: string.unquote("\"#{ $icon }\"");
}
}
// convenience mixin for declaring pseudo-elements by CSS variable,
// including all style-specific font properties and ::before elements.
@mixin icon($var) {
@include m.fa-icon(Font Awesome 7 Brands);
@extend .#{v.$css-prefix}-brands;
&::before {
content: string.unquote("\"#{ $var }\"");
}
}

View File

@@ -0,0 +1,18 @@
/*!
* Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2025 Fonticons, Inc.
*/
// Font Awesome core compile (Web Fonts-based)
// -------------------------
@use 'core';
@use 'sizing';
@use 'widths';
@use 'list';
@use 'bordered';
@use 'pulled';
@use 'animated';
@use 'rotated-flipped';
@use 'stacked';
@use 'icons';

51
public/font-awesome/scss/regular.scss vendored Normal file
View File

@@ -0,0 +1,51 @@
/*!
* Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2025 Fonticons, Inc.
*/
@use "sass:string";
@use 'variables' as v;
@use 'mixins' as m;
:root, :host {
--#{v.$css-prefix}-family-classic: '#{ v.$family }';
--#{v.$css-prefix}-font-regular: normal 400 1em/1 var(--#{v.$css-prefix}-family-classic);
/* deprecated: this older custom property will be removed next major release */
--#{v.$css-prefix}-style-family-classic: var(--#{v.$css-prefix}-family-classic);
}
@font-face {
font-family: 'Font Awesome 7 Free';
font-style: normal;
font-weight: 400;
font-display: v.$font-display;
src: url('#{v.$font-path}/fa-regular-400.woff2');
}
.far {
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-classic);
--#{v.$css-prefix}-style: 400;
}
.#{v.$css-prefix}-classic {
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-classic);
}
.#{v.$css-prefix}-regular {
--#{v.$css-prefix}-style: 400;
}
// convenience mixin for declaring pseudo-elements by CSS variable,
// including all style-specific font properties and ::before elements.
@mixin icon($var) {
@include m.fa-icon(Font Awesome 7 Free);
@extend .#{v.$css-prefix}-regular;
@extend .#{v.$css-prefix}-classic;
&::before {
content: string.unquote("\"#{ $var }\"");
}
}

51
public/font-awesome/scss/solid.scss vendored Normal file
View File

@@ -0,0 +1,51 @@
/*!
* Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2025 Fonticons, Inc.
*/
@use "sass:string";
@use 'variables' as v;
@use 'mixins' as m;
:root, :host {
--#{v.$css-prefix}-family-classic: '#{ v.$family }';
--#{v.$css-prefix}-font-solid: normal 900 1em/1 var(--#{v.$css-prefix}-family-classic);
/* deprecated: this older custom property will be removed next major release */
--#{v.$css-prefix}-style-family-classic: var(--#{v.$css-prefix}-family-classic);
}
@font-face {
font-family: 'Font Awesome 7 Free';
font-style: normal;
font-weight: 900;
font-display: v.$font-display;
src: url('#{v.$font-path}/fa-solid-900.woff2');
}
.fas {
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-classic);
--#{v.$css-prefix}-style: 900;
}
.#{v.$css-prefix}-classic {
--#{v.$css-prefix}-family: var(--#{v.$css-prefix}-family-classic);
}
.#{v.$css-prefix}-solid {
--#{v.$css-prefix}-style: 900;
}
// convenience mixin for declaring pseudo-elements by CSS variable,
// including all style-specific font properties and ::before elements.
@mixin icon($var) {
@include m.fa-icon(Font Awesome 7 Free);
@extend .#{v.$css-prefix}-solid;
@extend .#{v.$css-prefix}-classic;
&::before {
content: string.unquote("\"#{ $var }\"");
}
}

11
public/font-awesome/scss/v4-shims.scss vendored Normal file
View File

@@ -0,0 +1,11 @@
/*!
* Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2025 Fonticons, Inc.
*/
// V4 shims compile (Web Fonts-based)
// -------------------------
@use 'functions';
@use 'variables' as v;
@use 'shims';