@datagouv/components-next 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.
- package/README.md +150 -0
- package/assets/main.css +136 -0
- package/assets/placeholders/author.png +0 -0
- package/assets/placeholders/dataset.png +0 -0
- package/assets/placeholders/news.png +0 -0
- package/assets/placeholders/organization.png +0 -0
- package/assets/placeholders/reuse.png +0 -0
- package/assets/tailwind.config.js +24 -0
- package/dist/components.css +2 -0
- package/dist/locales/de.js +155 -0
- package/dist/locales/en.js +155 -0
- package/dist/locales/es.js +155 -0
- package/dist/locales/fr.js +155 -0
- package/dist/locales/it.js +155 -0
- package/dist/locales/pt.js +155 -0
- package/dist/locales/sr.js +155 -0
- package/package.json +72 -0
- package/src/components/AppLink.vue +51 -0
- package/src/components/Avatar.vue +27 -0
- package/src/components/AvatarWithName.vue +26 -0
- package/src/components/BannerAction.vue +39 -0
- package/src/components/BrandedButton.vue +170 -0
- package/src/components/CopyButton.vue +84 -0
- package/src/components/DataserviceCard.vue +184 -0
- package/src/components/DatasetCard.vue +198 -0
- package/src/components/DatasetInformationPanel.vue +210 -0
- package/src/components/DatasetQuality.vue +68 -0
- package/src/components/DatasetQualityInline.vue +32 -0
- package/src/components/DatasetQualityItem.vue +32 -0
- package/src/components/DatasetQualityItemWarning.vue +21 -0
- package/src/components/DatasetQualityScore.vue +35 -0
- package/src/components/DatasetQualityTooltipContent.vue +79 -0
- package/src/components/DescriptionDetails.vue +23 -0
- package/src/components/DescriptionList/DescriptionDetails.stories.ts +43 -0
- package/src/components/DescriptionList/DescriptionList.stories.ts +47 -0
- package/src/components/DescriptionList/DescriptionTerm.stories.ts +28 -0
- package/src/components/DescriptionList.vue +8 -0
- package/src/components/DescriptionTerm.vue +8 -0
- package/src/components/ExtraAccordion.vue +78 -0
- package/src/components/Icons/Archive.vue +21 -0
- package/src/components/Icons/Code.vue +21 -0
- package/src/components/Icons/Documentation.vue +21 -0
- package/src/components/Icons/File.vue +21 -0
- package/src/components/Icons/Image.vue +7 -0
- package/src/components/Icons/Link.vue +21 -0
- package/src/components/Icons/Table.vue +21 -0
- package/src/components/OrganizationCard.vue +68 -0
- package/src/components/OrganizationNameWithCertificate.vue +45 -0
- package/src/components/OwnerType.vue +43 -0
- package/src/components/OwnerTypeIcon.vue +18 -0
- package/src/components/Pagination.vue +205 -0
- package/src/components/Placeholder.vue +29 -0
- package/src/components/ReadMore.vue +107 -0
- package/src/components/ResourceAccordion/DataStructure.vue +87 -0
- package/src/components/ResourceAccordion/EditButton.vue +34 -0
- package/src/components/ResourceAccordion/Metadata.vue +171 -0
- package/src/components/ResourceAccordion/Preview.vue +229 -0
- package/src/components/ResourceAccordion/PreviewLoader.vue +148 -0
- package/src/components/ResourceAccordion/ResourceAccordion.vue +484 -0
- package/src/components/ResourceAccordion/ResourceIcon.vue +16 -0
- package/src/components/ResourceAccordion/SchemaBadge.vue +148 -0
- package/src/components/ResourceAccordion/SchemaLoader.vue +30 -0
- package/src/components/ResourceAccordion/Swagger.vue +46 -0
- package/src/components/ResourceAccordion/france.svg +1 -0
- package/src/components/ReuseCard.vue +106 -0
- package/src/components/ReuseDetails.vue +45 -0
- package/src/components/SimpleBanner.vue +24 -0
- package/src/components/SmallChart.vue +149 -0
- package/src/components/StatBox.vue +100 -0
- package/src/components/Tabs/Tab.vue +62 -0
- package/src/components/Tabs/TabGroup.vue +20 -0
- package/src/components/Tabs/TabList.vue +15 -0
- package/src/components/Tabs/TabPanel.vue +7 -0
- package/src/components/Tabs/TabPanels.vue +7 -0
- package/src/components/Toggletip.vue +62 -0
- package/src/components/ToggletipButton.vue +14 -0
- package/src/composables/useActiveDescendant.ts +103 -0
- package/src/composables/useReuseType.ts +14 -0
- package/src/config.ts +33 -0
- package/src/functions/api.ts +96 -0
- package/src/functions/api.types.ts +41 -0
- package/src/functions/config.ts +12 -0
- package/src/functions/datasets.ts +24 -0
- package/src/functions/dates.ts +85 -0
- package/src/functions/helpers.ts +38 -0
- package/src/functions/markdown.ts +47 -0
- package/src/functions/matomo.ts +3 -0
- package/src/functions/organizations.ts +85 -0
- package/src/functions/owned.ts +11 -0
- package/src/functions/resources.ts +99 -0
- package/src/functions/reuses.ts +28 -0
- package/src/functions/schemas.ts +96 -0
- package/src/functions/tabularApi.ts +27 -0
- package/src/functions/users.ts +7 -0
- package/src/locales/de.json +154 -0
- package/src/locales/en.json +154 -0
- package/src/locales/es.json +154 -0
- package/src/locales/fr.json +154 -0
- package/src/locales/it.json +154 -0
- package/src/locales/pt.json +154 -0
- package/src/locales/sr.json +154 -0
- package/src/main.ts +147 -0
- package/src/types/badges.ts +5 -0
- package/src/types/contact_point.ts +7 -0
- package/src/types/dataservices.ts +68 -0
- package/src/types/datasets.ts +80 -0
- package/src/types/frequency.ts +6 -0
- package/src/types/granularity.ts +6 -0
- package/src/types/harvest.ts +3 -0
- package/src/types/keyboard.ts +1 -0
- package/src/types/licenses.ts +9 -0
- package/src/types/organizations.ts +41 -0
- package/src/types/owned.ts +9 -0
- package/src/types/resources.ts +37 -0
- package/src/types/reuses.ts +49 -0
- package/src/types/site.ts +23 -0
- package/src/types/topics.ts +20 -0
- package/src/types/ui.ts +3 -0
- package/src/types/users.ts +10 -0
package/README.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# @datagouv/components
|
|
2
|
+
|
|
3
|
+
In this document, "the user" is the application using `@datagouv/components` (for example: `cdata` or `udata-front-kit`).
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
### Config
|
|
8
|
+
|
|
9
|
+
`@datagouv/components` provides a Vue plugin to load the configuration.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { datagouv } from '@datagouv/components-next'
|
|
13
|
+
|
|
14
|
+
app.use(datagouv, {
|
|
15
|
+
name: 'data.gouv.fr', // Name of the site in some texts
|
|
16
|
+
baseUrl: 'https://www.data.gouv.fr', // Used for redirects
|
|
17
|
+
apiBase: 'https://www.data.gouv.fr', // Used for API calls (could default to `baseUrl`?)
|
|
18
|
+
staticUrl: 'https://static.data.gouv.fr', // Used for static files
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Special functions and components (only for Nuxt)
|
|
23
|
+
|
|
24
|
+
Nuxt is a special environnement (both server and browser) and require some special functions and components to work.
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { NuxtLinkLocale, TextClamp } from '#components'
|
|
28
|
+
import { datagouv, type UseFetchFunction } from '@datagouv/components-next'
|
|
29
|
+
|
|
30
|
+
const runtimeConfig = useRuntimeConfig()
|
|
31
|
+
|
|
32
|
+
app.vueApp.use(datagouv, {
|
|
33
|
+
// These are the same as above…
|
|
34
|
+
name: runtimeConfig.public.title,
|
|
35
|
+
baseUrl: runtimeConfig.public.i18n.baseUrl,
|
|
36
|
+
apiBase: runtimeConfig.public.apiBase,
|
|
37
|
+
devApiKey: runtimeConfig.public.devApiKey,
|
|
38
|
+
staticUrl: runtimeConfig.public.staticUrl,
|
|
39
|
+
|
|
40
|
+
// ----------------------------------------
|
|
41
|
+
// --- Special functions and components ---
|
|
42
|
+
|
|
43
|
+
// Tell `@datagouv/components` to use `useFetch` from Nuxt instead of custom built-in.
|
|
44
|
+
customUseFetch: useFetch as UseFetchFunction,
|
|
45
|
+
|
|
46
|
+
// Nuxt doesn't like `TextClamp` in the server, provides the client only `TextClamp`
|
|
47
|
+
textClamp: TextClamp,
|
|
48
|
+
|
|
49
|
+
// Provide the component to create links inside the application
|
|
50
|
+
// This component will receive the raw link (without i18n prefix)
|
|
51
|
+
// and needs to add it.
|
|
52
|
+
appLink: NuxtLinkLocale,
|
|
53
|
+
})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### CSS
|
|
57
|
+
|
|
58
|
+
`@datagouv/components` is using TailwindCSS and some DSFR right now. The user needs to provide the correct version of the DSFR. Concerning TailwindCSS, there is two modes:
|
|
59
|
+
|
|
60
|
+
1. If the user is using TailwindCSS, it can import a full TailwindCSS config with `@import "@datagouv/components-next/assets/main.css";`, then build the CSS via TailwindCSS CLI or Vite plugin.
|
|
61
|
+
2. If the user is not using TailwindCSS, it can import an already built CSS file with `@import '@datagouv/components-next/dist/components.css';`. Note @dev, this file should be built before publishing the package to NPM with `npm run css`.
|
|
62
|
+
|
|
63
|
+
### I18n
|
|
64
|
+
|
|
65
|
+
`@datagouv/components` is using `vue-i18n` to provide internationalisation. As always, there is two modes:
|
|
66
|
+
|
|
67
|
+
1. If the user is using Nuxt, it can simply add the locales files in the `nuxt.config.ts`
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
{
|
|
71
|
+
code: 'fr',
|
|
72
|
+
language: 'fr',
|
|
73
|
+
files: ['fr-FR.json', '../../node_modules/@datagouv/components-next/src/locales/fr.json'],
|
|
74
|
+
},
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Nuxt is responsible for building the JSON file to the correct `vue-i18n` JS format.
|
|
78
|
+
|
|
79
|
+
2. If the user is not using Nuxt, it should provide the i18n object to the `datagouv` Vue plugin. The plugin will then merge the already built messages's files. Note @dev, the messages's files should be built with `npm run i18n` before publishing the package to NPM.
|
|
80
|
+
|
|
81
|
+
### `Supense`
|
|
82
|
+
|
|
83
|
+
To work with Nuxt, some components are doing HTTP requests during the `setup` function (Nuxt can then do SSR for these requests: doing these requests server-side). These components need to be wrapped in a [`<Suspense>`](https://vuejs.org/guide/built-ins/suspense) wrapper (you can even provide a `#fallback`). You can either wrap individual components inside `<Suspense>` or wrap you're entire application/layout in `<Suspense>`
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<Suspense>
|
|
87
|
+
<DatasetInformationPanel v-if="dataset" :dataset="dataset" />
|
|
88
|
+
</Suspense>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Development
|
|
92
|
+
|
|
93
|
+
### Config
|
|
94
|
+
|
|
95
|
+
You can use the config with the composable `useComponentsConfig()`.
|
|
96
|
+
|
|
97
|
+
```ts
|
|
98
|
+
import { useComponentsConfig } from '../main'
|
|
99
|
+
|
|
100
|
+
const config = useComponentsConfig()
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Special functions and components (only for Nuxt)
|
|
104
|
+
|
|
105
|
+
> [!WARNING]
|
|
106
|
+
> In `@datagouv/components` there is a few functions and components we cannot use directly:
|
|
107
|
+
> - `TextClamp` component
|
|
108
|
+
> - `useFetch` Nuxt function
|
|
109
|
+
|
|
110
|
+
To use these, you need to get them from the config or via special wrappers.
|
|
111
|
+
|
|
112
|
+
#### `useFetch`
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
import { useFetch } from '../functions/api'
|
|
116
|
+
|
|
117
|
+
const { data: allLicenses } = await useFetch<Array<License>>('/api/1/datasets/licenses/')
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This wrapper will use the provided `useFetch` function from Nuxt or a custom built-in replacement (should work in most of the case but is a really simplify version of the Nuxt one).
|
|
121
|
+
|
|
122
|
+
#### `TextClamp`
|
|
123
|
+
|
|
124
|
+
Use the component from the config (could add a wrapper in the future to simplify this).
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
import { useComponentsConfig } from '../main'
|
|
128
|
+
|
|
129
|
+
const config = useComponentsConfig()
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```html
|
|
133
|
+
<component
|
|
134
|
+
:is="config.textClamp"
|
|
135
|
+
v-if="config && config.textClamp"
|
|
136
|
+
class="fr-mx-1v"
|
|
137
|
+
:auto-resize="true"
|
|
138
|
+
:text="organization.name"
|
|
139
|
+
:max-lines="1"
|
|
140
|
+
/>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
> [!NOTE]
|
|
144
|
+
> Nuxt doesn't even allow to load the `vue3-text-clamp` library in the server so we need to use dynamic import in the plugin config to be sure it's only loaded on non-Nuxt environment.
|
|
145
|
+
|
|
146
|
+
#### Links
|
|
147
|
+
|
|
148
|
+
To do links in the application you can use the `<AppLink>` component. No sure why it's required. Maybe we could always use a `<RouterLink>` from `vue-router` since every users is using `vue-router`? I think it's useful to add lang prefix to links but it's not done yet? Need testing.
|
|
149
|
+
|
|
150
|
+
Maybe this component shouldn't be exposed too, because I don't know why a user should use this instead of his own component (`<RouterLink>` or `NuxtLinkLocale`…)
|
package/assets/main.css
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
@import 'tailwindcss' important;
|
|
2
|
+
@plugin "@tailwindcss/typography";
|
|
3
|
+
|
|
4
|
+
@config './tailwind.config.js';
|
|
5
|
+
|
|
6
|
+
@theme {
|
|
7
|
+
--breakpoint-sm: 576px;
|
|
8
|
+
--breakpoint-md: 768px;
|
|
9
|
+
--breakpoint-lg: 992px;
|
|
10
|
+
--breakpoint-xl: 1248px;
|
|
11
|
+
--breakpoint-2xl: initial;
|
|
12
|
+
|
|
13
|
+
--font-mono:
|
|
14
|
+
'Noto Sans Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
|
|
15
|
+
'Courier New', monospace;
|
|
16
|
+
--font-spectral: 'Spectral';
|
|
17
|
+
--font-gothic: 'URW Gothic';
|
|
18
|
+
|
|
19
|
+
--text-4\.5xl: 2.75rem;
|
|
20
|
+
|
|
21
|
+
--color-primary: #3558a2;
|
|
22
|
+
--color-mention-grey: #666; /* Copy from --text-mention-grey */
|
|
23
|
+
--color-gray-title: #161616;
|
|
24
|
+
--color-gray-medium: #666666;
|
|
25
|
+
--color-gray-low: #929292;
|
|
26
|
+
--color-gray-lower-hover: #d2d2d2;
|
|
27
|
+
--color-gray-lower-active: #c1c1c1;
|
|
28
|
+
--color-gray-lower: #eeeeee;
|
|
29
|
+
--color-gray-lowest: #e8eaed;
|
|
30
|
+
--color-gray-default: #e5e5e5;
|
|
31
|
+
--color-gray-plain: #3a3a3a;
|
|
32
|
+
--color-gray-some: #f6f6f6;
|
|
33
|
+
--color-gray-logo: #373c42;
|
|
34
|
+
--color-default-warning: #b32000;
|
|
35
|
+
--color-blue-action-low: #dae6fd;
|
|
36
|
+
--color-blue-action-low-hover: #a9c8fb;
|
|
37
|
+
--color-blue-action-low-active: #a9c8fb;
|
|
38
|
+
--color-blue-light: #e3e3fd;
|
|
39
|
+
--color-blue-lighter: #eef4f8;
|
|
40
|
+
--color-blue-lightest: #f3f6fe;
|
|
41
|
+
--color-blue-tint: #c1c1fd;
|
|
42
|
+
--color-blue-outline: #0a76f6;
|
|
43
|
+
--color-secondary-lightest: #eeeeee;
|
|
44
|
+
--color-secondary-dark: #66666;
|
|
45
|
+
--color-datagouv-lightest: #e6eefe;
|
|
46
|
+
--color-datagouv-lighter: #e3e3fd;
|
|
47
|
+
--color-datagouv-light: #c1c1fd;
|
|
48
|
+
--color-datagouv-hover: #5982e0;
|
|
49
|
+
--color-datagouv-defaultLight: #46699d;
|
|
50
|
+
--color-datagouv: #465f9d;
|
|
51
|
+
--color-datagouv-dark: #3558a2;
|
|
52
|
+
--color-danger-lightest: #ffe9e9;
|
|
53
|
+
--color-danger-dark: #ce0500;
|
|
54
|
+
--color-warning-lightest: #ffe9e6;
|
|
55
|
+
--color-warning-dark: #b34000;
|
|
56
|
+
--color-warning2-lightest: #feecc2;
|
|
57
|
+
--color-warning3-lightest: #fee9e5;
|
|
58
|
+
--color-warning2-dark: #716043;
|
|
59
|
+
--color-warning3-dark: #755348;
|
|
60
|
+
--color-success-lightest: #ecf7f0;
|
|
61
|
+
--color-success-lighter: #c3fad5;
|
|
62
|
+
--color-success-dark: #27a658;
|
|
63
|
+
--color-success-darker: #1f8d49; /* from DSFR to avoid contrast issue */
|
|
64
|
+
--color-success-darkest: #18753c; /* from DSFR to avoid contrast issue */
|
|
65
|
+
|
|
66
|
+
--shadow-input-blue: inset 0 -2px 0 0 #3558a2;
|
|
67
|
+
--shadow-input: inset 0 -2px 0 0 var(--blue-cumulus-sun-368-moon-732);
|
|
68
|
+
|
|
69
|
+
/* This animation are copy/paste from the `pulse` animation of TailwindCSS because the `pulse` animation inherit of a blue background from somewhere (DSFR? Wrong component not-scoped style?) */
|
|
70
|
+
--animate-pulse-placeholder: pulse-placeholder 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
71
|
+
@keyframes pulse-placeholder {
|
|
72
|
+
0%,
|
|
73
|
+
100% {
|
|
74
|
+
opacity: 1;
|
|
75
|
+
}
|
|
76
|
+
50% {
|
|
77
|
+
opacity: 0.5;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@custom-variant aria-current-page (&[aria-current="page"]);
|
|
83
|
+
|
|
84
|
+
@utility container {
|
|
85
|
+
margin-inline: auto;
|
|
86
|
+
padding-inline: 1rem;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
The default border color has changed to `currentColor` in Tailwind CSS v4,
|
|
91
|
+
so we've added these compatibility styles to make sure everything still
|
|
92
|
+
looks the same as it did with Tailwind CSS v3.
|
|
93
|
+
|
|
94
|
+
If we ever want to remove these styles, we need to add an explicit border
|
|
95
|
+
color utility to any element that depends on these defaults.
|
|
96
|
+
*/
|
|
97
|
+
@layer base {
|
|
98
|
+
*,
|
|
99
|
+
::after,
|
|
100
|
+
::before,
|
|
101
|
+
::backdrop,
|
|
102
|
+
::file-selector-button {
|
|
103
|
+
border-color: var(--color-gray-200, currentColor);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@layer components {
|
|
108
|
+
meter.quality-score {
|
|
109
|
+
background: none;
|
|
110
|
+
border: 1px solid var(--color-gray-default);
|
|
111
|
+
border-radius: 8px;
|
|
112
|
+
height: 10px;
|
|
113
|
+
vertical-align: baseline;
|
|
114
|
+
}
|
|
115
|
+
meter.quality-score::-webkit-meter-bar {
|
|
116
|
+
height: 10px;
|
|
117
|
+
background: whiteSmoke;
|
|
118
|
+
border-radius: 8px;
|
|
119
|
+
}
|
|
120
|
+
meter.quality-score::-moz-meter-bar {
|
|
121
|
+
background: whiteSmoke;
|
|
122
|
+
border-radius: 8px;
|
|
123
|
+
}
|
|
124
|
+
meter.quality-score::-webkit-meter-suboptimum-value {
|
|
125
|
+
background-color: var(--color-gray-low);
|
|
126
|
+
}
|
|
127
|
+
meter.quality-score:-moz-meter-sub-optimum::-moz-meter-bar {
|
|
128
|
+
background-color: var(--color-gray-low);
|
|
129
|
+
}
|
|
130
|
+
meter.quality-score::-webkit-meter-optimum-value {
|
|
131
|
+
background-color: #27A658;
|
|
132
|
+
}
|
|
133
|
+
meter.quality-score:-moz-meter-optimum::-moz-meter-bar {
|
|
134
|
+
background-color: #27A658;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** @type {import('tailwindcss').Config} */
|
|
2
|
+
export default {
|
|
3
|
+
content: [
|
|
4
|
+
'./components/**/*.{html,js,vue,ts}',
|
|
5
|
+
'./composables/**/*.{html,js,vue,ts}',
|
|
6
|
+
'./content/**/*.{html,js,vue,ts}',
|
|
7
|
+
'./assets/**/*.{html,js,vue,ts}',
|
|
8
|
+
'./pages/**/*.{html,js,vue,ts}',
|
|
9
|
+
'./plugins/**/*.{html,js,vue,ts}',
|
|
10
|
+
'./utils/**/*.{html,js,vue,ts}',
|
|
11
|
+
'./datagouv-components/src/**/*.{html,js,vue,ts}',
|
|
12
|
+
],
|
|
13
|
+
theme: {
|
|
14
|
+
extend: {
|
|
15
|
+
typography: (theme) => ({
|
|
16
|
+
neutral: {
|
|
17
|
+
css: {
|
|
18
|
+
'--tw-prose-bullets': theme('colors.neutral[800]'),
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:"Noto Sans Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-blue-100:oklch(.932 .032 255.585);--color-gray-200:oklch(.928 .006 264.531);--color-gray-500:oklch(.551 .027 264.364);--color-gray-800:oklch(.278 .033 256.848);--color-gray-900:oklch(.21 .034 264.665);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--radius-sm:.25rem;--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings);--color-mention-grey:#666;--color-gray-title:#161616;--color-gray-medium:#666;--color-gray-low:#929292;--color-gray-lower:#eee;--color-gray-default:#e5e5e5;--color-gray-plain:#3a3a3a;--color-gray-some:#f6f6f6;--color-default-warning:#b32000;--color-blue-lighter:#eef4f8;--color-datagouv-lightest:#e6eefe;--color-datagouv-hover:#5982e0;--color-datagouv:#465f9d;--color-datagouv-dark:#3558a2;--color-danger-lightest:#ffe9e9;--color-danger-dark:#ce0500;--color-warning-lightest:#ffe9e6;--color-warning-dark:#b34000;--color-warning3-lightest:#fee9e5;--color-warning3-dark:#755348}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentColor)}::file-selector-button{border-color:var(--color-gray-200,currentColor)}}@layer components{meter.quality-score{border:1px solid var(--color-gray-default);vertical-align:baseline;background:0 0;border-radius:8px;height:10px}meter.quality-score::-webkit-meter-bar{background:#f5f5f5;border-radius:8px;height:10px}meter.quality-score::-moz-meter-bar{background:#f5f5f5;border-radius:8px}meter.quality-score::-webkit-meter-suboptimum-value{background-color:var(--color-gray-low)}meter.quality-score:-moz-meter-sub-optimum::-moz-meter-bar{background-color:var(--color-gray-low)}meter.quality-score::-webkit-meter-optimum-value{background-color:#27a658}meter.quality-score:-moz-meter-optimum::-moz-meter-bar{background-color:#27a658}}@layer utilities{.\@container{container-type:inline-size!important}.sr-only{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.absolute{position:absolute!important}.relative{position:relative!important}.static{position:static!important}.inset-0{inset:calc(var(--spacing)*0)!important}.top-0{top:calc(var(--spacing)*0)!important}.top-4{top:calc(var(--spacing)*4)!important}.top-24{top:calc(var(--spacing)*24)!important}.bottom-0{bottom:calc(var(--spacing)*0)!important}.left-0{left:calc(var(--spacing)*0)!important}.left-4{left:calc(var(--spacing)*4)!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}.z-10{z-index:10!important}.z-\[2\]{z-index:2!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.-m-1{margin:calc(var(--spacing)*-1)!important}.m-0{margin:calc(var(--spacing)*0)!important}.m-1{margin:calc(var(--spacing)*1)!important}.-mx-2{margin-inline:calc(var(--spacing)*-2)!important}.-mx-2\.5{margin-inline:calc(var(--spacing)*-2.5)!important}.-mx-3{margin-inline:calc(var(--spacing)*-3)!important}.-mx-4{margin-inline:calc(var(--spacing)*-4)!important}.-mx-6{margin-inline:calc(var(--spacing)*-6)!important}.-mx-8{margin-inline:calc(var(--spacing)*-8)!important}.mx-0{margin-inline:calc(var(--spacing)*0)!important}.mx-8{margin-inline:calc(var(--spacing)*8)!important}.my-0{margin-block:calc(var(--spacing)*0)!important}.my-4{margin-block:calc(var(--spacing)*4)!important}.-mt-1{margin-top:calc(var(--spacing)*-1)!important}.mt-0{margin-top:calc(var(--spacing)*0)!important}.mt-1{margin-top:calc(var(--spacing)*1)!important}.mt-2{margin-top:calc(var(--spacing)*2)!important}.mt-4{margin-top:calc(var(--spacing)*4)!important}.mt-6{margin-top:calc(var(--spacing)*6)!important}.mt-8{margin-top:calc(var(--spacing)*8)!important}.-mr-0\.5{margin-right:calc(var(--spacing)*-.5)!important}.mr-0\.5{margin-right:calc(var(--spacing)*.5)!important}.mr-1{margin-right:calc(var(--spacing)*1)!important}.mr-2{margin-right:calc(var(--spacing)*2)!important}.-mb-1{margin-bottom:calc(var(--spacing)*-1)!important}.-mb-2{margin-bottom:calc(var(--spacing)*-2)!important}.mb-0{margin-bottom:calc(var(--spacing)*0)!important}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)!important}.mb-2{margin-bottom:calc(var(--spacing)*2)!important}.mb-3{margin-bottom:calc(var(--spacing)*3)!important}.mb-4{margin-bottom:calc(var(--spacing)*4)!important}.mb-6{margin-bottom:calc(var(--spacing)*6)!important}.-ml-2\.5{margin-left:calc(var(--spacing)*-2.5)!important}.ml-0{margin-left:calc(var(--spacing)*0)!important}.ml-1{margin-left:calc(var(--spacing)*1)!important}.ml-2{margin-left:calc(var(--spacing)*2)!important}.ml-6{margin-left:calc(var(--spacing)*6)!important}.block{display:block!important}.flex{display:flex!important}.grid{display:grid!important}.hidden{display:none!important}.inline{display:inline!important}.inline-flex{display:inline-flex!important}.table{display:table!important}.aspect-\[1\.4\]{aspect-ratio:1.4!important}.size-3{width:calc(var(--spacing)*3)!important;height:calc(var(--spacing)*3)!important}.size-3\.5{width:calc(var(--spacing)*3.5)!important;height:calc(var(--spacing)*3.5)!important}.size-4{width:calc(var(--spacing)*4)!important;height:calc(var(--spacing)*4)!important}.size-5{width:calc(var(--spacing)*5)!important;height:calc(var(--spacing)*5)!important}.size-6{width:calc(var(--spacing)*6)!important;height:calc(var(--spacing)*6)!important}.size-8{width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.h-8{height:calc(var(--spacing)*8)!important}.h-\[4\.5rem\]{height:4.5rem!important}.h-auto{height:auto!important}.h-full{height:100%!important}.w-100{width:calc(var(--spacing)*100)!important}.w-full{width:100%!important}.flex-1{flex:1!important}.flex-auto{flex:auto!important}.flex-initial{flex:0 auto!important}.flex-none{flex:none!important}.flex-shrink{flex-shrink:1!important}.shrink-0{flex-shrink:0!important}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)!important}.cursor-pointer{cursor:pointer!important}.list-none{list-style-type:none!important}.flex-col{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-wrap{flex-wrap:wrap!important}.items-baseline{align-items:baseline!important}.items-center{align-items:center!important}.items-start{align-items:flex-start!important}.justify-between{justify-content:space-between!important}.justify-center{justify-content:center!important}.gap-0\.5{gap:calc(var(--spacing)*.5)!important}.gap-1{gap:calc(var(--spacing)*1)!important}.gap-4{gap:calc(var(--spacing)*4)!important}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse))!important;margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))!important}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse))!important;margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))!important}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}.truncate{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.overflow-hidden{overflow:hidden!important}.rounded{border-radius:.25rem!important}.rounded-full{border-radius:3.40282e38px!important}.rounded-sm{border-radius:var(--radius-sm)!important}.border{border-style:var(--tw-border-style)!important;border-width:1px!important}.\!border-none{--tw-border-style:none;border-style:none!important}.\!border-danger-dark{border-color:var(--color-danger-dark)!important}.\!border-datagouv{border-color:var(--color-datagouv)!important}.\!border-datagouv-dark{border-color:var(--color-datagouv-dark)!important}.\!border-gray-plain{border-color:var(--color-gray-plain)!important}.\!border-transparent{border-color:#0000!important}.\!border-warning-dark{border-color:var(--color-warning-dark)!important}.border-gray-default{border-color:var(--color-gray-default)!important}.border-gray-lower{border-color:var(--color-gray-lower)!important}.bg-\[\#fff\]{background-color:#fff!important}.bg-blue-100{background-color:var(--color-blue-100)!important}.bg-blue-lighter{background-color:var(--color-blue-lighter)!important}.bg-danger-lightest{background-color:var(--color-danger-lightest)!important}.bg-datagouv-dark{background-color:var(--color-datagouv-dark)!important}.bg-datagouv-lightest{background-color:var(--color-datagouv-lightest)!important}.bg-gray-some{background-color:var(--color-gray-some)!important}.bg-transparent{background-color:#0000!important}.bg-warning-lightest{background-color:var(--color-warning-lightest)!important}.bg-warning3-lightest{background-color:var(--color-warning3-lightest)!important}.bg-white{background-color:var(--color-white)!important}.bg-linear-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))!important}.\!bg-none,.bg-none{background-image:none!important}.from-white\/0{--tw-gradient-from:color-mix(in oklab,var(--color-white)0%,transparent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-white\/100{--tw-gradient-via:color-mix(in oklab,var(--color-white)100%,transparent);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-70\%{--tw-gradient-via-position:70%}.to-white\/100{--tw-gradient-to:color-mix(in oklab,var(--color-white)100%,transparent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.fill-gray-medium{fill:var(--color-gray-medium)!important}.object-cover{object-fit:cover!important}.object-center{object-position:center!important}.p-0{padding:calc(var(--spacing)*0)!important}.p-1{padding:calc(var(--spacing)*1)!important}.p-1\.5{padding:calc(var(--spacing)*1.5)!important}.p-2{padding:calc(var(--spacing)*2)!important}.p-2\.5{padding:calc(var(--spacing)*2.5)!important}.p-3{padding:calc(var(--spacing)*3)!important}.p-4{padding:calc(var(--spacing)*4)!important}.px-1{padding-inline:calc(var(--spacing)*1)!important}.px-4{padding-inline:calc(var(--spacing)*4)!important}.px-8{padding-inline:calc(var(--spacing)*8)!important}.py-1{padding-block:calc(var(--spacing)*1)!important}.py-2{padding-block:calc(var(--spacing)*2)!important}.py-3{padding-block:calc(var(--spacing)*3)!important}.py-6{padding-block:calc(var(--spacing)*6)!important}.pt-2\.5{padding-top:calc(var(--spacing)*2.5)!important}.pt-4{padding-top:calc(var(--spacing)*4)!important}.pt-5{padding-top:calc(var(--spacing)*5)!important}.pt-6{padding-top:calc(var(--spacing)*6)!important}.pt-20{padding-top:calc(var(--spacing)*20)!important}.pb-4{padding-bottom:calc(var(--spacing)*4)!important}.pb-6{padding-bottom:calc(var(--spacing)*6)!important}.pl-0{padding-left:calc(var(--spacing)*0)!important}.text-center{text-align:center!important}.text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.text-lg{font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important}.text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.text-xs{font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important}.leading-\[0\.875rem\]{--tw-leading:.875rem;line-height:.875rem!important}.leading-none{--tw-leading:1;line-height:1!important}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)!important}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)!important}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)!important}.break-all{word-break:break-all!important}.whitespace-nowrap{white-space:nowrap!important}.\!text-danger-dark,.text-danger-dark{color:var(--color-danger-dark)!important}.text-datagouv{color:var(--color-datagouv)!important}.text-datagouv-dark{color:var(--color-datagouv-dark)!important}.text-default-warning{color:var(--color-default-warning)!important}.text-gray-500{color:var(--color-gray-500)!important}.text-gray-800{color:var(--color-gray-800)!important}.text-gray-900{color:var(--color-gray-900)!important}.text-gray-medium{color:var(--color-gray-medium)!important}.text-gray-plain{color:var(--color-gray-plain)!important}.text-gray-title{color:var(--color-gray-title)!important}.text-mention-grey{color:var(--color-mention-grey)!important}.text-warning-dark{color:var(--color-warning-dark)!important}.text-warning3-dark{color:var(--color-warning3-dark)!important}.text-white{color:var(--color-white)!important}.\!no-underline{text-decoration-line:none!important}.\!opacity-50{opacity:.5!important}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}@media (hover:hover){.group-hover\/reuse-card\:brightness-90:is(:where(.group\/reuse-card):hover *){--tw-brightness:brightness(90%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}}.after\:ml-1:after{content:var(--tw-content);margin-left:calc(var(--spacing)*1)!important}.after\:content-\[\'—\'\]:after{content:var(--tw-content);--tw-content:"—";content:var(--tw-content)!important}.after\:content-none:after{content:var(--tw-content);--tw-content:none;content:none!important}@media (hover:hover){.hover\:\!border-datagouv-hover:hover{border-color:var(--color-datagouv-hover)!important}.hover\:\!bg-datagouv-hover:hover{background-color:var(--color-datagouv-hover)!important}.hover\:bg-gray-some:hover{background-color:var(--color-gray-some)!important}}@media (width>=768px){.md\:flex-nowrap{flex-wrap:nowrap!important}}@media (hover:hover){.\[\&\&\]\:hover\:\!bg-gray-some.\[\&\&\]\:hover\:\!bg-gray-some:hover{background-color:var(--color-gray-some)!important}}}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
const resource = {
|
|
2
|
+
"Copy": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy"])},
|
|
3
|
+
"The identity of this public service is certified by {certifier}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["The identity of this public service is certified by ", _interpolate(_named("certifier"))])},
|
|
4
|
+
"Edit file": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Edit file"])},
|
|
5
|
+
"Nameless file": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Nameless file"])},
|
|
6
|
+
"schema:": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["schema:"])},
|
|
7
|
+
"Invalid": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Invalid"])},
|
|
8
|
+
"Updated {date}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["Updated ", _interpolate(_named("date"))])},
|
|
9
|
+
"{n} downloads": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("n")), " downloads"])},
|
|
10
|
+
"From": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["From"])},
|
|
11
|
+
"Unavailable": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Unavailable"])},
|
|
12
|
+
"Close details": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Close details"])},
|
|
13
|
+
"See data": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["See data"])},
|
|
14
|
+
"See metadata": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["See metadata"])},
|
|
15
|
+
"File link - opens a new window": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["File link - opens a new window"])},
|
|
16
|
+
"Download file": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Download file"])},
|
|
17
|
+
"File menu": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["File menu"])},
|
|
18
|
+
"Preview": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Preview"])},
|
|
19
|
+
"Data structure": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Data structure"])},
|
|
20
|
+
"Metadata": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Metadata"])},
|
|
21
|
+
"Data schema": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Data schema"])},
|
|
22
|
+
"This file is following a schema: ": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["This file is following a schema: "])},
|
|
23
|
+
"See validation report": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["See validation report"])},
|
|
24
|
+
"URL": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["URL"])},
|
|
25
|
+
"MIME Type": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["MIME Type"])},
|
|
26
|
+
"Created on": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Created on"])},
|
|
27
|
+
"Modified on": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Modified on"])},
|
|
28
|
+
"Size": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Size"])},
|
|
29
|
+
"Explore data": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Explore data"])},
|
|
30
|
+
"B": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["B"])},
|
|
31
|
+
"today": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["today"])},
|
|
32
|
+
"on {date}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["on ", _interpolate(_named("date"))])},
|
|
33
|
+
"Informations": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Informations"])},
|
|
34
|
+
"License": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["License"])},
|
|
35
|
+
"Temporality": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Temporality"])},
|
|
36
|
+
"Creation": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Creation"])},
|
|
37
|
+
"Frequency": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Frequency"])},
|
|
38
|
+
"Last update": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Last update"])},
|
|
39
|
+
"Spatial coverage": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Spatial coverage"])},
|
|
40
|
+
"Territorial coverage": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Territorial coverage"])},
|
|
41
|
+
"Granularity of territorial coverage": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Granularity of territorial coverage"])},
|
|
42
|
+
"Integrate on your website": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Integrate on your website"])},
|
|
43
|
+
"Extras": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Extras"])},
|
|
44
|
+
"See extras": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["See extras"])},
|
|
45
|
+
"Harvest": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Harvest"])},
|
|
46
|
+
"See harvest": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["See harvest"])},
|
|
47
|
+
"Pagination": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Pagination"])},
|
|
48
|
+
"First page": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["First page"])},
|
|
49
|
+
"Previous page": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Previous page"])},
|
|
50
|
+
"Page {nb}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["Page ", _interpolate(_named("nb"))])},
|
|
51
|
+
"Next page": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Next page"])},
|
|
52
|
+
"Last page": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Last page"])},
|
|
53
|
+
"Metadata quality:": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Metadata quality:"])},
|
|
54
|
+
"Data description filled": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Data description filled"])},
|
|
55
|
+
"Data description empty": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Data description empty"])},
|
|
56
|
+
"Files documented": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Files documented"])},
|
|
57
|
+
"Files documentation missing": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Files documentation missing"])},
|
|
58
|
+
"License filled": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["License filled"])},
|
|
59
|
+
"No license set": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["No license set"])},
|
|
60
|
+
"Update frequency followed": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Update frequency followed"])},
|
|
61
|
+
"Update frequency not followed": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Update frequency not followed"])},
|
|
62
|
+
"Update frequency not set": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Update frequency not set"])},
|
|
63
|
+
"File formats are open": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["File formats are open"])},
|
|
64
|
+
"File formats are closed": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["File formats are closed"])},
|
|
65
|
+
"Temporal coverage filled": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Temporal coverage filled"])},
|
|
66
|
+
"Temporal coverage not set": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Temporal coverage not set"])},
|
|
67
|
+
"Spatial coverage filled": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Spatial coverage filled"])},
|
|
68
|
+
"Spatial coverage not set": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Spatial coverage not set"])},
|
|
69
|
+
"All files are available": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["All files are available"])},
|
|
70
|
+
"Some files are unavailable": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Some files are unavailable"])},
|
|
71
|
+
"Learn more about this indicator - opens a new window": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Learn more about this indicator - opens a new window"])},
|
|
72
|
+
"Learn more about this indicator": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Learn more about this indicator"])},
|
|
73
|
+
"Read less": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Read less"])},
|
|
74
|
+
"Read more": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Read more"])},
|
|
75
|
+
"Archived": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Archived"])},
|
|
76
|
+
"Metadata :": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Metadata :"])},
|
|
77
|
+
"Availability :": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Availability :"])},
|
|
78
|
+
"Local authority": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Local authority"])},
|
|
79
|
+
"Association": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Association"])},
|
|
80
|
+
"Company": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Company"])},
|
|
81
|
+
"User": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["User"])},
|
|
82
|
+
"The data structure of this file failed to load.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["The data structure of this file failed to load."])},
|
|
83
|
+
"No data structure found for this file.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["No data structure found for this file."])},
|
|
84
|
+
"The preview of this file failed to load.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["The preview of this file failed to load."])},
|
|
85
|
+
"Explore data in detail": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Explore data in detail"])},
|
|
86
|
+
"Use our tool to get an overview of data, learn about different columns or perform filters and sorts.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Use our tool to get an overview of data, learn about different columns or perform filters and sorts."])},
|
|
87
|
+
"Preview updated on {date}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["Preview updated on ", _interpolate(_named("date"))])},
|
|
88
|
+
"Preview of {name}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["Preview of ", _interpolate(_named("name"))])},
|
|
89
|
+
"Sort ascending": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Sort ascending"])},
|
|
90
|
+
"Sort descending": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Sort descending"])},
|
|
91
|
+
"{count} columns": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("count")), " columns"])},
|
|
92
|
+
"{count} rows": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("count")), " rows"])},
|
|
93
|
+
"Resource Extras": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Resource Extras"])},
|
|
94
|
+
"Public service": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Public service"])},
|
|
95
|
+
"published {date}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["published ", _interpolate(_named("date"))])},
|
|
96
|
+
"{n}%": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("n")), "%"])},
|
|
97
|
+
"Restricted access": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Restricted access"])},
|
|
98
|
+
"Other": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Other"])},
|
|
99
|
+
"{n} views": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("n")), " views"])},
|
|
100
|
+
"{n} followers": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("n")), " followers"])},
|
|
101
|
+
"unknown": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["unknown"])},
|
|
102
|
+
"Link copied!": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Link copied!"])},
|
|
103
|
+
"Copy link": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy link"])},
|
|
104
|
+
"Original format": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Original format"])},
|
|
105
|
+
"Format {format}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["Format ", _interpolate(_named("format"))])},
|
|
106
|
+
"Data": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Data"])},
|
|
107
|
+
"Description": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Description"])},
|
|
108
|
+
"Downloads": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Downloads"])},
|
|
109
|
+
"Schema:": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Schema"])},
|
|
110
|
+
"Copy embed": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy embed"])},
|
|
111
|
+
"Embed copied": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Embed copied"])},
|
|
112
|
+
"Stable URL": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Stable URL"])},
|
|
113
|
+
"Identifier": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Identifier"])},
|
|
114
|
+
"Copy ID": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy ID"])},
|
|
115
|
+
"ID copied!": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["ID copied!"])},
|
|
116
|
+
"Copy checksum": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy checksum"])},
|
|
117
|
+
"Checksum copied!": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Checksum copied!"])},
|
|
118
|
+
"Type": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Type"])},
|
|
119
|
+
"Format": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Format"])},
|
|
120
|
+
"downloads": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["downloads"])},
|
|
121
|
+
"Visit": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Visit"])},
|
|
122
|
+
"Original URL": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Original URL"])},
|
|
123
|
+
"File": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["File"])},
|
|
124
|
+
"This file is valid for the shema:": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["This file is valid for the shema:"])},
|
|
125
|
+
"But its compliance could be improved.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["But its compliance could be improved."])},
|
|
126
|
+
"This file indicates to follow the schema:": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["This file indicates to follow the schema:"])},
|
|
127
|
+
"But is not compliant.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["But is not compliant."])},
|
|
128
|
+
"advices": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["advices"])},
|
|
129
|
+
"structure errors": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["structure errors"])},
|
|
130
|
+
"body errors": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["body errors"])},
|
|
131
|
+
"Main file": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Main file"])},
|
|
132
|
+
"Documentation": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Documentation"])},
|
|
133
|
+
"Update": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Update"])},
|
|
134
|
+
"API": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["API"])},
|
|
135
|
+
"Source code": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Source code"])},
|
|
136
|
+
"{n} resources downloads": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("n")), " resources downloads"])},
|
|
137
|
+
"{n} reuses": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named("n")), " reuses"])},
|
|
138
|
+
"Close": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Close"])},
|
|
139
|
+
" in ": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([" in "])},
|
|
140
|
+
"Auto-generated formats from {platform}": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize(["Auto-generated formats from ", _interpolate(_named("platform"))])},
|
|
141
|
+
"Draft": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Draft"])},
|
|
142
|
+
"API documentation": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["API documentation"])},
|
|
143
|
+
"Technical Documentation": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Technical Documentation"])},
|
|
144
|
+
"Business documentation": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Business documentation"])},
|
|
145
|
+
"Swagger": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Swagger"])},
|
|
146
|
+
"Swagger automatically generated by data.gouv.fr. This swagger allows you to query data by API by filtering it by column value.": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Swagger automatically generated by data.gouv.fr. This swagger allows you to query data by API by filtering it by column value."])},
|
|
147
|
+
"Good": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Good"])},
|
|
148
|
+
"To improve": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["To improve"])},
|
|
149
|
+
"Copy URL": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy URL"])},
|
|
150
|
+
"URL copied!": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["URL copied!"])},
|
|
151
|
+
"Copy stable URL": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Copy stable URL"])},
|
|
152
|
+
"Stable URL copied!": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Stable URL copied!"])},
|
|
153
|
+
"Download file as ": (ctx) => {const { normalize: _normalize } = ctx;return _normalize(["Download file as "])}
|
|
154
|
+
}
|
|
155
|
+
export default resource
|