ezal-theme-example 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/assets/scripts/404.ts +353 -0
  3. package/assets/scripts/_article.ts +290 -0
  4. package/assets/scripts/_base.ts +65 -0
  5. package/assets/scripts/_pagefind.d.ts +424 -0
  6. package/assets/scripts/_search.ts +88 -0
  7. package/assets/scripts/_utils.ts +74 -0
  8. package/assets/scripts/archive.ts +143 -0
  9. package/assets/scripts/article.ts +18 -0
  10. package/assets/scripts/category.ts +4 -0
  11. package/assets/scripts/home.ts +73 -0
  12. package/assets/scripts/links.ts +14 -0
  13. package/assets/scripts/main.ts +11 -0
  14. package/assets/scripts/page.ts +11 -0
  15. package/assets/scripts/tag.ts +4 -0
  16. package/assets/scripts/tsconfig.json +10 -0
  17. package/assets/styles/404.styl +31 -0
  18. package/assets/styles/_article/fold.styl +15 -0
  19. package/assets/styles/_article/footnote.styl +12 -0
  20. package/assets/styles/_article/heading.styl +29 -0
  21. package/assets/styles/_article/image.styl +30 -0
  22. package/assets/styles/_article/kbd.styl +10 -0
  23. package/assets/styles/_article/links.styl +31 -0
  24. package/assets/styles/_article/list.styl +19 -0
  25. package/assets/styles/_article/note.styl +18 -0
  26. package/assets/styles/_article/other.styl +44 -0
  27. package/assets/styles/_article/table.styl +29 -0
  28. package/assets/styles/_article/tabs.styl +25 -0
  29. package/assets/styles/_code.styl +83 -0
  30. package/assets/styles/_index/contact.styl +20 -0
  31. package/assets/styles/_index/footer.styl +5 -0
  32. package/assets/styles/_index/header.styl +40 -0
  33. package/assets/styles/_index/nav.styl +59 -0
  34. package/assets/styles/_index/search.styl +64 -0
  35. package/assets/styles/_index.styl +91 -0
  36. package/assets/styles/_var.styl +96 -0
  37. package/assets/styles/archive.styl +35 -0
  38. package/assets/styles/article.styl +138 -0
  39. package/assets/styles/category.styl +4 -0
  40. package/assets/styles/home.styl +124 -0
  41. package/assets/styles/links.styl +121 -0
  42. package/assets/styles/page.styl +12 -0
  43. package/assets/styles/tag.styl +4 -0
  44. package/dist/config.d.ts +128 -0
  45. package/dist/feed.d.ts +4 -0
  46. package/dist/image/asset.d.ts +22 -0
  47. package/dist/image/db.d.ts +18 -0
  48. package/dist/image/index.d.ts +10 -0
  49. package/dist/image/metadata.d.ts +2 -0
  50. package/dist/image/utils.d.ts +1 -0
  51. package/dist/index-now.d.ts +1 -0
  52. package/dist/index.d.ts +3 -0
  53. package/dist/index.js +2066 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/layout.d.ts +2 -0
  56. package/dist/markdown/codeblock/data.d.ts +1 -0
  57. package/dist/markdown/codeblock/index.d.ts +6 -0
  58. package/dist/markdown/codeblock/style.d.ts +2 -0
  59. package/dist/markdown/fold.d.ts +6 -0
  60. package/dist/markdown/footnote.d.ts +15 -0
  61. package/dist/markdown/image.d.ts +12 -0
  62. package/dist/markdown/index.d.ts +2 -0
  63. package/dist/markdown/kbd.d.ts +6 -0
  64. package/dist/markdown/link.d.ts +2 -0
  65. package/dist/markdown/links.d.ts +12 -0
  66. package/dist/markdown/note.d.ts +8 -0
  67. package/dist/markdown/table.d.ts +3 -0
  68. package/dist/markdown/tabs.d.ts +7 -0
  69. package/dist/markdown/tex.d.ts +9 -0
  70. package/dist/page/404.d.ts +1 -0
  71. package/dist/page/archive.d.ts +1 -0
  72. package/dist/page/category.d.ts +1 -0
  73. package/dist/page/home.d.ts +2 -0
  74. package/dist/page/tag.d.ts +1 -0
  75. package/dist/pagefind.d.ts +20 -0
  76. package/dist/sitemap.d.ts +2 -0
  77. package/dist/transform/script.d.ts +2 -0
  78. package/dist/transform/stylus.d.ts +2 -0
  79. package/dist/utils.d.ts +2 -0
  80. package/layouts/404.tsx +8 -0
  81. package/layouts/archive.tsx +81 -0
  82. package/layouts/article.tsx +145 -0
  83. package/layouts/base.tsx +20 -0
  84. package/layouts/category.tsx +18 -0
  85. package/layouts/components/ArchiveArticleList.tsx +14 -0
  86. package/layouts/components/Article.tsx +46 -0
  87. package/layouts/components/Contact.tsx +14 -0
  88. package/layouts/components/Footer.tsx +44 -0
  89. package/layouts/components/Head.tsx +119 -0
  90. package/layouts/components/Image.tsx +42 -0
  91. package/layouts/components/Nav.tsx +33 -0
  92. package/layouts/components/Search.tsx +20 -0
  93. package/layouts/components/Waline.tsx +22 -0
  94. package/layouts/context.d.ts +54 -0
  95. package/layouts/home.tsx +74 -0
  96. package/layouts/links.tsx +53 -0
  97. package/layouts/page.tsx +19 -0
  98. package/layouts/tag.tsx +18 -0
  99. package/layouts/tsconfig.json +11 -0
  100. package/package.json +47 -0
  101. package/readme.md +17 -0
  102. package/readme_zh.md +17 -0
@@ -0,0 +1,20 @@
1
+ .contact
2
+ display flex
3
+ flex-wrap wrap
4
+ gap 8px
5
+ a
6
+ all unset
7
+ display block
8
+ width 32px
9
+ height 32px
10
+ border-radius 100%
11
+ text-align center
12
+ font 20px / 32px 'icon'
13
+ transition .1s background, .1s color
14
+ &:hover
15
+ background var(--color)
16
+ color #fff
17
+ &:focus-visible
18
+ outline 2px solid
19
+ background var(--color)
20
+ color #fff
@@ -0,0 +1,5 @@
1
+ footer
2
+ padding 32px 16px
3
+ .wrap
4
+ margin auto
5
+ inset 0
@@ -0,0 +1,40 @@
1
+ @keyframes grid
2
+ 0%
3
+ background-position 16px 16px
4
+ 100%
5
+ background-position 48px 80px
6
+
7
+ header
8
+ position relative
9
+ overflow hidden
10
+ padding 128px 0
11
+ background:
12
+ linear-gradient(var(--color) 2%, #0000 0%) 0 16px / 1px 32px,
13
+ linear-gradient(to right, var(--color) 2%, #0000 0%) 16px / 32px
14
+ animation grid 10s infinite linear
15
+ --color s('color-mix(in srgb, var(--text), var(--bg) 90%)')
16
+ &:after
17
+ position absolute
18
+ bottom 0
19
+ left 0
20
+ width 100%
21
+ height s('max(10%, 64px)')
22
+ background linear-gradient(to bottom, #0000, var(--bg))
23
+ content ''
24
+ pointer-events none
25
+ &>*:not(picture)
26
+ position relative
27
+ margin auto
28
+ inset 0
29
+ img
30
+ position absolute
31
+ width 100%
32
+ height 100%
33
+ opacity .5
34
+ inset 0
35
+ object-fit cover
36
+
37
+ h1
38
+ margin 0
39
+ font-size s('clamp(42px, 5vw, 63px)')
40
+ line-height 1.2
@@ -0,0 +1,59 @@
1
+ nav
2
+ position fixed
3
+ top 8px
4
+ right 0
5
+ left 0
6
+ z-index 100
7
+ display flex
8
+ overflow hidden
9
+ margin auto
10
+ padding 4px
11
+ width s('min(1000px, calc(100vw - 8px))')
12
+ height 32px + 8px
13
+ border 1px solid #0000
14
+ border-radius 12px
15
+ line-height 1
16
+ transition .1s
17
+
18
+ #search
19
+ #nav
20
+ width 32px
21
+ height 32px
22
+ border none
23
+ background #0000
24
+ font-size 16px
25
+
26
+ #nav
27
+ display none
28
+
29
+ .nav
30
+ display flex
31
+ margin 0
32
+ padding 0
33
+ li
34
+ display block
35
+ padding 0
36
+ a
37
+ display block
38
+ padding 8px
39
+
40
+ .site
41
+ padding 0 8px
42
+ height 32px
43
+ font-weight bold
44
+ font-family var(--font-title)
45
+ line-height 32px
46
+
47
+ .nav-hide
48
+ top -42px
49
+
50
+ @media (max-width 700px)
51
+ #nav
52
+ display block
53
+ .nav
54
+ position absolute
55
+ top 8px + 32px
56
+ .nav-show
57
+ height 8px + 32px + 32px + 8px
58
+ &.nav-toc
59
+ height calc(100vh - 16px)
@@ -0,0 +1,64 @@
1
+ html:has(.search[open])
2
+ overflow hidden
3
+
4
+ .search
5
+ margin 128px auto 16px
6
+ padding 0
7
+ width s('min(calc(100vw - 32px), 600px)')
8
+ border 1px solid var(--border)
9
+ background var(--bg)
10
+ &::backdrop
11
+ backdrop-filter blur(4px)
12
+
13
+ .search-bar
14
+ display flex
15
+ button
16
+ width 67px
17
+ border 0
18
+ background #0000
19
+ font-size 20px
20
+
21
+ .search-input
22
+ all unset
23
+ display block
24
+ flex 1
25
+ box-sizing border-box
26
+ padding 16px
27
+ color var(--text)
28
+ font 24px / 1 var(--font)
29
+
30
+ .search-result
31
+ overflow hidden auto
32
+ max-height calc(100vh - 300px)
33
+ a
34
+ display block
35
+ padding 16px
36
+ border-left 4px solid #0000
37
+ color var(--text)
38
+ text-decoration none
39
+ &:hover
40
+ &:focus-visible
41
+ &.active
42
+ border-color var(--theme)
43
+ background var(--panel)
44
+
45
+ .search-title
46
+ font-size 20px
47
+
48
+ .search-excerpt
49
+ opacity .8
50
+ mark
51
+ background var(--theme-a2)
52
+ color var(--theme)
53
+
54
+ @media (max-width 700px), (max-height 700px)
55
+ .search
56
+ margin 0
57
+ max-width 100vw
58
+ max-height 100vh
59
+ max-height 100svh
60
+ width 100vw
61
+ height 100vh
62
+ .search-result
63
+ max-height calc(100vh - 68px)
64
+ max-height calc(100svh - 68px)
@@ -0,0 +1,91 @@
1
+ @import '_var'
2
+
3
+ *
4
+ box-sizing border-box
5
+
6
+ body
7
+ margin 0
8
+ background var(--bg)
9
+ color var(--text)
10
+ font 16px / 1.5 var(--font)
11
+
12
+ ::selection
13
+ background var(--theme-a8)
14
+
15
+ a
16
+ color var(--theme)
17
+ word-wrap break-word
18
+ transition .1s color
19
+ &:hover
20
+ color var(--text)
21
+
22
+ code
23
+ font-family var(--font-mono)
24
+ font-feature-settings 'calt', 'cv01', 'cv03', 'cv61', 'cv96', 'cv97', 'cv98', 'ss08'
25
+
26
+ .wrap
27
+ padding 0 16px
28
+ max-width 1000px
29
+
30
+ .rounded
31
+ border-radius 8px
32
+ .rounded
33
+ border-radius 7px
34
+
35
+ .flex
36
+ flex 1
37
+
38
+ .glass
39
+ border 1px solid var(--glass-border)
40
+ background var(--glass)
41
+ --glass s('color-mix(in srgb, var(--bg), #0000)')
42
+ --glass-border s('color-mix(in srgb, var(--text), #0000 90%)')
43
+ backdrop-filter blur(8px)
44
+
45
+ .link
46
+ position relative
47
+ color var(--text)
48
+ text-decoration none
49
+ transition .2s
50
+ &>*
51
+ position relative
52
+ &:after
53
+ position absolute
54
+ z-index -1
55
+ background var(--theme)
56
+ content ''
57
+ opacity 0
58
+ filter blur(32px)
59
+ transition .5s
60
+ pointer-events none
61
+ inset 0
62
+ &:hover
63
+ color var(--theme)
64
+ &:after
65
+ opacity 1
66
+ &:active
67
+ opacity .6
68
+
69
+ main
70
+ @extend .wrap
71
+ position relative
72
+ margin auto
73
+ inset 0
74
+
75
+ @import './_index/**/*'
76
+
77
+ if config('waline')
78
+ #waline
79
+ margin auto
80
+ --waline-theme-color var(--theme)
81
+ --waline-active-color var(--theme-ad)
82
+ --waline-color var(--text)
83
+ --waline-bg-color var(--bg)
84
+ --waline-bg-color-light var(--panel)
85
+ --waline-bg-color-hover var(--text-a2)
86
+ --waline-border 1px solid var(--text-a8)
87
+ --waline-border-color var(--text-a2)
88
+ --waline-code-bg-color #2d2d2d
89
+ --waline-info-bg-color var(--panel)
90
+ textarea
91
+ font-family var(--font-mono)
@@ -0,0 +1,96 @@
1
+ @font-face
2
+ font-family 'maple mono'
3
+ src:
4
+ url('https://unpkg.com/@fontsource/maple-mono@5.2.4/files/maple-mono-latin-400-normal.woff2') format('woff2'),
5
+ url('https://unpkg.com/@fontsource/maple-mono@5.2.4/files/maple-mono-latin-400-normal.woff') format('woff')
6
+ font-display swap
7
+
8
+ :root
9
+ --font:
10
+ 'Noto Sans SC',
11
+ 'WenQuanYi Micro Hei',
12
+ 'Noto Sans',
13
+ 'Microsoft YaHei UI',
14
+ 'Microsoft YaHei',
15
+ 'HarmonyOS Sans SC',
16
+ 'MiSans',
17
+ 'PingFang SC',
18
+ 'Hiragino Sans GB',
19
+ ui-sans-serif,
20
+ system-ui,
21
+ sans-serif
22
+ --font-mono:
23
+ 'Maple Mono NF CN',
24
+ 'Maple Mono SC NF',
25
+ 'Sarasa Term SC',
26
+ 'LXGW WenKai Mono',
27
+ 'JetBrains Mono',
28
+ 'Fira Code',
29
+ 'Cascadia Code',
30
+ 'Source Code Pro',
31
+ 'Monaco',
32
+ 'SF Mono',
33
+ Menlo,
34
+ Consolas,
35
+ 'DejaVu Sans Mono',
36
+ 'Liberation Mono',
37
+ 'Courier New',
38
+ monospace
39
+ --font-title 'maple mono', var(--font-mono)
40
+
41
+ $colorLight = config('color.light') ? convert(config('color.light')) : #F00
42
+ $colorDark = config('color.dark') ? convert(config('color.dark')) : #F44
43
+ SchemeLight =
44
+ --theme $colorLight
45
+ --theme-a2 alpha($colorLight, .125)
46
+ --theme-a4 alpha($colorLight, .25)
47
+ --theme-a8 alpha($colorLight, .5)
48
+ --theme-ad alpha($colorLight, .8125)
49
+ --theme-text dark($colorLight) ? #fff : #000
50
+ --bg #fff
51
+ --text #000
52
+ --code #800
53
+ --code-bg #f001
54
+ --border #444
55
+ --text-a1 #00000010
56
+ --text-a2 #00000020
57
+ --text-a8 #00000080
58
+ --panel #0001
59
+ --note #1d80d2
60
+ --note-tip #01a501
61
+ --note-warn #b17700
62
+ --note-danger #bc0000
63
+ SchemeDark =
64
+ --theme $colorDark
65
+ --theme-a2 alpha($colorDark, .125)
66
+ --theme-a4 alpha($colorDark, .25)
67
+ --theme-a8 alpha($colorDark, .5)
68
+ --theme-ad alpha($colorDark, .8125)
69
+ --theme-text dark($colorDark) ? #fff : #000
70
+ --bg #101010
71
+ --text #f0f0f0
72
+ --code #f88
73
+ --code-bg #f001
74
+ --border #444
75
+ --text-a1 #f0f0f010
76
+ --text-a2 #f0f0f020
77
+ --text-a8 #f0f0f080
78
+ --panel #fff1
79
+ --note #69bbff
80
+ --note-tip #4ac94a
81
+ --note-warn #e0e059
82
+ --note-danger #ec3e3e
83
+ // [ui-scheme='light']
84
+ // {SchemeLight}
85
+ // [ui-scheme='dark']
86
+ // {SchemeDark}
87
+ // [ui-scheme='system']
88
+
89
+ :root
90
+ // @extend [ui-scheme='light']
91
+ {SchemeLight}
92
+
93
+ @media (prefers-color-scheme dark)
94
+ // [ui-scheme='system']
95
+ :root
96
+ {SchemeDark}
@@ -0,0 +1,35 @@
1
+ @import '_index'
2
+
3
+ .ready
4
+ position relative
5
+ overflow hidden
6
+ padding 0
7
+ line-height 1
8
+ transition .3s height
9
+ *
10
+ list-style none
11
+ a
12
+ position absolute
13
+ text-decoration none
14
+ transition .3s
15
+
16
+ .tags.ready
17
+ a
18
+ translate -50% -50%
19
+
20
+ .categories.ready
21
+ a
22
+ display block
23
+ padding 8px
24
+ border 1px solid var(--border)
25
+ border-radius 8px
26
+ background var(--panel)
27
+ color var(--text)
28
+ &:hover
29
+ border-color var(--theme)
30
+ color var(--theme)
31
+ &:after
32
+ opacity .2
33
+
34
+ .archive a
35
+ margin-left 1ch
@@ -0,0 +1,138 @@
1
+ @import '_index'
2
+
3
+ // MARK: Header
4
+ header
5
+ img
6
+ filter blur(4px)
7
+ scale 1.05
8
+
9
+ .cates
10
+ display flex
11
+ flex-wrap wrap
12
+ font-weight bold
13
+ gap 4px 16px
14
+
15
+ .tag
16
+ &:before
17
+ content '#'
18
+ opacity .5
19
+
20
+ .article-info
21
+ display flex
22
+ flex-wrap wrap
23
+ gap 8px
24
+ :before
25
+ margin-right 4px
26
+
27
+ // MARK: Pagination & Related
28
+ // .related
29
+ // .related-title
30
+ .pagination
31
+ @extend main
32
+
33
+ .pagination
34
+ display flex
35
+ gap 4px
36
+ a
37
+ display flex
38
+ align-items center
39
+ padding 16px
40
+ border 1px solid var(--border)
41
+ border-radius 8px
42
+ color var(--text)
43
+ text-decoration none
44
+ text-wrap balance
45
+ transition .1s color, .1s border
46
+ gap 8px
47
+ &:hover
48
+ border-color var(--theme)
49
+ color var(--theme)
50
+ i
51
+ display inline-block
52
+ .next
53
+ justify-content right
54
+ text-align right
55
+
56
+ // MARK: Main
57
+ main
58
+ display flex
59
+ flex-direction row-reverse
60
+
61
+ article
62
+ flex 1
63
+ padding 8px
64
+ width 0
65
+ text-wrap pretty
66
+ word-break break-all
67
+ word-break break-word
68
+
69
+ aside
70
+ position sticky
71
+ top 32px
72
+ flex 0 0 auto
73
+ overflow hidden auto
74
+ max-height calc(100vh - 32px)
75
+ width 250px
76
+ height max-content
77
+
78
+ .toc
79
+ li
80
+ list-style none
81
+ ol
82
+ position relative
83
+ &:before
84
+ position absolute
85
+ top 0
86
+ left 10px
87
+ display block
88
+ width 1px
89
+ height 100%
90
+ background var(--text-a2)
91
+ content ''
92
+ a
93
+ display block
94
+ display -webkit-box
95
+ overflow hidden
96
+ padding 5px
97
+ color var(--text)
98
+ text-decoration none
99
+ text-overflow ellipsis
100
+ line-height 1.5
101
+ -webkit-line-clamp 3
102
+ -webkit-box-orient vertical
103
+ a:hover
104
+ .active
105
+ color var(--theme)
106
+
107
+ @import '_article/other'
108
+ @import '_article/heading'
109
+ @import '_article/image'
110
+ @import '_article/table'
111
+ @import '_article/list'
112
+ @import '_article/footnote'
113
+ @import '_article/tabs'
114
+ @import '_article/note'
115
+ @import '_article/fold'
116
+ @import '_article/kbd'
117
+ @import '_article/links'
118
+
119
+ // MARK: Mobile
120
+ nav .toc
121
+ position absolute
122
+ top 8px + 32px + 32px + 8px
123
+ display none
124
+ overflow hidden auto
125
+ margin-top 0
126
+ max-height calc(100vh - 96px)
127
+ width 100%
128
+ overscroll-behavior contain
129
+
130
+ @media (max-width 700px)
131
+ aside
132
+ display none
133
+ nav .toc
134
+ display block
135
+ .nav-show
136
+ height calc(100vh - 16px)
137
+ .pagination
138
+ flex-direction column
@@ -0,0 +1,4 @@
1
+ @import '_index'
2
+
3
+ .archive a
4
+ margin-left 1ch
@@ -0,0 +1,124 @@
1
+ @import '_index'
2
+
3
+ header
4
+ padding 0
5
+
6
+ .home
7
+ display flex
8
+ justify-content space-between
9
+ align-items center
10
+ height 100vh
11
+
12
+ .home-title
13
+ font 28px var(--font-title)
14
+
15
+ .home-logo
16
+ max-width 350px
17
+
18
+ @keyframes indicator
19
+ 0%
20
+ 100%
21
+ bottom 32px
22
+ 50%
23
+ bottom 16px
24
+
25
+ .home-indicator
26
+ position absolute
27
+ top unset
28
+ right 0
29
+ bottom 32px
30
+ left 0
31
+ z-index 1
32
+ margin 0 auto
33
+ width max-content
34
+ height max-content
35
+ animation indicator 2s ease-in-out infinite
36
+
37
+ .article-list
38
+ display flex
39
+ flex-wrap wrap
40
+ gap 16px
41
+ a
42
+ color var(--text)
43
+ text-decoration none
44
+
45
+ .article
46
+ position relative
47
+ display flex
48
+ flex-direction column
49
+ overflow hidden
50
+ width calc(50% - 8px)
51
+ border 1px solid var(--border)
52
+ background var(--panel)
53
+ transition .2s border
54
+ &>*
55
+ position relative
56
+ img
57
+ width 100%
58
+ height 200px
59
+ object-fit cover
60
+ h2
61
+ overflow hidden
62
+ margin 0 0 16px 0
63
+ height 36px * 2
64
+ text-wrap pretty
65
+ transition .2s color
66
+ time
67
+ float right
68
+ &:hover:not(:has(a:hover))
69
+ &:focus-visible:not(:has(a:focus-visible))
70
+ border-color var(--theme)
71
+ h2
72
+ color var(--theme)
73
+ .bloom
74
+ opacity .5
75
+ object>a
76
+ margin-right 8px
77
+
78
+ .article-info
79
+ padding 16px
80
+
81
+ .tag:before
82
+ content '#'
83
+ opacity .5
84
+
85
+ .bloom
86
+ position absolute
87
+ opacity 0
88
+ filter blur(32px) brightness(1.5)
89
+ transition .1s
90
+ inset 0
91
+ scale 1.5
92
+ translate 0 25%
93
+
94
+ .pages
95
+ display flex
96
+ justify-content center
97
+ margin-top 16px
98
+
99
+ .page
100
+ display block
101
+ width 32px
102
+ height 32px
103
+ color var(--text)
104
+ text-align center
105
+ text-decoration none
106
+ line-height 32px
107
+
108
+ a.page
109
+ background var(--text-a2)
110
+ transition .1s
111
+ &:hover
112
+ background var(--theme)
113
+ color var(--theme-text)
114
+
115
+ @media (max-width 700px)
116
+ .article
117
+ width 100%
118
+ .home
119
+ .contact
120
+ justify-content center
121
+ .home
122
+ flex-direction column-reverse
123
+ .home-title
124
+ text-align center