feat: update stuff
This commit is contained in:
parent
879b250725
commit
9349caff10
23 changed files with 388 additions and 109 deletions
|
@ -30,7 +30,10 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
"reference": {
|
"reference": {
|
||||||
"type": "string"
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$schema": {
|
"$schema": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
|
|
||||||
export default new Map([
|
export default new Map([
|
||||||
["src/content/fragments/en/image-full.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Fen%2Fimage-full.mdx&astroContentModuleFlag=true")],
|
["src/content/fragments/fr/buttons.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Ffr%2Fbuttons.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/fragments/en/super-cookies.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Fen%2Fsuper-cookies.mdx&astroContentModuleFlag=true")],
|
["src/content/fragments/fr/image-full.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Ffr%2Fimage-full.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/articles/en/video-compression.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fvideo-compression.mdx&astroContentModuleFlag=true")],
|
["src/content/fragments/fr/super-cookies.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Ffr%2Fsuper-cookies.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/articles/en/sci-hub-blocage.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fsci-hub-blocage.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/en/sci-hub-blocage.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fsci-hub-blocage.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/articles/en/after-effects-expressions.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fafter-effects-expressions.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/en/after-effects-expressions.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fafter-effects-expressions.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/articles/en/the-day-I-jamd.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fthe-day-I-jamd.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/en/the-day-I-jamd.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fthe-day-I-jamd.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/fragments/fr/buttons.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Ffr%2Fbuttons.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/en/video-compression.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Fen%2Fvideo-compression.mdx&astroContentModuleFlag=true")],
|
||||||
|
["src/content/fragments/en/image-full.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Fen%2Fimage-full.mdx&astroContentModuleFlag=true")],
|
||||||
|
["src/content/fragments/en/super-cookies.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Fen%2Fsuper-cookies.mdx&astroContentModuleFlag=true")],
|
||||||
|
["src/content/articles/fr/2025.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2F2025.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/articles/fr/configuration-serveur.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2Fconfiguration-serveur.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/fr/configuration-serveur.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2Fconfiguration-serveur.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/fragments/fr/image-full.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Ffr%2Fimage-full.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/fr/sci-hub-blocage.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2Fsci-hub-blocage.mdx&astroContentModuleFlag=true")],
|
||||||
["src/content/fragments/fr/super-cookies.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Ffragments%2Ffr%2Fsuper-cookies.mdx&astroContentModuleFlag=true")],
|
["src/content/articles/fr/the-day-I-jamd.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2Fthe-day-I-jamd.mdx&astroContentModuleFlag=true")]]);
|
||||||
["src/content/articles/fr/the-day-I-jamd.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2Fthe-day-I-jamd.mdx&astroContentModuleFlag=true")],
|
|
||||||
["src/content/articles/fr/sci-hub-blocage.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Farticles%2Ffr%2Fsci-hub-blocage.mdx&astroContentModuleFlag=true")]]);
|
|
||||||
|
|
49
.astro/content.d.ts
vendored
49
.astro/content.d.ts
vendored
|
@ -42,6 +42,21 @@ declare module 'astro:content' {
|
||||||
ContentEntryMap[C]
|
ContentEntryMap[C]
|
||||||
>['slug'];
|
>['slug'];
|
||||||
|
|
||||||
|
export type ReferenceDataEntry<
|
||||||
|
C extends CollectionKey,
|
||||||
|
E extends keyof DataEntryMap[C] = string,
|
||||||
|
> = {
|
||||||
|
collection: C;
|
||||||
|
id: E;
|
||||||
|
};
|
||||||
|
export type ReferenceContentEntry<
|
||||||
|
C extends keyof ContentEntryMap,
|
||||||
|
E extends ValidContentEntrySlug<C> | (string & {}) = string,
|
||||||
|
> = {
|
||||||
|
collection: C;
|
||||||
|
slug: E;
|
||||||
|
};
|
||||||
|
|
||||||
/** @deprecated Use `getEntry` instead. */
|
/** @deprecated Use `getEntry` instead. */
|
||||||
export function getEntryBySlug<
|
export function getEntryBySlug<
|
||||||
C extends keyof ContentEntryMap,
|
C extends keyof ContentEntryMap,
|
||||||
|
@ -72,19 +87,17 @@ declare module 'astro:content' {
|
||||||
export function getEntry<
|
export function getEntry<
|
||||||
C extends keyof ContentEntryMap,
|
C extends keyof ContentEntryMap,
|
||||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||||
>(entry: {
|
>(
|
||||||
collection: C;
|
entry: ReferenceContentEntry<C, E>,
|
||||||
slug: E;
|
): E extends ValidContentEntrySlug<C>
|
||||||
}): E extends ValidContentEntrySlug<C>
|
|
||||||
? Promise<CollectionEntry<C>>
|
? Promise<CollectionEntry<C>>
|
||||||
: Promise<CollectionEntry<C> | undefined>;
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
export function getEntry<
|
export function getEntry<
|
||||||
C extends keyof DataEntryMap,
|
C extends keyof DataEntryMap,
|
||||||
E extends keyof DataEntryMap[C] | (string & {}),
|
E extends keyof DataEntryMap[C] | (string & {}),
|
||||||
>(entry: {
|
>(
|
||||||
collection: C;
|
entry: ReferenceDataEntry<C, E>,
|
||||||
id: E;
|
): E extends keyof DataEntryMap[C]
|
||||||
}): E extends keyof DataEntryMap[C]
|
|
||||||
? Promise<DataEntryMap[C][E]>
|
? Promise<DataEntryMap[C][E]>
|
||||||
: Promise<CollectionEntry<C> | undefined>;
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
export function getEntry<
|
export function getEntry<
|
||||||
|
@ -110,16 +123,10 @@ declare module 'astro:content' {
|
||||||
|
|
||||||
/** Resolve an array of entry references from the same collection */
|
/** Resolve an array of entry references from the same collection */
|
||||||
export function getEntries<C extends keyof ContentEntryMap>(
|
export function getEntries<C extends keyof ContentEntryMap>(
|
||||||
entries: {
|
entries: ReferenceContentEntry<C, ValidContentEntrySlug<C>>[],
|
||||||
collection: C;
|
|
||||||
slug: ValidContentEntrySlug<C>;
|
|
||||||
}[],
|
|
||||||
): Promise<CollectionEntry<C>[]>;
|
): Promise<CollectionEntry<C>[]>;
|
||||||
export function getEntries<C extends keyof DataEntryMap>(
|
export function getEntries<C extends keyof DataEntryMap>(
|
||||||
entries: {
|
entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[],
|
||||||
collection: C;
|
|
||||||
id: keyof DataEntryMap[C];
|
|
||||||
}[],
|
|
||||||
): Promise<CollectionEntry<C>[]>;
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
|
||||||
export function render<C extends keyof AnyEntryMap>(
|
export function render<C extends keyof AnyEntryMap>(
|
||||||
|
@ -131,14 +138,8 @@ declare module 'astro:content' {
|
||||||
): import('astro/zod').ZodEffects<
|
): import('astro/zod').ZodEffects<
|
||||||
import('astro/zod').ZodString,
|
import('astro/zod').ZodString,
|
||||||
C extends keyof ContentEntryMap
|
C extends keyof ContentEntryMap
|
||||||
? {
|
? ReferenceContentEntry<C, ValidContentEntrySlug<C>>
|
||||||
collection: C;
|
: ReferenceDataEntry<C, keyof DataEntryMap[C]>
|
||||||
slug: ValidContentEntrySlug<C>;
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
collection: C;
|
|
||||||
id: keyof DataEntryMap[C];
|
|
||||||
}
|
|
||||||
>;
|
>;
|
||||||
// Allow generic `string` to avoid excessive type errors in the config
|
// Allow generic `string` to avoid excessive type errors in the config
|
||||||
// if `dev` is not running to update as you edit.
|
// if `dev` is not running to update as you edit.
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"_variables": {
|
"_variables": {
|
||||||
"lastUpdateCheck": 1737382034437
|
"lastUpdateCheck": 1750326901251
|
||||||
}
|
}
|
||||||
}
|
}
|
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
20
package.json
20
package.json
|
@ -10,20 +10,20 @@
|
||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "4.0.7",
|
"@astrojs/mdx": "4.3.0",
|
||||||
"@astrojs/rss": "4.0.11",
|
"@astrojs/rss": "4.0.12",
|
||||||
"@astrojs/sitemap": "^3.2.1",
|
"@astrojs/sitemap": "^3.4.1",
|
||||||
"@astrojs/ts-plugin": "^1.10.4",
|
"@astrojs/ts-plugin": "^1.10.4",
|
||||||
"@expressive-code/plugin-line-numbers": "^0.40.1",
|
"@expressive-code/plugin-line-numbers": "^0.41.2",
|
||||||
"astro": "5.1.8",
|
"astro": "5.9.4",
|
||||||
"astro-expressive-code": "^0.40.1",
|
"astro-expressive-code": "^0.41.2",
|
||||||
"rehype-external-links": "^3.0.0",
|
"rehype-external-links": "^3.0.0",
|
||||||
"sharp": "^0.33.5"
|
"sharp": "^0.34.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.21",
|
||||||
"postcss": "^8.5.1",
|
"postcss": "^8.5.6",
|
||||||
"prettier": "^3.4.2",
|
"prettier": "^3.5.3",
|
||||||
"prettier-plugin-astro": "^0.14.1",
|
"prettier-plugin-astro": "^0.14.1",
|
||||||
"prettier-plugin-organize-imports": "^4.1.0"
|
"prettier-plugin-organize-imports": "^4.1.0"
|
||||||
}
|
}
|
||||||
|
|
28
src/components/AIFree.astro
Normal file
28
src/components/AIFree.astro
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
border?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
const { border = false } = Astro.props
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class:list={[{ outline: border }]}>
|
||||||
|
Garanti sans « <abbr title='intelligence artificielle'>IA</abbr> »
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
span {
|
||||||
|
padding: var(--space-3xs) var(--space-2xs);
|
||||||
|
display: inline-block;
|
||||||
|
font-size: var(--size--1);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
color: var(--color-light-white);
|
||||||
|
background-color: var(--color-dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
span.outline {
|
||||||
|
color: var(--color-dark);
|
||||||
|
border: 1px solid var(--color-dark);
|
||||||
|
background-color: var(--color-light-white);
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -2,6 +2,7 @@
|
||||||
import { Picture } from 'astro:assets'
|
import { Picture } from 'astro:assets'
|
||||||
import SocialRel from '../components/SocialRel.astro'
|
import SocialRel from '../components/SocialRel.astro'
|
||||||
import fight from '../assets/images/fight-fascism.webp'
|
import fight from '../assets/images/fight-fascism.webp'
|
||||||
|
import AIFree from './AIFree.astro'
|
||||||
---
|
---
|
||||||
|
|
||||||
<footer class='footer wrapper flow' role='contentinfo'>
|
<footer class='footer wrapper flow' role='contentinfo'>
|
||||||
|
@ -25,6 +26,7 @@ import fight from '../assets/images/fight-fascism.webp'
|
||||||
>
|
>
|
||||||
<Picture src={fight} formats={['avif', 'webp']} alt='Fight fascism' />
|
<Picture src={fight} formats={['avif', 'webp']} alt='Fight fascism' />
|
||||||
</a>
|
</a>
|
||||||
|
<AIFree />
|
||||||
</section>
|
</section>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
@ -49,6 +51,7 @@ import fight from '../assets/images/fight-fascism.webp'
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row wrap;
|
flex-flow: row wrap;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
gap: var(--space-s);
|
gap: var(--space-s);
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ const HPsectionSchema = z.object({
|
||||||
order: z.number(),
|
order: z.number(),
|
||||||
quickTitle: z.string().optional(),
|
quickTitle: z.string().optional(),
|
||||||
quickImage: z.string().optional(),
|
quickImage: z.string().optional(),
|
||||||
reference: z.string().optional()
|
reference: z.array(z.string()).optional()
|
||||||
})
|
})
|
||||||
|
|
||||||
const VeilleSchema = z.object({
|
const VeilleSchema = z.object({
|
||||||
|
|
|
@ -22,7 +22,7 @@ So the last time I had to do a complex animation, **I took the damn time!**
|
||||||
Everyone uses expressions whether they know it or not. Most of the time it's a rather transparent process for the animator. For example: when parenting a property to another one, After Effects creates an expression for us.
|
Everyone uses expressions whether they know it or not. Most of the time it's a rather transparent process for the animator. For example: when parenting a property to another one, After Effects creates an expression for us.
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/basic_expression_d81b12f1ac.jpeg'
|
src='https://assets.nardu.in/basic_expression.jpg'
|
||||||
width='728'
|
width='728'
|
||||||
height='80'
|
height='80'
|
||||||
alt='Parenting the position of the form to a null creates an expression.'
|
alt='Parenting the position of the form to a null creates an expression.'
|
||||||
|
@ -33,7 +33,7 @@ Over the last updates, Adobe has made an effort to make expressions more accessi
|
||||||
Those custom functions can be called through a menu once you enabled the expressions on a property. It offers organized shortcut and proper syntax to all of AE native functions and a bunch of JavaScript standard ones.
|
Those custom functions can be called through a menu once you enabled the expressions on a property. It offers organized shortcut and proper syntax to all of AE native functions and a bunch of JavaScript standard ones.
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/shortcut_39cc19d383.jpeg'
|
src='https://assets.nardu.in/shortcut.jpg'
|
||||||
width='728'
|
width='728'
|
||||||
height='322'
|
height='322'
|
||||||
alt='Alt + Click the stopwatch to access the shortcuts.'
|
alt='Alt + Click the stopwatch to access the shortcuts.'
|
||||||
|
|
|
@ -8,7 +8,7 @@ excerpt: 'In March 2019, the Paris Regional Court ruled in favour of the publish
|
||||||
tags: ['Internet', 'Science']
|
tags: ['Internet', 'Science']
|
||||||
type: articles
|
type: articles
|
||||||
createdAt: '2019-03-31T07:47:36.000Z'
|
createdAt: '2019-03-31T07:47:36.000Z'
|
||||||
updatedAt: '2022-12-27T12:08:00.000Z'
|
updatedAt: '2025-06-19T12:08:00.000Z'
|
||||||
---
|
---
|
||||||
|
|
||||||
import AstroImage from '../../../components/AstroImage.astro'
|
import AstroImage from '../../../components/AstroImage.astro'
|
||||||
|
@ -102,23 +102,24 @@ There are many DNS servers available. The best known are Google, Cloudflare and
|
||||||
|
|
||||||
My favorite since it is a [french association](https://www.fdn.fr/)
|
My favorite since it is a [french association](https://www.fdn.fr/)
|
||||||
|
|
||||||
1. IPV4
|
#### Update June 2025
|
||||||
- 80.67.169.12
|
|
||||||
- 80.67.169.40
|
|
||||||
2. IPV6
|
|
||||||
- 2001:910:800::12
|
|
||||||
- 2001:910:800::40
|
|
||||||
|
|
||||||
### [Quad9](https://www.quad9.net)
|
FDN disabled its open DNS service since last March. They provide [a tutorial to use their secure DNS (<abbr lang="en" title="DNS over TLS">DOT</abbr> and <abbr lang="en" title="DNS over HTTPS">DOH</abbr>) here.](https://git.fdn.fr/fdn-public/wiki/-/blob/master/support/faq/config_dns.md)
|
||||||
|
|
||||||
Quand9 is a non-profit foundation offering free public DNS servers. Their classic servers offer filtering of identified malicious domains. They do not collect data and are <abbr title="General Data Protection Regulation">GDPR</abbr>-compliant.
|
### [Mullvad](https://mullvad.net/en/help/dns-over-https-and-dns-over-tls)
|
||||||
|
|
||||||
|
Mullvad offers open DNS resolvers but only in <abbr lang="en" title="DNS over TLS">DOT</abbr> and <abbr lang="en" title="DNS over HTTPS">DOH</abbr>.
|
||||||
|
|
||||||
|
### I just want a DNS now!
|
||||||
|
|
||||||
|
[DNSForge.de](https://dnsforge.de/)
|
||||||
|
|
||||||
1. IPV4
|
1. IPV4
|
||||||
- 9.9.9.9
|
- 176.9.93.198
|
||||||
- 149.112.112.112
|
- 176.9.1.117
|
||||||
2. IPV6
|
2. IPV6
|
||||||
- 2620:fe::fe
|
- 2a01:4f8:151:34aa::198
|
||||||
- 2620:fe::9
|
- 2a01:4f8:141:316d::117
|
||||||
|
|
||||||
## That's it.
|
## That's it.
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ Boy did they exceed my expectations! With almost no optimization on the static s
|
||||||
### wordpress
|
### wordpress
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/wordpress_8ee6f54b98.jpeg'
|
src='https://assets.nardu.in/wordpress.jpg'
|
||||||
width='728'
|
width='728'
|
||||||
height='412'
|
height='412'
|
||||||
alt='Performance score of 53/100 on Wordpress.'
|
alt='Performance score of 53/100 on Wordpress.'
|
||||||
|
@ -42,7 +42,7 @@ Despite a lot of efforts I could not do better. I’m no expert in caching, do n
|
||||||
### 11ty + strapi
|
### 11ty + strapi
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/static_2c0d9f1eb8.jpeg'
|
src='https://assets.nardu.in/static.jpg'
|
||||||
width='728'
|
width='728'
|
||||||
height='412'
|
height='412'
|
||||||
alt='Performance score of 97/100 on jamstack.'
|
alt='Performance score of 97/100 on jamstack.'
|
||||||
|
|
181
src/content/articles/fr/2025.mdx
Normal file
181
src/content/articles/fr/2025.mdx
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
---
|
||||||
|
title: 'Mise à jour 2025'
|
||||||
|
subtitle: 'Tout refaire ?'
|
||||||
|
lang: fr
|
||||||
|
slug: '2025'
|
||||||
|
excerpt: Presque tout changer ou du moins repenser beaucoup de choses.
|
||||||
|
tags: ['Freelance', 'Réflexion']
|
||||||
|
type: articles
|
||||||
|
createdAt: '2025-06-19T12:20:00.000Z'
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
||||||
|
<table role='table'>
|
||||||
|
<caption>
|
||||||
|
Polices par défaut des navigateurs selon les systèmes d'exploitation.
|
||||||
|
</caption>
|
||||||
|
<thead>
|
||||||
|
<tr role='row'>
|
||||||
|
<th id='system' scope='col' role='columnheader'>
|
||||||
|
Système
|
||||||
|
</th>
|
||||||
|
<th id='firefox' scope='col' role='columnheader'>
|
||||||
|
Firefox
|
||||||
|
</th>
|
||||||
|
<th id='chromium' scope='col' role='columnheader'>
|
||||||
|
Chromium
|
||||||
|
</th>
|
||||||
|
<th id='safari' scope='col' role='columnheader'>
|
||||||
|
Safari
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th id='linux' scope='row'>
|
||||||
|
Fedora/Ubuntu Gnome, Fedora KDE, Linux Mint Cinnamon, Debian Xfce
|
||||||
|
</th>
|
||||||
|
<td headers='firefox linux'>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Noto Serif
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Noto Sans
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Liberation Serif
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Liberation Sans
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>Non applicable</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th id='android' scope='row'>
|
||||||
|
Android open source project
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Noto Serif
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Roboto
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Noto Serif
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Roboto
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>Non applicable</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th id='macos' scope='row'>
|
||||||
|
MacOs Sonoma
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Times
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Helvetica
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Times
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Helvetica
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Times
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Helvetica
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th id='windows' scope='row'>
|
||||||
|
Windows 11
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Times New Roman
|
||||||
|
</p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Arial
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Times New Roman
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Arial
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>Non applicable</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th id='ios' scope='row'>
|
||||||
|
iOs 17 (?)
|
||||||
|
</th>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
???
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
???
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
Times New Roman
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
Helvetica
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>
|
||||||
|
<code>serif</code>
|
||||||
|
???
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<code>sans-serif</code>
|
||||||
|
???
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
|
@ -1,13 +1,15 @@
|
||||||
---
|
---
|
||||||
title: After Effects Expressions
|
title: After Effects Expressions
|
||||||
subtitle: En cours de traduction, revenez bientôt ;)
|
subtitle: Article non traduit
|
||||||
lang: fr
|
lang: fr
|
||||||
draft: true
|
draft: true
|
||||||
slug: 'after-effects-expressions'
|
slug: 'after-effects-expressions'
|
||||||
excerpt: En cours de traduction, revenez bientôt ;)
|
excerpt: Article non traduit
|
||||||
tags: ['Design']
|
tags: ['Design']
|
||||||
type: articles
|
type: articles
|
||||||
createdAt: '2019-04-24T09:00:00.000Z'
|
createdAt: '2019-04-24T09:00:00.000Z'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
[Lire la version anglaise](/articles/en-after-effects-expressions)
|
||||||
|
|
||||||
[Retour aux articles](/articles)
|
[Retour aux articles](/articles)
|
||||||
|
|
|
@ -7,12 +7,14 @@ excerpt: 'Le tribunal de grande instance de Paris a ordonné aux fournisseurs d
|
||||||
tags: ['Internet', 'Science']
|
tags: ['Internet', 'Science']
|
||||||
type: articles
|
type: articles
|
||||||
createdAt: '2019-03-31T07:47:36.000Z'
|
createdAt: '2019-03-31T07:47:36.000Z'
|
||||||
updatedAt: '2022-12-27T12:08:00.000Z'
|
updatedAt: '2025-06-19T12:08:00.000Z'
|
||||||
---
|
---
|
||||||
|
|
||||||
import AstroImage from '../../../components/AstroImage.astro'
|
import AstroImage from '../../../components/AstroImage.astro'
|
||||||
|
|
||||||
<a href='/articles/en-sci-hub-unblock/' lang='en'>This content exists in english.</a>
|
<a href='/articles/en-sci-hub-unblock/' lang='en'>
|
||||||
|
This content exists in english.
|
||||||
|
</a>
|
||||||
|
|
||||||
L'adresse actuelle de sci-hub est : <a href="https://www.sci-hub.st/" rel="noreferer noopener">sci-hub.st</a>
|
L'adresse actuelle de sci-hub est : <a href="https://www.sci-hub.st/" rel="noreferer noopener">sci-hub.st</a>
|
||||||
|
|
||||||
|
@ -107,23 +109,28 @@ Plusieurs fournisseurs :
|
||||||
|
|
||||||
Mes favoris puisqu’il s’agit d’une [association française.](https://www.fdn.fr/)
|
Mes favoris puisqu’il s’agit d’une [association française.](https://www.fdn.fr/)
|
||||||
|
|
||||||
1. IPV4
|
#### Mise à jour Juin 2025
|
||||||
- 80.67.169.12
|
|
||||||
- 80.67.169.40
|
|
||||||
2. IPV6
|
|
||||||
- 2001:910:800::12
|
|
||||||
- 2001:910:800::40
|
|
||||||
|
|
||||||
### [Quad9](https://www.quad9.net/fr)
|
FDN a désactivé ses DNS ouverts depuis Mars dernier. Ils mettent à disposition [un tutoriel pour utiliser leurs DNS sécurisés (<abbr lang="en" title="DNS over TLS">DOT</abbr> et <abbr lang="en" title="DNS over HTTPS">DOH</abbr>) ici.](https://git.fdn.fr/fdn-public/wiki/-/blob/master/support/faq/config_dns.md)
|
||||||
|
|
||||||
Quand9 est une fondation à but non lucratif proposant des serveurs DNS publics et gratuits. Leurs serveur classiques offrent un filtrage de domaines malveillants identifiés. Ils ne collectent pas de données et sont conforment au <abbr title="Règlement général sur la protection des données">RGPD</abbr>.
|
### [Mullvad](https://mullvad.net/en/help/dns-over-https-and-dns-over-tls)
|
||||||
|
|
||||||
|
Mullvad propose des serveurs DNS ouverts mais uniquement en <abbr lang="en" title="DNS over TLS">DOT</abbr> et <abbr lang="en" title="DNS over HTTPS">DOH</abbr>.
|
||||||
|
|
||||||
|
### [Résolveurs DNS Alternatifs](https://sebsauvage.net/wiki/doku.php?id=dns-alternatifs)
|
||||||
|
|
||||||
|
Liste de DNS et leurs caractéristiques publiée par [sebsauvage.net](https://sebsauvage.net)
|
||||||
|
|
||||||
|
### Je veux un DNS maintenant !
|
||||||
|
|
||||||
|
[DNSForge.de](https://dnsforge.de/)
|
||||||
|
|
||||||
1. IPV4
|
1. IPV4
|
||||||
- 9.9.9.9
|
- 176.9.93.198
|
||||||
- 149.112.112.112
|
- 176.9.1.117
|
||||||
2. IPV6
|
2. IPV6
|
||||||
- 2620:fe::fe
|
- 2a01:4f8:151:34aa::198
|
||||||
- 2620:fe::9
|
- 2a01:4f8:141:316d::117
|
||||||
|
|
||||||
## C'est tout.
|
## C'est tout.
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,9 @@ createdAt: '2020-10-08T07:47:36.000Z'
|
||||||
updatedAt: '2022-12-27T15:40:06.000Z'
|
updatedAt: '2022-12-27T15:40:06.000Z'
|
||||||
---
|
---
|
||||||
|
|
||||||
<a href='/articles/en-the-day-I-jamd/' lang='en'>This content exists in english.</a>
|
<a href='/articles/en-the-day-I-jamd/' lang='en'>
|
||||||
|
This content exists in english.
|
||||||
|
</a>
|
||||||
|
|
||||||
import AstroImage from '../../../components/AstroImage.astro'
|
import AstroImage from '../../../components/AstroImage.astro'
|
||||||
|
|
||||||
|
@ -33,7 +35,7 @@ J’en suis resté pantois ! Quasiment sans optimisation du côté statique
|
||||||
### wordpress
|
### wordpress
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/wordpress_8ee6f54b98.jpeg'
|
src='https://assets.nardu.in/wordpress.jpg'
|
||||||
width='728'
|
width='728'
|
||||||
height='412'
|
height='412'
|
||||||
alt='Score de performance de 53/100 sur Wordpress.'
|
alt='Score de performance de 53/100 sur Wordpress.'
|
||||||
|
@ -44,7 +46,7 @@ Malgré beaucoup d’efforts, je n’ai pas pu faire mieux. Je ne suis pas un ex
|
||||||
### 11ty + strapi
|
### 11ty + strapi
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/static_2c0d9f1eb8.jpeg'
|
src='https://assets.nardu.in/static.jpg'
|
||||||
width='728'
|
width='728'
|
||||||
height='412'
|
height='412'
|
||||||
alt='Score de performance de 97/100 en Jamstack.'
|
alt='Score de performance de 97/100 en Jamstack.'
|
||||||
|
|
|
@ -17,7 +17,7 @@ import AstroImage from '../../../components/AstroImage.astro'
|
||||||
On est parfois obligé d'utiliser des images dans des balises `img` plutôt que dans un `background` en css. Comment faire alors pour que l'image sorte de son conteneur pour en faire une bannière ? Exemple pratique à partir de ce même site.
|
On est parfois obligé d'utiliser des images dans des balises `img` plutôt que dans un `background` en css. Comment faire alors pour que l'image sorte de son conteneur pour en faire une bannière ? Exemple pratique à partir de ce même site.
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/image_bleed_container_9e3939b3ae.jpeg'
|
src='https://assets.nardu.in/image_bleed_container.jpg'
|
||||||
width='320'
|
width='320'
|
||||||
height='568'
|
height='568'
|
||||||
/>
|
/>
|
||||||
|
@ -51,7 +51,7 @@ img {
|
||||||
```
|
```
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/image_bleed_original_d49f0d11bf.jpeg'
|
src='https://assets.nardu.in/image_bleed_original.jpg'
|
||||||
width='320'
|
width='320'
|
||||||
height='568'
|
height='568'
|
||||||
/>
|
/>
|
||||||
|
@ -70,7 +70,7 @@ Afin de faire prendre à l'image toute la largeur, on agit sur son conteneur&nbs
|
||||||
```
|
```
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/image_bleed_full_2a902f9539.jpeg'
|
src='https://assets.nardu.in/image_bleed_full.jpg'
|
||||||
width='320'
|
width='320'
|
||||||
height='568'
|
height='568'
|
||||||
/>
|
/>
|
||||||
|
@ -92,7 +92,7 @@ On peut alors réduire la hauteur du conteneur pour obtenir une bannière plutô
|
||||||
```
|
```
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/image_bleed_height_81b4ce969a.jpeg'
|
src='https://assets.nardu.in/image_bleed_height.jpg'
|
||||||
width='320'
|
width='320'
|
||||||
height='568'
|
height='568'
|
||||||
/>
|
/>
|
||||||
|
@ -107,7 +107,7 @@ Il faut ensuite forcer l'image à prendre toute la largeur du conteneur :
|
||||||
```
|
```
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/image_bleed_deformed_479046d2cb.jpeg'
|
src='https://assets.nardu.in/image_bleed_deformed.jpg'
|
||||||
width='320'
|
width='320'
|
||||||
height='568'
|
height='568'
|
||||||
/>
|
/>
|
||||||
|
@ -128,7 +128,7 @@ Pas top…
|
||||||
```
|
```
|
||||||
|
|
||||||
<AstroImage
|
<AstroImage
|
||||||
src='https://assets.nardu.in/image_bleed_6c164e82b3.jpeg'
|
src='https://assets.nardu.in/image_bleed.jpg'
|
||||||
width='320'
|
width='320'
|
||||||
height='568'
|
height='568'
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -6,7 +6,7 @@ image: /assets/images/home/offre-1.1.svg
|
||||||
order: 1.1
|
order: 1.1
|
||||||
quickTitle: Mes offres en freelance
|
quickTitle: Mes offres en freelance
|
||||||
quickImage: /assets/images/home/icon-desktop.svg
|
quickImage: /assets/images/home/icon-desktop.svg
|
||||||
reference: parole-expression
|
reference: ['parole-expression', 'natureo']
|
||||||
---
|
---
|
||||||
|
|
||||||
## L'offre site web classique
|
## L'offre site web classique
|
||||||
|
@ -14,5 +14,3 @@ reference: parole-expression
|
||||||
Cette offre est destinée à un public souhaitant **se doter d'un site web**, sans forcément intégrer l'accessibilité au cœur du projet. Le site sera malgré tout développé au plus proche des règles du [référentiel général d'amélioration de l'accessibilité](https://accessibilite.numerique.gouv.fr/) (<abbr>RGAA</abbr>).
|
Cette offre est destinée à un public souhaitant **se doter d'un site web**, sans forcément intégrer l'accessibilité au cœur du projet. Le site sera malgré tout développé au plus proche des règles du [référentiel général d'amélioration de l'accessibilité](https://accessibilite.numerique.gouv.fr/) (<abbr>RGAA</abbr>).
|
||||||
|
|
||||||
L'objectif principal de cette offre étant d'**établir une présence en ligne** pour le client. Que cette dernière ait un but informatif et/ou éditorial.
|
L'objectif principal de cette offre étant d'**établir une présence en ligne** pour le client. Que cette dernière ait un but informatif et/ou éditorial.
|
||||||
|
|
||||||
<!-- <a href="/offres/web-classique" class="btn">L'offre classique en détails</a> -->
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ type: section
|
||||||
lang: fr
|
lang: fr
|
||||||
order: 1.2
|
order: 1.2
|
||||||
image: /assets/images/home/offre-1.2.svg
|
image: /assets/images/home/offre-1.2.svg
|
||||||
reference: rose-primaire
|
reference: ['rose-primaire']
|
||||||
---
|
---
|
||||||
|
|
||||||
## L'offre accessibilité avancée
|
## L'offre accessibilité avancée
|
||||||
|
@ -14,5 +14,3 @@ Lorsque le projet le nécessite, je fais appel à des partenaires talentueux par
|
||||||
|
|
||||||
- [Rose Primaire](https://roseprimaire.com/) pour le conseil et l'accompagnement du projet ;
|
- [Rose Primaire](https://roseprimaire.com/) pour le conseil et l'accompagnement du projet ;
|
||||||
- [Sylvain Plantier](https://jedessinebien.com/) et/ou [Benoît Etchevery](http://ben-etche.com/) pour l'illustration et la direction artistique.
|
- [Sylvain Plantier](https://jedessinebien.com/) et/ou [Benoît Etchevery](http://ben-etche.com/) pour l'illustration et la direction artistique.
|
||||||
|
|
||||||
<!-- <a href="/offres/accessibilite" class="btn">L'offre accessibilité en détails</a> -->
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { getCollection, render } from 'astro:content'
|
||||||
import BaseLayout from '../layouts/BaseLayout.astro'
|
import BaseLayout from '../layouts/BaseLayout.astro'
|
||||||
import QuickAccessCard from '../components/QuickAccessCard.astro'
|
import QuickAccessCard from '../components/QuickAccessCard.astro'
|
||||||
import ListCards from '../components/ListCards.astro'
|
import ListCards from '../components/ListCards.astro'
|
||||||
|
import AIFree from '@components/AIFree.astro'
|
||||||
|
|
||||||
const pageTitle = 'Accueil'
|
const pageTitle = 'Accueil'
|
||||||
|
|
||||||
|
@ -42,11 +43,14 @@ const allReferences = await getCollection('references')
|
||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout pageTitle={pageTitle}>
|
<BaseLayout pageTitle={pageTitle}>
|
||||||
<section class='region intro'>
|
<section class='region intro flow'>
|
||||||
<h1>
|
<h1>
|
||||||
Création de <span class='highlight'>sites web</span>
|
Des sites web <span class='highlight'>accessibles</span>
|
||||||
<a href='/articles/faq' class='clean-link'>sobres et accessibles</a>
|
<a href='/articles/faq' class='clean-link'>sinon rien !</a>
|
||||||
</h1>
|
</h1>
|
||||||
|
<div class='ai-badge'>
|
||||||
|
<AIFree />
|
||||||
|
</div>
|
||||||
<section class='quick-access'>
|
<section class='quick-access'>
|
||||||
<h2 class='intro__subtitle'>Apprenez-en plus sur…</h2>
|
<h2 class='intro__subtitle'>Apprenez-en plus sur…</h2>
|
||||||
<ul class='quick-access__list' role='list'>
|
<ul class='quick-access__list' role='list'>
|
||||||
|
@ -74,7 +78,7 @@ const allReferences = await getCollection('references')
|
||||||
<div class='section__reference'>
|
<div class='section__reference'>
|
||||||
<ListCards
|
<ListCards
|
||||||
list={allReferences.filter((ref) => {
|
list={allReferences.filter((ref) => {
|
||||||
return ref.data.slug === data.reference
|
return data.reference?.includes(ref.data.slug)
|
||||||
})}
|
})}
|
||||||
routeName='references'
|
routeName='references'
|
||||||
/>
|
/>
|
||||||
|
@ -138,6 +142,9 @@ const allReferences = await getCollection('references')
|
||||||
.intro h1 :global(a:hover) {
|
.intro h1 :global(a:hover) {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
.intro .ai-badge {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
.intro__subtitle {
|
.intro__subtitle {
|
||||||
margin: var(--space-s-m) 0;
|
margin: var(--space-s-m) 0;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
@ -205,19 +212,15 @@ const allReferences = await getCollection('references')
|
||||||
.section__content {
|
.section__content {
|
||||||
order: 2;
|
order: 2;
|
||||||
flex-basis: 0;
|
flex-basis: 0;
|
||||||
min-inline-size: 32ch;
|
min-inline-size: 50ch;
|
||||||
font-size: var(--size-1);
|
|
||||||
}
|
}
|
||||||
.section__content :global(h2) {
|
.section__content :global(h2) {
|
||||||
font-size: var(--size-5);
|
font-size: var(--size-4);
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
}
|
}
|
||||||
.section__reference {
|
.section__reference {
|
||||||
margin-block-start: 50vh;
|
margin-block-start: var(--space-2xl);
|
||||||
padding-block-end: var(--space-3xl);
|
padding-block-end: var(--space-3xl);
|
||||||
}
|
}
|
||||||
.section__reference :global(.card a) {
|
|
||||||
font-size: var(--size-0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -224,3 +224,53 @@ code {
|
||||||
font-family: var(--font-code);
|
font-family: var(--font-code);
|
||||||
background-color: var(--color-light-grey);
|
background-color: var(--color-light-grey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tables */
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
table caption {
|
||||||
|
font-size: var(--size-1);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
caption,
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
padding: var(--space-xs);
|
||||||
|
}
|
||||||
|
th {
|
||||||
|
background-color: var(--color-light-blue);
|
||||||
|
}
|
||||||
|
th[scope='row'],
|
||||||
|
td {
|
||||||
|
font-size: var(--size--1);
|
||||||
|
border-inline-end: solid 1px var(--color-dark);
|
||||||
|
}
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
padding: var(--space-xs);
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
border-block: solid 1px var(--color-dark);
|
||||||
|
}
|
||||||
|
tr:nth-of-type(2n) {
|
||||||
|
background-color: var(--color-light-grey);
|
||||||
|
}
|
||||||
|
td::before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 56.25rem) {
|
||||||
|
th {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
td::before {
|
||||||
|
content: attr(data-cell) ': ';
|
||||||
|
display: inline;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -51,8 +51,7 @@
|
||||||
--space-l-3xl: clamp(2.25rem, calc(-0.08rem + 11.67vw), 7.5rem);
|
--space-l-3xl: clamp(2.25rem, calc(-0.08rem + 11.67vw), 7.5rem);
|
||||||
|
|
||||||
/* fonts */
|
/* fonts */
|
||||||
--font-primary: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
--font-primary: sans-serif;
|
||||||
Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
|
||||||
--font-code: monospace;
|
--font-code: monospace;
|
||||||
--font-tnum: 'tnum' on;
|
--font-tnum: 'tnum' on;
|
||||||
|
|
||||||
|
@ -83,12 +82,14 @@
|
||||||
|
|
||||||
/* shadows */
|
/* shadows */
|
||||||
--shadow-color: 0deg 0% 80%;
|
--shadow-color: 0deg 0% 80%;
|
||||||
--shadow-elevation-medium: 0px 0.7px 0.7px hsl(var(--shadow-color) / 0.28),
|
--shadow-elevation-medium:
|
||||||
|
0px 0.7px 0.7px hsl(var(--shadow-color) / 0.28),
|
||||||
0px 1.5px 1.6px -0.7px hsl(var(--shadow-color) / 0.26),
|
0px 1.5px 1.6px -0.7px hsl(var(--shadow-color) / 0.26),
|
||||||
0px 2.9px 3px -1.5px hsl(var(--shadow-color) / 0.24),
|
0px 2.9px 3px -1.5px hsl(var(--shadow-color) / 0.24),
|
||||||
0px 6px 6.3px -2.2px hsl(var(--shadow-color) / 0.22),
|
0px 6px 6.3px -2.2px hsl(var(--shadow-color) / 0.22),
|
||||||
0px 11.8px 12.4px -3px hsl(var(--shadow-color) / 0.2);
|
0px 11.8px 12.4px -3px hsl(var(--shadow-color) / 0.2);
|
||||||
--shadow-elevation-high: 0px 0.5px 0.5px hsl(var(--shadow-color) / 0.18),
|
--shadow-elevation-high:
|
||||||
|
0px 0.5px 0.5px hsl(var(--shadow-color) / 0.18),
|
||||||
0px 1.4px 1.5px -0.3px hsl(var(--shadow-color) / 0.18),
|
0px 1.4px 1.5px -0.3px hsl(var(--shadow-color) / 0.18),
|
||||||
0px 2.3px 2.4px -0.7px hsl(var(--shadow-color) / 0.17),
|
0px 2.3px 2.4px -0.7px hsl(var(--shadow-color) / 0.17),
|
||||||
0px 3.4px 3.6px -1px hsl(var(--shadow-color) / 0.16),
|
0px 3.4px 3.6px -1px hsl(var(--shadow-color) / 0.16),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue