Cleanup assets
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -10,6 +10,7 @@ gem "hanami-controller", "2.1.0"
|
|||||||
gem "hanami-validations", "2.1.0"
|
gem "hanami-validations", "2.1.0"
|
||||||
gem "hanami-assets", "2.1.0"
|
gem "hanami-assets", "2.1.0"
|
||||||
gem "hanami-view", "2.1.0"
|
gem "hanami-view", "2.1.0"
|
||||||
|
# gem "hanami-view", file: "~/Documents/projects/hanami/view"
|
||||||
|
|
||||||
gem "csv"
|
gem "csv"
|
||||||
gem "rom-sql"
|
gem "rom-sql"
|
||||||
|
55
Gemfile.lock
55
Gemfile.lock
@@ -48,7 +48,7 @@ GEM
|
|||||||
tzinfo (~> 2.0)
|
tzinfo (~> 2.0)
|
||||||
addressable (2.8.6)
|
addressable (2.8.6)
|
||||||
public_suffix (>= 2.0.2, < 6.0)
|
public_suffix (>= 2.0.2, < 6.0)
|
||||||
airbrussh (1.5.1)
|
airbrussh (1.5.2)
|
||||||
sshkit (>= 1.6.1, != 1.7.0)
|
sshkit (>= 1.6.1, != 1.7.0)
|
||||||
ast (2.4.2)
|
ast (2.4.2)
|
||||||
babosa (2.0.0)
|
babosa (2.0.0)
|
||||||
@@ -156,11 +156,31 @@ GEM
|
|||||||
dry-schema (>= 1.12, < 2)
|
dry-schema (>= 1.12, < 2)
|
||||||
zeitwerk (~> 2.6)
|
zeitwerk (~> 2.6)
|
||||||
ed25519 (1.3.0)
|
ed25519 (1.3.0)
|
||||||
faker (3.3.0)
|
faker (3.3.1)
|
||||||
i18n (>= 1.8.11, < 2)
|
i18n (>= 1.8.11, < 2)
|
||||||
faraday (1.2.0)
|
faraday (1.10.3)
|
||||||
multipart-post (>= 1.2, < 3)
|
faraday-em_http (~> 1.0)
|
||||||
ruby2_keywords
|
faraday-em_synchrony (~> 1.0)
|
||||||
|
faraday-excon (~> 1.1)
|
||||||
|
faraday-httpclient (~> 1.0)
|
||||||
|
faraday-multipart (~> 1.0)
|
||||||
|
faraday-net_http (~> 1.0)
|
||||||
|
faraday-net_http_persistent (~> 1.0)
|
||||||
|
faraday-patron (~> 1.0)
|
||||||
|
faraday-rack (~> 1.0)
|
||||||
|
faraday-retry (~> 1.0)
|
||||||
|
ruby2_keywords (>= 0.0.4)
|
||||||
|
faraday-em_http (1.0.0)
|
||||||
|
faraday-em_synchrony (1.0.0)
|
||||||
|
faraday-excon (1.1.0)
|
||||||
|
faraday-httpclient (1.0.1)
|
||||||
|
faraday-multipart (1.0.4)
|
||||||
|
multipart-post (~> 2)
|
||||||
|
faraday-net_http (1.0.1)
|
||||||
|
faraday-net_http_persistent (1.2.0)
|
||||||
|
faraday-patron (1.0.0)
|
||||||
|
faraday-rack (1.0.0)
|
||||||
|
faraday-retry (1.0.3)
|
||||||
ffi (1.16.3)
|
ffi (1.16.3)
|
||||||
formatador (1.1.0)
|
formatador (1.1.0)
|
||||||
georuby (2.5.2)
|
georuby (2.5.2)
|
||||||
@@ -253,7 +273,7 @@ GEM
|
|||||||
irb (1.12.0)
|
irb (1.12.0)
|
||||||
rdoc
|
rdoc
|
||||||
reline (>= 0.4.2)
|
reline (>= 0.4.2)
|
||||||
json (2.7.1)
|
json (2.7.2)
|
||||||
jwt (2.8.1)
|
jwt (2.8.1)
|
||||||
base64
|
base64
|
||||||
language_server-protocol (3.17.0.3)
|
language_server-protocol (3.17.0.3)
|
||||||
@@ -300,14 +320,14 @@ GEM
|
|||||||
net-ssh (>= 5.0.0, < 8.0.0)
|
net-ssh (>= 5.0.0, < 8.0.0)
|
||||||
net-smtp (0.5.0)
|
net-smtp (0.5.0)
|
||||||
net-protocol
|
net-protocol
|
||||||
net-ssh (7.2.1)
|
net-ssh (7.2.3)
|
||||||
netrc (0.11.0)
|
netrc (0.11.0)
|
||||||
nio4r (2.7.1)
|
nio4r (2.7.1)
|
||||||
nokogiri (1.16.3-arm64-darwin)
|
nokogiri (1.16.4-arm64-darwin)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
nokogiri (1.16.3-x86_64-darwin)
|
nokogiri (1.16.4-x86_64-darwin)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
nokogiri (1.16.3-x86_64-linux)
|
nokogiri (1.16.4-x86_64-linux)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
notiffany (0.1.3)
|
notiffany (0.1.3)
|
||||||
nenv (~> 0.1)
|
nenv (~> 0.1)
|
||||||
@@ -335,7 +355,7 @@ GEM
|
|||||||
method_source (~> 1.0)
|
method_source (~> 1.0)
|
||||||
psych (5.1.2)
|
psych (5.1.2)
|
||||||
stringio
|
stringio
|
||||||
public_suffix (5.0.4)
|
public_suffix (5.0.5)
|
||||||
puma (6.4.2)
|
puma (6.4.2)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
que (2.3.0)
|
que (2.3.0)
|
||||||
@@ -349,7 +369,7 @@ GEM
|
|||||||
rack-test (2.1.0)
|
rack-test (2.1.0)
|
||||||
rack (>= 1.3)
|
rack (>= 1.3)
|
||||||
rainbow (3.1.1)
|
rainbow (3.1.1)
|
||||||
rake (13.1.0)
|
rake (13.2.1)
|
||||||
rb-fsevent (0.11.2)
|
rb-fsevent (0.11.2)
|
||||||
rb-inotify (0.10.1)
|
rb-inotify (0.10.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
@@ -358,10 +378,10 @@ GEM
|
|||||||
redcarpet (3.6.0)
|
redcarpet (3.6.0)
|
||||||
redis (5.1.0)
|
redis (5.1.0)
|
||||||
redis-client (>= 0.17.0)
|
redis-client (>= 0.17.0)
|
||||||
redis-client (0.21.1)
|
redis-client (0.22.0)
|
||||||
connection_pool
|
connection_pool
|
||||||
regexp_parser (2.9.0)
|
regexp_parser (2.9.0)
|
||||||
reline (0.5.0)
|
reline (0.5.1)
|
||||||
io-console (~> 0.5)
|
io-console (~> 0.5)
|
||||||
rest-client (2.1.0)
|
rest-client (2.1.0)
|
||||||
http-accept (>= 1.7.0, < 2.0)
|
http-accept (>= 1.7.0, < 2.0)
|
||||||
@@ -442,7 +462,7 @@ GEM
|
|||||||
sanitize (6.1.0)
|
sanitize (6.1.0)
|
||||||
crass (~> 1.0.2)
|
crass (~> 1.0.2)
|
||||||
nokogiri (>= 1.12.0)
|
nokogiri (>= 1.12.0)
|
||||||
sequel (5.78.0)
|
sequel (5.79.0)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
shellany (0.0.1)
|
shellany (0.0.1)
|
||||||
simple-rss (1.3.3)
|
simple-rss (1.3.3)
|
||||||
@@ -452,7 +472,8 @@ GEM
|
|||||||
snaky_hash (2.0.1)
|
snaky_hash (2.0.1)
|
||||||
hashie
|
hashie
|
||||||
version_gem (~> 1.1, >= 1.1.1)
|
version_gem (~> 1.1, >= 1.1.1)
|
||||||
sshkit (1.22.0)
|
sshkit (1.22.1)
|
||||||
|
base64
|
||||||
mutex_m
|
mutex_m
|
||||||
net-scp (>= 1.1.2)
|
net-scp (>= 1.1.2)
|
||||||
net-sftp (>= 2.1.2)
|
net-sftp (>= 2.1.2)
|
||||||
@@ -487,7 +508,7 @@ GEM
|
|||||||
unicode-emoji (3.4.0)
|
unicode-emoji (3.4.0)
|
||||||
unicode-version (~> 1.0)
|
unicode-version (~> 1.0)
|
||||||
unicode-version (1.4.0)
|
unicode-version (1.4.0)
|
||||||
vernier (0.6.0)
|
vernier (0.7.0)
|
||||||
version_gem (1.1.4)
|
version_gem (1.1.4)
|
||||||
warning (1.3.0)
|
warning (1.3.0)
|
||||||
whenever (1.0.0)
|
whenever (1.0.0)
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
web: bundle exec hanami server
|
web: bundle exec hanami server
|
||||||
tailwind_main: bundle exec rake tailwind:watch
|
tailwind: bundle exec rake tailwind:watch
|
||||||
tailwind_admin: bundle exec rake tailwind:watch_admin
|
|
||||||
assets: bundle exec hanami assets watch
|
assets: bundle exec hanami assets watch
|
||||||
redis: redis-server
|
redis: redis-server
|
||||||
|
18
Rakefile
18
Rakefile
@@ -99,16 +99,22 @@ namespace :blog do
|
|||||||
end
|
end
|
||||||
|
|
||||||
namespace :tailwind do
|
namespace :tailwind do
|
||||||
task :watch do
|
desc "Watch and compile your Tailwind CSS on file changes"
|
||||||
system("npx tailwindcss -i ./slices/main/assets/css/app.css -o ./public/assets/_main/app.css --watch")
|
task :watch do
|
||||||
end
|
system(
|
||||||
|
"npx",
|
||||||
|
"tailwindcss",
|
||||||
|
"--input", "app/assets/css/tailwind.css",
|
||||||
|
"--output", "app/assets/builds/tailwind.css",
|
||||||
|
"--minify",
|
||||||
|
"--watch"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
task :watch_admin do
|
|
||||||
system("npx tailwindcss -i ./slices/admin/assets/css/app.css -o ./public/assets/_admin/app.css --watch")
|
|
||||||
end
|
|
||||||
|
|
||||||
task :build do
|
task :build do
|
||||||
system("npx tailwindcss -i ./slices/main/assets/css/app.css -o ./slices/main/assets/builds/app.css --minify")
|
system("npx tailwindcss -i ./slices/main/assets/css/app.css -o ./slices/main/assets/builds/app.css --minify")
|
||||||
system("npx tailwindcss -i ./slices/admin/assets/css/app.css -o ./slices/admin/assets/builds/app.css --minify")
|
system("npx tailwindcss -i ./slices/admin/assets/css/app.css -o ./slices/admin/assets/builds/app.css --minify")
|
||||||
|
system("npx tailwindcss -i ./slices/puzzles/assets/css/app.css -o ./slices/puzzles/assets/builds/app.css --minify")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
3
app/assets/css/tailwind.css
Normal file
3
app/assets/css/tailwind.css
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
@@ -2,12 +2,16 @@
|
|||||||
"name": "test21",
|
"name": "test21",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"assets": "node config/assets.js"
|
||||||
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@icelab/defo": "^0.0.3",
|
"@icelab/defo": "^0.0.3",
|
||||||
"hanami-assets": "^2.1.0-rc.3"
|
"hanami-assets": "github:hanami/assets-js#main",
|
||||||
|
"typescript": "^5.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tailwindcss/typography": "^0.5.8",
|
"@tailwindcss/typography": "^0.5.8",
|
||||||
"tailwindcss": "^3.2.4"
|
"tailwindcss": "^3.3.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
@tailwind base;
|
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
|
||||||
@tailwind typography;
|
|
||||||
|
@@ -1,31 +0,0 @@
|
|||||||
import "../../../../slices/main/assets/builds/app.css";
|
|
||||||
import "../css/app.css";
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
document.addEventListener('alpine:init', () => {
|
|
||||||
Alpine.magic('clipboard', () => {
|
|
||||||
return subject => navigator.clipboard.writeText(subject)
|
|
||||||
})
|
|
||||||
|
|
||||||
Alpine.magic('textHighlighter', (el, {Alpine}) => {
|
|
||||||
return {
|
|
||||||
isOpen: false,
|
|
||||||
anchorX: "0px",
|
|
||||||
anchorY: "0px",
|
|
||||||
selection: null,
|
|
||||||
text: "",
|
|
||||||
highlightText() {
|
|
||||||
this.isOpen = false
|
|
||||||
// document.
|
|
||||||
this.selection = document.getSelection()
|
|
||||||
this.text = this.selection.toString()
|
|
||||||
const anchor = this.selection.focusNode.parentElement.getBoundingClientRect()
|
|
||||||
this.isOpen = el.contains(this.selection.focusNode) && this.selection.focusOffset != this.selection.anchorOffset;
|
|
||||||
|
|
||||||
this.anchorX = `${anchor.left - 170}px`
|
|
||||||
this.anchorY = `${anchor.top + window.scrollY}px`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})();
|
|
36
slices/admin/assets/js/app.ts
Normal file
36
slices/admin/assets/js/app.ts
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
// import "../../../../slices/main/assets/builds/app.css";
|
||||||
|
import "@main/css/app.css";
|
||||||
|
import "@app/builds/tailwind.css";
|
||||||
|
import "../css/app.css";
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
document.addEventListener("alpine:init", () => {
|
||||||
|
Alpine.magic("clipboard", () => {
|
||||||
|
return (subject) => navigator.clipboard.writeText(subject);
|
||||||
|
});
|
||||||
|
|
||||||
|
Alpine.magic("textHighlighter", (el, { Alpine }) => {
|
||||||
|
return {
|
||||||
|
isOpen: false,
|
||||||
|
anchorX: "0px",
|
||||||
|
anchorY: "0px",
|
||||||
|
selection: null,
|
||||||
|
text: "",
|
||||||
|
highlightText() {
|
||||||
|
this.isOpen = false;
|
||||||
|
// document.
|
||||||
|
this.selection = document.getSelection();
|
||||||
|
this.text = this.selection.toString();
|
||||||
|
const anchor =
|
||||||
|
this.selection.focusNode.parentElement.getBoundingClientRect();
|
||||||
|
this.isOpen =
|
||||||
|
el.contains(this.selection.focusNode) &&
|
||||||
|
this.selection.focusOffset != this.selection.anchorOffset;
|
||||||
|
|
||||||
|
this.anchorX = `${anchor.left - 170}px`;
|
||||||
|
this.anchorY = `${anchor.top + window.scrollY}px`;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})();
|
@@ -55,12 +55,12 @@ module Admin
|
|||||||
|
|
||||||
def inline_image_sources
|
def inline_image_sources
|
||||||
inline_images
|
inline_images
|
||||||
&.select {|attr, _value| attr == "src"}
|
&.select { |attr, _value| attr == "src" }
|
||||||
&.map {|img| img[1] } || []
|
&.map { |img| img[1] } || []
|
||||||
end
|
end
|
||||||
|
|
||||||
def photo_sources
|
def photo_sources
|
||||||
photos.map{|photo| photo["value"]}
|
photos.map { |photo| photo["value"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
def prefix_emoji
|
def prefix_emoji
|
||||||
@@ -146,7 +146,7 @@ module Admin
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_h
|
def to_h
|
||||||
clean_content = CGI::unescapeHTML(content.gsub(/<\/?[^>]*>/, "")).strip
|
clean_content = CGI.unescapeHTML(content.gsub(/<\/?[^>]*>/, "")).strip
|
||||||
clean_content = clean_content.gsub(prefix_emoji[0], "") if prefix_emoji
|
clean_content = clean_content.gsub(prefix_emoji[0], "") if prefix_emoji
|
||||||
{
|
{
|
||||||
id: slug,
|
id: slug,
|
||||||
|
@@ -4,7 +4,6 @@ module Main
|
|||||||
module Actions
|
module Actions
|
||||||
module Posts
|
module Posts
|
||||||
class React < Action
|
class React < Action
|
||||||
|
|
||||||
include Deps["repos.reaction_repo", "repos.post_repo"]
|
include Deps["repos.reaction_repo", "repos.post_repo"]
|
||||||
|
|
||||||
def handle(req, res)
|
def handle(req, res)
|
||||||
@@ -16,7 +15,6 @@ module Main
|
|||||||
|
|
||||||
res.body = "👍 #{reaction_count}"
|
res.body = "👍 #{reaction_count}"
|
||||||
res.status = 201
|
res.status = 201
|
||||||
|
|
||||||
rescue
|
rescue
|
||||||
res.status = 400
|
res.status = 400
|
||||||
end
|
end
|
||||||
|
@@ -1,98 +1,109 @@
|
|||||||
@tailwind base;
|
|
||||||
@tailwind components;
|
|
||||||
@tailwind utilities;
|
|
||||||
@tailwind typography;
|
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Montagu";
|
font-family: "Montagu";
|
||||||
src: url("../fonts/MontaguSlab-VariableFont_opsz,wght.ttf") format("truetype");
|
src: url("../fonts/MontaguSlab-VariableFont_opsz,wght.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "JetBrainsMono";
|
font-family: "JetBrainsMono";
|
||||||
src: url("../fonts/JetBrainsMono-VariableFont_wght.ttf") format("truetype");
|
src: url("../fonts/JetBrainsMono-VariableFont_wght.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Figtree";
|
font-family: "Figtree";
|
||||||
src: url("../fonts/Figtree-VariableFont_wght.ttf") format("truetype");
|
src: url("../fonts/Figtree-VariableFont_wght.ttf") format("truetype");
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font-family: "Figtree", Helvetica, Arial, sans-serif;
|
font-family: "Figtree", Helvetica, Arial, sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5, h6, h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
|
h1,
|
||||||
font-family: "Montagu", Times New Roman, serif;
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6,
|
||||||
|
h1 a,
|
||||||
|
h2 a,
|
||||||
|
h3 a,
|
||||||
|
h4 a,
|
||||||
|
h5 a,
|
||||||
|
h6 a {
|
||||||
|
font-family:
|
||||||
|
"Montagu",
|
||||||
|
Times New Roman,
|
||||||
|
serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose h1 a {
|
.prose h1 a {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose h1 a:hover {
|
.prose h1 a:hover {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gist tr {
|
.gist tr {
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gist span, pre, pre span {
|
.gist span,
|
||||||
font-family: "JetBrainsMono", Monaco, monospace;
|
pre,
|
||||||
|
pre span {
|
||||||
|
font-family: "JetBrainsMono", Monaco, monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-marker {
|
.map-marker {
|
||||||
border: 3px solid blue;
|
border: 3px solid blue;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
background: RGBa(0, 0, 255, 0.1);
|
background: RGBa(0, 0, 255, 0.1);
|
||||||
width: 14px;
|
width: 14px;
|
||||||
height: 14px;
|
height: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose pre code::before {
|
.prose pre code::before {
|
||||||
padding-left: unset
|
padding-left: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose pre code:after {
|
.prose pre code:after {
|
||||||
padding-right: unset
|
padding-right: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose code {
|
.prose code {
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose code:before {
|
.prose code:before {
|
||||||
content: "";
|
content: "";
|
||||||
padding: 0 0 0 0.25rem;
|
padding: 0 0 0 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose pre {
|
.prose pre {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.prose code:after {
|
.prose code:after {
|
||||||
content: "";
|
content: "";
|
||||||
padding: 0 0.25rem 0 0;
|
padding: 0 0.25rem 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.video-container {
|
.video-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-bottom: 56.25%; /* 16:9 */
|
padding-bottom: 56.25%; /* 16:9 */
|
||||||
height: 0;
|
height: 0;
|
||||||
}
|
}
|
||||||
.video-container iframe {
|
.video-container iframe {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.squircle {
|
.squircle {
|
||||||
|
@@ -1,76 +0,0 @@
|
|||||||
import { md_gallery } from "./gallery.js";
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
document.addEventListener("DOMContentLoaded", function () {
|
|
||||||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
|
|
||||||
localStorage.setItem("_x_darkMode", event.matches ? true : false)
|
|
||||||
});
|
|
||||||
|
|
||||||
if (window.hljs !== undefined) {
|
|
||||||
window.hljs.highlightAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
const times = document.querySelectorAll('time');
|
|
||||||
times.forEach((time) => {
|
|
||||||
const oldDtime = Date.parse(time.dateTime);
|
|
||||||
time.innerHTML = new Date(oldDtime).toLocaleDateString(navigator.language, { weekday:"long", year:"numeric", month:"short", day:"numeric"});
|
|
||||||
|
|
||||||
md_gallery({
|
|
||||||
"class_name": "grid gap-4 grid-cols-2 prose-img:m-0"
|
|
||||||
});
|
|
||||||
|
|
||||||
const mediaForm = document.getElementById("media_form");
|
|
||||||
if (mediaForm !== null) {
|
|
||||||
htmx.on('#media_form', 'htmx:xhr:progress', function (evt) {
|
|
||||||
htmx.find('#progress').setAttribute('value', evt.detail.loaded / evt.detail.total * 100)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const videos = document.querySelectorAll('video');
|
|
||||||
videos.forEach((video) => {
|
|
||||||
video.addEventListener("click", () => {
|
|
||||||
const isPaused = video.paused;
|
|
||||||
video[isPaused ? "play" : "pause"]();
|
|
||||||
video.classList.toggle("u-none", !isPaused);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const mapContainer = document.getElementById("map");
|
|
||||||
const goBack = document.getElementById("go-back");
|
|
||||||
if (mapContainer !== null) {
|
|
||||||
if (goBack !== null) {
|
|
||||||
document.getElementById("go-back").addEventListener("click", () => {
|
|
||||||
history.back();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
mapboxgl.accessToken = 'pk.eyJ1IjoiZG5pdHphIiwiYSI6ImNsZWIyY3ZzaTE0cjUzdm4xdnZ6czRlYjUifQ.FRETOXYRID6T2IoB7qqRLg';
|
|
||||||
var map = new mapboxgl.Map({
|
|
||||||
container: 'map',
|
|
||||||
style: 'mapbox://styles/mapbox/streets-v11',
|
|
||||||
maxZoom: 8
|
|
||||||
});
|
|
||||||
|
|
||||||
const markers = JSON.parse(mapContainer.dataset["markers"]);
|
|
||||||
|
|
||||||
const bounds = new mapboxgl.LngLatBounds(markers[0], markers[0]);
|
|
||||||
|
|
||||||
for (var i = 0; i < markers.length; i++) {
|
|
||||||
bounds.extend(markers[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
map.fitBounds(bounds, { padding: 60 });
|
|
||||||
|
|
||||||
for (var i = 0; i < markers.length; i++) {
|
|
||||||
const marker = markers[i];
|
|
||||||
const el = document.createElement("div");
|
|
||||||
el.className = "map-marker";
|
|
||||||
|
|
||||||
new mapboxgl.Marker(el)
|
|
||||||
.setLngLat(marker)
|
|
||||||
.addTo(map);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})();
|
|
87
slices/main/assets/js/app.ts
Normal file
87
slices/main/assets/js/app.ts
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
import "@app/builds/tailwind.css";
|
||||||
|
import "@main/css/app.css";
|
||||||
|
import { md_gallery } from "./gallery.js";
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
window
|
||||||
|
.matchMedia("(prefers-color-scheme: dark)")
|
||||||
|
.addEventListener("change", (event) => {
|
||||||
|
localStorage.setItem("_x_darkMode", event.matches ? true : false);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (window.hljs !== undefined) {
|
||||||
|
window.hljs.highlightAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
const times = document.querySelectorAll("time");
|
||||||
|
times.forEach((time) => {
|
||||||
|
const oldDtime = Date.parse(time.dateTime);
|
||||||
|
time.innerHTML = new Date(oldDtime).toLocaleDateString(
|
||||||
|
navigator.language,
|
||||||
|
{ weekday: "long", year: "numeric", month: "short", day: "numeric" },
|
||||||
|
);
|
||||||
|
|
||||||
|
md_gallery({
|
||||||
|
class_name: "grid gap-4 grid-cols-2 prose-img:m-0",
|
||||||
|
});
|
||||||
|
|
||||||
|
const mediaForm = document.getElementById("media_form");
|
||||||
|
if (mediaForm !== null) {
|
||||||
|
htmx.on("#media_form", "htmx:xhr:progress", function (evt) {
|
||||||
|
htmx
|
||||||
|
.find("#progress")
|
||||||
|
.setAttribute(
|
||||||
|
"value",
|
||||||
|
(evt.detail.loaded / evt.detail.total) * 100,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const videos = document.querySelectorAll("video");
|
||||||
|
videos.forEach((video) => {
|
||||||
|
video.addEventListener("click", () => {
|
||||||
|
const isPaused = video.paused;
|
||||||
|
video[isPaused ? "play" : "pause"]();
|
||||||
|
video.classList.toggle("u-none", !isPaused);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const mapContainer = document.getElementById("map");
|
||||||
|
const goBack = document.getElementById("go-back");
|
||||||
|
if (mapContainer !== null) {
|
||||||
|
if (goBack !== null) {
|
||||||
|
document.getElementById("go-back").addEventListener("click", () => {
|
||||||
|
history.back();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
mapboxgl.accessToken =
|
||||||
|
"pk.eyJ1IjoiZG5pdHphIiwiYSI6ImNsZWIyY3ZzaTE0cjUzdm4xdnZ6czRlYjUifQ.FRETOXYRID6T2IoB7qqRLg";
|
||||||
|
var map = new mapboxgl.Map({
|
||||||
|
container: "map",
|
||||||
|
style: "mapbox://styles/mapbox/streets-v11",
|
||||||
|
maxZoom: 8,
|
||||||
|
});
|
||||||
|
|
||||||
|
const markers = JSON.parse(mapContainer.dataset["markers"]);
|
||||||
|
|
||||||
|
const bounds = new mapboxgl.LngLatBounds(markers[0], markers[0]);
|
||||||
|
|
||||||
|
for (var i = 0; i < markers.length; i++) {
|
||||||
|
bounds.extend(markers[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
map.fitBounds(bounds, { padding: 60 });
|
||||||
|
|
||||||
|
for (var i = 0; i < markers.length; i++) {
|
||||||
|
const marker = markers[i];
|
||||||
|
const el = document.createElement("div");
|
||||||
|
el.className = "map-marker";
|
||||||
|
|
||||||
|
new mapboxgl.Marker(el).setLngLat(marker).addTo(map);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
@@ -55,12 +55,12 @@ module Main
|
|||||||
|
|
||||||
def inline_image_sources
|
def inline_image_sources
|
||||||
inline_images
|
inline_images
|
||||||
&.select {|attr, _value| attr == "src"}
|
&.select { |attr, _value| attr == "src" }
|
||||||
&.map {|img| img[1] } || []
|
&.map { |img| img[1] } || []
|
||||||
end
|
end
|
||||||
|
|
||||||
def photo_sources
|
def photo_sources
|
||||||
photos.map{|photo| photo["value"]}
|
photos.map { |photo| photo["value"] }
|
||||||
end
|
end
|
||||||
|
|
||||||
def prefix_emoji
|
def prefix_emoji
|
||||||
@@ -146,7 +146,7 @@ module Main
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_h
|
def to_h
|
||||||
clean_content = CGI::unescapeHTML(content.gsub(/<\/?[^>]*>/, "")).strip
|
clean_content = CGI.unescapeHTML(content.gsub(/<\/?[^>]*>/, "")).strip
|
||||||
clean_content = clean_content.gsub(prefix_emoji[0], "") if prefix_emoji
|
clean_content = clean_content.gsub(prefix_emoji[0], "") if prefix_emoji
|
||||||
{
|
{
|
||||||
id: slug,
|
id: slug,
|
||||||
|
@@ -11,7 +11,7 @@ module Main
|
|||||||
recently_played_result.map do |game|
|
recently_played_result.map do |game|
|
||||||
{
|
{
|
||||||
name: game["name"],
|
name: game["name"],
|
||||||
playtime_forever: game["playtime_forever"].to_i / 60,
|
playtime_forever: game["playtime_forever"].to_i / 60
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@@ -3,74 +3,81 @@
|
|||||||
const colors = require("tailwindcss/colors");
|
const colors = require("tailwindcss/colors");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
darkMode: 'class',
|
darkMode: "class",
|
||||||
content: ["./app/templates/**/*.slim", "./slices/main/templates/**/*.slim", "./slices/admin/templates/**/*.slim", "./public/assets/index.js", "app/decorators/*/decorator.rb"],
|
content: [
|
||||||
|
"./public/*.html",
|
||||||
|
"./app/views/**/*.rb",
|
||||||
|
"./app/templates/**/*",
|
||||||
|
"./slices/**/views/**/*.rb",
|
||||||
|
"./slices/**/templates/**/*",
|
||||||
|
"./app/decorators/*/decorator.rb",
|
||||||
|
],
|
||||||
safelist: [
|
safelist: [
|
||||||
{
|
{
|
||||||
pattern: /bg-(yellow|orange|green|lime|blue|pink|purple|indigo|emerald)-(50|100|800|900)/,
|
pattern:
|
||||||
variants: ['hover', 'dark']
|
/bg-(yellow|orange|green|lime|blue|pink|purple|indigo|emerald)-(50|100|800|900)/,
|
||||||
|
variants: ["hover", "dark"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: /text-(yellow|orange|green|lime|blue|pink|purple|indigo|emerald)-(400)/,
|
pattern:
|
||||||
variants: ['hover', 'dark']
|
/text-(yellow|orange|green|lime|blue|pink|purple|indigo|emerald)-(400)/,
|
||||||
|
variants: ["hover", "dark"],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
theme: {
|
theme: {
|
||||||
fontSize: {
|
fontSize: {
|
||||||
xsm: '0.75rem',
|
xsm: "0.75rem",
|
||||||
sm: '0.8rem',
|
sm: "0.8rem",
|
||||||
base: '1rem',
|
base: "1rem",
|
||||||
xl: '1.25rem',
|
xl: "1.25rem",
|
||||||
'2xl': '1.563rem',
|
"2xl": "1.563rem",
|
||||||
'3xl': '1.953rem',
|
"3xl": "1.953rem",
|
||||||
'4xl': '2.441rem',
|
"4xl": "2.441rem",
|
||||||
'5xl': '3.052rem',
|
"5xl": "3.052rem",
|
||||||
'8xl': '6rem',
|
"8xl": "6rem",
|
||||||
},
|
},
|
||||||
extend: {
|
extend: {
|
||||||
gridTemplateColumns: {
|
gridTemplateColumns: {
|
||||||
'16': 'repeat(16, minmax(0, 1fr))',
|
16: "repeat(16, minmax(0, 1fr))",
|
||||||
},
|
},
|
||||||
gridColumn: {
|
gridColumn: {
|
||||||
'span-13': 'span 13 / span 13',
|
"span-13": "span 13 / span 13",
|
||||||
'span-14': 'span 14 / span 14',
|
"span-14": "span 14 / span 14",
|
||||||
'span-15': 'span 15 / span 15',
|
"span-15": "span 15 / span 15",
|
||||||
'span-16': 'span 16 / span 16',
|
"span-16": "span 16 / span 16",
|
||||||
},
|
},
|
||||||
boxShadow: {
|
boxShadow: {
|
||||||
'solid': `10px 10px 1px 2px`
|
solid: `10px 10px 1px 2px`,
|
||||||
},
|
},
|
||||||
typography: {
|
typography: {
|
||||||
DEFAULT: {
|
DEFAULT: {
|
||||||
css: {
|
css: {
|
||||||
h1: {
|
h1: {
|
||||||
'font-weight': 500
|
"font-weight": 500,
|
||||||
},
|
},
|
||||||
h2: {
|
h2: {
|
||||||
'font-weight': 500
|
"font-weight": 500,
|
||||||
},
|
},
|
||||||
h3: {
|
h3: {
|
||||||
'font-weight': 500
|
"font-weight": 500,
|
||||||
},
|
},
|
||||||
h2: {
|
h2: {
|
||||||
'font-weight': 500
|
"font-weight": 500,
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
css: {
|
css: {
|
||||||
em: {
|
em: {
|
||||||
colors: colors.pink['400']
|
colors: colors.pink["400"],
|
||||||
},
|
},
|
||||||
a: {
|
a: {
|
||||||
colors: colors.red['100']
|
colors: colors.red["100"],
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [require("@tailwindcss/typography")],
|
||||||
require('@tailwindcss/typography'),
|
};
|
||||||
],
|
|
||||||
}
|
|
||||||
|
9
tsconfig.json
Normal file
9
tsconfig.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"paths": {
|
||||||
|
"@app/*": ["./app/assets/*"],
|
||||||
|
"@main/*": ["./slices/main/assets/*"],
|
||||||
|
"@admin/*": ["./slices/admin/assets/*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
46
yarn.lock
46
yarn.lock
@@ -458,10 +458,9 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
|
||||||
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
||||||
|
|
||||||
hanami-assets@^2.1.0-rc.3:
|
"hanami-assets@github:hanami/assets-js#main":
|
||||||
version "2.1.0"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/hanami-assets/-/hanami-assets-2.1.0.tgz#54f658f7b4405fa98d9361a96e7162f56d85dad3"
|
resolved "https://codeload.github.com/hanami/assets-js/tar.gz/75be4683117dd6c0b039036b9884180de00c90a9"
|
||||||
integrity sha512-nOanYSZgATOrZofZXUwH7E1usTMbnECptaB6nfZCqNuE3QFCpRinOhdGJ8ndZPc1wEKVrs4VS85dQ0fLCa87Iw==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.19.0"
|
esbuild "^0.19.0"
|
||||||
fs-extra "^11.1.0"
|
fs-extra "^11.1.0"
|
||||||
@@ -524,7 +523,7 @@ jackspeak@^2.3.5:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@pkgjs/parseargs" "^0.11.0"
|
"@pkgjs/parseargs" "^0.11.0"
|
||||||
|
|
||||||
jiti@^1.19.1:
|
jiti@^1.21.0:
|
||||||
version "1.21.0"
|
version "1.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
|
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
|
||||||
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
|
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
|
||||||
@@ -788,8 +787,16 @@ source-map-js@^1.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
|
||||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||||
|
|
||||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
|
"string-width-cjs@npm:string-width@^4.2.0":
|
||||||
name string-width-cjs
|
version "4.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||||
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
|
dependencies:
|
||||||
|
emoji-regex "^8.0.0"
|
||||||
|
is-fullwidth-code-point "^3.0.0"
|
||||||
|
strip-ansi "^6.0.1"
|
||||||
|
|
||||||
|
string-width@^4.1.0:
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
@@ -807,8 +814,14 @@ string-width@^5.0.1, string-width@^5.1.2:
|
|||||||
emoji-regex "^9.2.2"
|
emoji-regex "^9.2.2"
|
||||||
strip-ansi "^7.0.1"
|
strip-ansi "^7.0.1"
|
||||||
|
|
||||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||||
name strip-ansi-cjs
|
version "6.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
|
dependencies:
|
||||||
|
ansi-regex "^5.0.1"
|
||||||
|
|
||||||
|
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
@@ -840,10 +853,10 @@ supports-preserve-symlinks-flag@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||||
|
|
||||||
tailwindcss@^3.2.4:
|
tailwindcss@^3.3.3:
|
||||||
version "3.4.1"
|
version "3.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d"
|
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.3.tgz#be48f5283df77dfced705451319a5dffb8621519"
|
||||||
integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==
|
integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@alloc/quick-lru" "^5.2.0"
|
"@alloc/quick-lru" "^5.2.0"
|
||||||
arg "^5.0.2"
|
arg "^5.0.2"
|
||||||
@@ -853,7 +866,7 @@ tailwindcss@^3.2.4:
|
|||||||
fast-glob "^3.3.0"
|
fast-glob "^3.3.0"
|
||||||
glob-parent "^6.0.2"
|
glob-parent "^6.0.2"
|
||||||
is-glob "^4.0.3"
|
is-glob "^4.0.3"
|
||||||
jiti "^1.19.1"
|
jiti "^1.21.0"
|
||||||
lilconfig "^2.1.0"
|
lilconfig "^2.1.0"
|
||||||
micromatch "^4.0.5"
|
micromatch "^4.0.5"
|
||||||
normalize-path "^3.0.0"
|
normalize-path "^3.0.0"
|
||||||
@@ -894,6 +907,11 @@ ts-interface-checker@^0.1.9:
|
|||||||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||||
|
|
||||||
|
typescript@^5.2.2:
|
||||||
|
version "5.4.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
|
||||||
|
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
|
||||||
|
|
||||||
universalify@^2.0.0:
|
universalify@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
|
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
|
||||||
|
Reference in New Issue
Block a user