arengibook 3.3.0-datepicker → 3.3.0-preprod

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 CHANGED
@@ -1,20 +1,239 @@
1
1
  # ArengiBook
2
2
 
3
- Projet React avec Storybook pour la documentation des composants UI.
3
+ Bibliothèque de composants React d'Arengi, publiée sur npm sous le nom **`arengibook`** et
4
+ consommée par les applications Arengi (aujourd'hui **arengibox**, dépôt `arengi_arengibox_sf`).
4
5
 
5
- ## 🚀 Installation
6
+ Storybook sert à la fois d'atelier de développement et de documentation vivante : chaque
7
+ composant y est présenté avec ses variantes, ses props et le snippet d'intégration Symfony
8
+ généré automatiquement.
6
9
 
7
- Clone ce dépôt :
10
+ > **Ce README est publié sur npm** (il est inclus dans le tarball du paquet) : c'est la page
11
+ > que voient les consommateurs de la bibliothèque.
8
12
 
9
- git clone https://github.com/ton-pseudo/ArengiBook.git
10
- cd ArengiBook
13
+ ---
14
+
15
+ ## Sommaire de la documentation
16
+
17
+ | Document | Pour qui | Contenu |
18
+ |---|---|---|
19
+ | [`CONTRIBUTING.md`](CONTRIBUTING.md) | devs de la bibliothèque | Boucle de dev, anatomie d'un composant, obligations (tokens/presets/stories/doc), test local sans publier |
20
+ | [`RELEASE.md`](RELEASE.md) | devs + intégrateurs | Runbook de publication npm et d'épinglage côté application. **À lire avant toute publication.** |
21
+ | [`docs/architecture.md`](docs/architecture.md) | devs de la bibliothèque | Build rollup, API publique, design tokens, cœur i18n, outillage Storybook |
22
+ | [`docs/integration-symfony.md`](docs/integration-symfony.md) | intégrateurs (arengibox) | Montage des composants depuis Twig, helpers `arengibookEnhance`/`arengibookRemount`, pièges connus |
23
+ | [`CHANGELOG.md`](CHANGELOG.md) | tous | Ce que contient chaque version publiée |
24
+ | [`TODO_DESIGN.md`](TODO_DESIGN.md) | devs de la bibliothèque | Backlog des améliorations de composants |
25
+ | `Table.symfony.mdx` (Storybook) | intégrateurs | Documentation complète du composant `Table` (le plus utilisé) |
11
26
 
12
- ## Installer les dépendances :
27
+ ---
13
28
 
29
+ ## Démarrage
30
+
31
+ Prérequis : **Node 18 ou plus récent** (validé en 18 et en 22).
32
+
33
+ ```bash
34
+ nvm use 18 # ou toute version ≥ 18
35
+ git clone git@github.com:ArengiServices/ArengiBook.git
36
+ cd ArengiBook
14
37
  npm install
38
+ npm run storybook # → http://localhost:6006
39
+ ```
40
+
41
+ > ⚠️ **Ne pas basculer le terminal de l'application consommatrice sur cette version de Node.**
42
+ > arengibox tourne en **Node 8.17 / npm 6** : y lancer un `npm install` avec un Node moderne
43
+ > réécrit le `package-lock.json` dans un format que npm 6 et le déployeur ne savent pas relire.
44
+ > La bonne pratique est d'exporter le `PATH` par commande, jamais un `nvm use` global — voir
45
+ > [`RELEASE.md`](RELEASE.md#0-cohabitation-des-versions-de-node).
46
+
47
+ | Commande | Rôle |
48
+ |---|---|
49
+ | `npm run storybook` | Atelier de dev + documentation (port 6006) |
50
+ | `npm run build` | Construit le paquet publiable (`rollup` → `dist/index.js`) |
51
+ | `npm run build-storybook` | Storybook statique (déploiement de la doc) |
52
+ | `npm run dev` | Bac à sable Vite, marginal — préférer Storybook |
53
+ | `npm run deploy:storybook` | Publie le Storybook de la branche courante sur GitHub Pages |
54
+ | `npm run deploy:storybook:list` | Liste les Storybooks actuellement publiés |
55
+ | `npm run lint` | ⚠️ **inopérant** : ESLint 9 attend un `eslint.config.js` qui n'existe pas dans le dépôt (la clé `eslintConfig` de `package.json` est à l'ancien format, ignorée). À réparer — voir `CONTRIBUTING.md`. |
56
+
57
+ ---
58
+
59
+ ## Publier le Storybook (GitHub Pages)
60
+
61
+ Chaque branche peut avoir son propre Storybook en ligne, à sa propre URL — de quoi faire relire
62
+ un composant en cours sans le merger, et sans écraser la doc de référence.
63
+
64
+ | Quoi | URL | Publication |
65
+ |---|---|---|
66
+ | `main` | https://arengiservices.github.io/ArengiBook/ | **automatique** à chaque push |
67
+ | une branche | `https://arengiservices.github.io/ArengiBook/branches/<branche>/` | **à la demande**, en local |
68
+ | index de tout ce qui est en ligne | https://arengiservices.github.io/ArengiBook/branches/ | regénéré à chaque publication |
69
+
70
+ ### Publier sa branche
71
+
72
+ ```bash
73
+ git merge origin/main # indispensable : voir « Prérequis » ci-dessous
74
+ nvm use 20 # Node >= 18
75
+ npm run deploy:storybook # publie la branche git courante
76
+ ```
77
+
78
+ Le script affiche l'URL finale en fin d'exécution. Compter deux à trois minutes (build + push +
79
+ build GitHub Pages).
80
+
81
+ | Commande | Effet |
82
+ |---|---|
83
+ | `npm run deploy:storybook` | publie la branche git courante |
84
+ | `npm run deploy:storybook -- <nom>` | publie sous un nom explicite plutôt que celui de la branche |
85
+ | `npm run deploy:storybook:list` | liste les Storybooks actuellement en ligne |
86
+ | `npm run deploy:storybook -- --delete <nom>` | dépublie une branche |
87
+
88
+ ### Prérequis : la branche doit contenir le code de `main`
89
+
90
+ Le script et la configuration Storybook qu'il utilise sont **versionnés**. Une branche créée avant
91
+ leur arrivée ne les a tout simplement pas sur le disque, et `npm run deploy:storybook` répond
92
+ « commande inconnue ». D'où le `git merge origin/main` préalable.
93
+
94
+ > ⚠️ **`git merge origin/main`, pas `git merge main`.** `main` désigne ta copie locale, qui peut
95
+ > avoir des jours de retard ; `origin/main` désigne l'état de GitHub tel que ton dernier `fetch`
96
+ > l'a vu. Fusionner un `main` périmé donne l'impression que le merge a marché alors que rien
97
+ > n'est arrivé.
98
+
99
+ ### Reconnaître le Storybook qu'on regarde
100
+
101
+ Hors `main`, le nom de la branche apparaît à trois endroits : le titre de l'onglet du navigateur,
102
+ le logo de la sidebar (`ARENGIBOOK — <branche>`) et une pastille en bas à gauche, qui renvoie à
103
+ l'index des branches. Le Storybook de `main` n'affiche rien de tout ça : pas de pastille = doc de
104
+ référence.
105
+
106
+ ### Comment ça marche
107
+
108
+ Tout est servi depuis la branche `gh-pages`, dont l'arborescence est le site lui-même :
109
+
110
+ ```
111
+ gh-pages
112
+ ├── index.html, assets/, sb-manager/… ← Storybook de main (racine)
113
+ └── branches/
114
+ ├── index.html ← l'index listant tout
115
+ ├── treeSelect/
116
+ └── component-AutoCompleteGroup/
117
+ ```
118
+
119
+ Deux producteurs écrivent dans cette branche, sans jamais se marcher dessus :
120
+
121
+ - le workflow [`storybook.yml`](.github/workflows/storybook.yml), à chaque push sur `main` :
122
+ il ne réécrit que la **racine** et laisse `branches/` intact ;
123
+ - le script [`scripts/deploy-storybook.sh`](scripts/deploy-storybook.sh), lancé à la main :
124
+ il n'écrit que dans **`branches/<slug>/`**.
125
+
126
+ Le script construit le Storybook avec le bon `base` d'URL (`STORYBOOK_BASE_PATH`), le copie dans un
127
+ worktree git temporaire de `gh-pages` (`.gh-pages/`, ignoré par git), commite et pousse. Le nom de
128
+ la branche est injecté au build via `STORYBOOK_BRANCH`, ce qui produit la pastille. Le push se fait
129
+ en `--no-verify` : le hook `pre-push` lance Chromatic, sans objet pour de la doc statique.
130
+
131
+ Les slashs des noms de branche deviennent des tirets : `component/AutoCompleteGroup` est publié
132
+ sous `branches/component-AutoCompleteGroup/`.
133
+
134
+ Côté GitHub, *Settings → Pages → Source* est réglé sur **Deploy from a branch → `gh-pages` /
135
+ `(root)`**. Ne pas revenir à la source « GitHub Actions » : elle ne permet qu'un seul déploiement,
136
+ donc aucun sous-dossier par branche.
137
+
138
+ ### En cas de pépin
139
+
140
+ | Symptôme | Cause |
141
+ |---|---|
142
+ | `npm run deploy:storybook` : commande inconnue | la branche n'a pas le code de `main` → `git merge origin/main` |
143
+ | build qui échoue sur un import de `node_modules` | dépendances désynchronisées → `npm install` en Node 20 |
144
+ | erreur de syntaxe au build, Node introuvable | `node -v` renvoie une version < 18 → `nvm use 20` |
145
+ | 404 sur l'URL juste après un déploiement | build GitHub Pages en cours, attendre une minute puis `Ctrl+Shift+R` |
146
+ | la pastille de branche n'apparaît pas | build fait sans `STORYBOOK_BRANCH`, donc hors du script — repasser par `npm run deploy:storybook` |
147
+
148
+ ### Savoir quelle version un Storybook documente
149
+
150
+ Tout Storybook déployé affiche le numéro de version lu dans le `package.json` au moment du build :
151
+ **pastille en bas de la sidebar** (cliquable vers le `CHANGELOG`), **titre de l'onglet** du
152
+ navigateur, et en-tête de la page *Sommaire*. Il n'y a rien à saisir à la main : le numéro est
153
+ injecté par `.storybook/main.js` sous `STORYBOOK_VERSION` et lu par `.storybook/theme.js`.
154
+
155
+ Conséquence pratique : un bump de version n'apparaît en ligne qu'**après un nouveau build** —
156
+ push sur `main` pour la doc de référence, `npm run deploy:storybook` pour une branche.
157
+
158
+
159
+ ## Utiliser la bibliothèque dans une application
160
+
161
+ ```bash
162
+ npm install arengibook@3.3.0-main --save-exact
163
+ ```
164
+
165
+ ⚠️ **Toujours épingler une version exacte.** Les numéros publiés ne suivent pas une ligne
166
+ semver unique : des lignes parallèles (`-datepicker` jusqu'à `3.3.6`, `-treeselect`, une `5.0.0`
167
+ orpheline) portent des numéros *supérieurs* à la ligne officielle `-main`. Une plage du type
168
+ `^3.2.0` résoudrait sur une version expérimentale. Voir [`RELEASE.md`](RELEASE.md).
169
+
170
+ Les composants s'importent depuis la racine du paquet :
171
+
172
+ ```js
173
+ import { Table, TablePresets, configureI18n } from 'arengibook';
174
+ ```
175
+
176
+ Dans arengibox, le montage se fait depuis Twig sans import explicite — voir
177
+ [`docs/integration-symfony.md`](docs/integration-symfony.md).
178
+
179
+ ---
180
+
181
+ ## Carte du dépôt
182
+
183
+ ```
184
+ src/
185
+ ├── index.js ← API PUBLIQUE : ce qui n'est pas exporté ici n'existe pas
186
+ │ pour les consommateurs
187
+ ├── i18n/ ← cœur i18n (configureI18n, catalogues fr/en/es/de)
188
+ ├── components/react/
189
+ │ ├── _tokens.scss ← design system : source de vérité unique (couleurs + mixins)
190
+ │ └── <Composant>/
191
+ │ ├── <Composant>.jsx ← le composant
192
+ │ ├── <Composant>.presets.js ← jeux de props prêts à l'emploi + données de démo
193
+ │ ├── <Composant>.scss ← styles (importe ../tokens)
194
+ │ ├── <Composant>.stories.jsx ← stories Storybook = doc vivante
195
+ │ └── <Composant>.symfony.mdx ← (optionnel) doc d'intégration Symfony
196
+ └── stories/
197
+ ├── Configure.mdx ← page « Sommaire » de la sidebar
198
+ ├── Installation.mdx ← pointeur vers RELEASE.md
199
+ └── utils/ ← générateurs de snippets Twig / React pour les stories
200
+ .storybook/ ← configuration Storybook (ordre sidebar, sélecteur de locale)
201
+ scripts/
202
+ └── deploy-storybook.sh ← publie le Storybook d'une branche sur GitHub Pages
203
+ dist/ ← produit par `npm run build`, seul contenu publié sur npm
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Composants disponibles
209
+
210
+ | Catégorie Storybook | Composants |
211
+ |---|---|
212
+ | Formulaire | DatePicker, Select Simple (`Dropdown`), Select Multiple (`MultiSelect`), Select Simple/Multiple Async (`…MetaAsync`), TreeSelect, AutoComplete, AutoCompletion, Password, ExpressionEditor |
213
+ | Données | Table |
214
+ | Panneau | Panel, Accordeon |
215
+ | Navigation | TabView, Popup |
216
+ | Superposition | Infobulle (`Tooltip`) |
217
+ | Feedback | Toast |
218
+ | Bouton | Button |
219
+
220
+ Les noms d'export exacts sont dans [`src/index.js`](src/index.js). Attention : `TreeSelect` est
221
+ un **alias** de `TreeSelectMaquette` (voir [`docs/architecture.md`](docs/architecture.md)).
15
222
 
16
- ## 📖 Lancer Storybook
223
+ ---
17
224
 
18
- npm run storybook
225
+ ## Les cinq règles à ne pas enfreindre
19
226
 
20
- Storybook sera disponible ici : http://localhost:6006
227
+ 1. **Node 18 pour construire** la bibliothèque ; l'application consommatrice (arengibox) tourne
228
+ sur **Node 8.17 / npm 6** — c'est le `dist` transpilé qui fait le pont. Les deux
229
+ environnements ne doivent jamais se mélanger dans le même shell (voir
230
+ [`docs/architecture.md`](docs/architecture.md)).
231
+ 2. **Rien n'arrive dans une application tant que la version n'est pas publiée sur npm *et*
232
+ épinglée** dans son `package.json`. Un commit poussé sur `main` ne suffit pas.
233
+ 3. **On publie depuis `main`** (après merge), avec un numéro suffixé `-main`. Les tags jetables
234
+ (`-<chantier>`) servent aux itérations de recette. Voir [`RELEASE.md`](RELEASE.md).
235
+ 4. **Toute modification d'un composant met à jour ses stories et sa doc** dans le même commit
236
+ (argTypes, story de la nouveauté, `.symfony.mdx` s'il existe). Voir [`CONTRIBUTING.md`](CONTRIBUTING.md).
237
+ 5. **Pas de code expérimental sur `main`** : les branches de test se mergent après validation,
238
+ jamais « pour voir ». Un composant de maquette parvenu sur `main` a déjà cassé l'intégration
239
+ d'une application en recette.
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.datepicker-fullwidth{width:100%}.datepicker-fullwidth>.dp-input-wrapper{width:100%}.datepicker-fullwidth>.dp-input-wrapper>.p-calendar{width:100%}.dp-input-wrapper{position:relative;display:inline-flex}.dp-input-wrapper .dp-clear-btn{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:.2rem;display:flex;align-items:center;justify-content:center;color:#b0b8c4;z-index:1;border-radius:50%;line-height:1}.dp-input-wrapper .dp-clear-btn:hover{color:#1a1e26;background-color:#0000000f}.dp-input-wrapper .dp-clear-btn .pi{font-size:.65rem}.p-calendar>.p-inputtext{font-family:Roboto,sans-serif;min-height:40px;padding:0 12px;background:#fff;border:1.5px solid #e0e3e8;border-radius:7px;color:#1a1e26;outline:none;transition:border-color .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1)}.p-calendar>.p-inputtext:hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled){border-color:#c8cdd6}.p-calendar>.p-inputtext:focus,.p-calendar>.p-inputtext:focus-within,.p-calendar>.p-inputtext.is-open{border-color:#3f3f3f;box-shadow:0 0 0 3px #0000001a}.p-calendar>.p-inputtext[disabled],.p-calendar>.p-inputtext.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.p-calendar>.p-inputtext[readonly],.p-calendar>.p-inputtext.is-readonly{background:#f4f5f6;cursor:default;box-shadow:none}.p-calendar>.p-inputtext[readonly]:hover,.p-calendar>.p-inputtext.is-readonly:hover{border-color:#e0e3e8}.p-calendar>.p-inputtext.is-error{border-color:#dc2626;box-shadow:0 0 0 3px #dc262626}.p-calendar>.p-inputtext.is-success{border-color:#15803d;box-shadow:0 0 0 3px #15803d1f}.p-calendar>.p-inputtext:hover{border-color:#c8cdd6!important}.p-calendar>.p-inputtext:focus,.p-calendar>.p-inputtext.p-focus{border-color:#3f3f3f!important;box-shadow:0 0 0 3px #0000001a!important;outline:none}.datepickerbook:not(.dp-ready){visibility:hidden!important}.datepickerbook table,.datepickerbook tbody,.datepickerbook tr,.datepickerbook td,.datepickerbook th{background-color:unset!important;color:inherit!important;border:none}.datepickerbook .p-datepicker{background-color:#fff!important;color:#1a1e26!important;border-radius:7px;box-shadow:0 0 8px #0000001a}.datepickerbook .datepicker-custom-header{display:flex;flex-direction:column;gap:.5rem;padding:.5rem .75rem}.datepickerbook .datepicker-spinner{display:flex;flex-direction:column;align-items:center;font-size:.85rem}.datepickerbook .dp-label{margin:.25rem 0;font-weight:500}.p-datepicker .p-datepicker-title,.p-datepicker .p-datepicker-prev,.p-datepicker .p-datepicker-next{display:none!important}.datepickerbook .p-datepicker-header{justify-content:center}.datepickerbook .dp-popup{position:absolute;top:100%;margin-top:.25rem;background:#fff;border:1px solid #e0e3e8;border-radius:4px;padding:.25rem;z-index:10}.datepickerbook .dp-popup-months,.datepickerbook .dp-popup-years{display:grid;grid-template-columns:repeat(3,auto);gap:.25rem}.datepickerbook .dp-popup-item{border:none;background:transparent;padding:.15rem .4rem;cursor:pointer;font-size:.8rem}.datepickerbook .dp-popup-item:hover{background:#f4f5f6}.datepickerbook .dp-header-part{display:flex;align-items:center;gap:.25rem}.datepickerbook .dp-label-button{border:none;background:transparent;cursor:pointer;font-weight:800;font-size:16px;margin:.25rem 0}.datepickerbook.dp-monthyear-mode .dp-monthyear-header{padding-bottom:.25rem}.datepickerbook{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.datepickerbook .dp-back-button{border:none;background:transparent;cursor:pointer;font-size:.9rem}.datepickerbook .dp-title{font-weight:600;font-size:.9rem}.datepickerbook .dp-header-lists{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.datepickerbook .dp-month-list,.datepickerbook .dp-year-list{padding-right:.25rem;display:flex;flex-direction:column;gap:.15rem}.datepickerbook .dp-list-item:hover{background:#f4f5f6}.p-datepicker-header.datepicker-custom-header.dp-monthyear-header{margin:auto}.p-datepicker.dp-monthyear-mode{box-shadow:none!important;border-radius:0}.p-datepicker.dp-monthyear-mode .dp-header-top-alt{display:none!important}.p-datepicker-monthpicker.dp-monthyear-mode{box-shadow:none!important;border-radius:0}.p-datepicker-monthpicker.dp-monthyear-mode .dp-header-top-alt{display:none!important}.p-datepicker{width:331px!important;min-width:331px!important;max-width:331px!important}.p-datepicker .dp-arrow{border:none;background-color:transparent;color:#b0b8c4;cursor:pointer;transition:color .18s cubic-bezier(.4,0,.2,1),background-color .18s cubic-bezier(.4,0,.2,1)}.p-datepicker .dp-arrow:hover{color:#3f3f3f;background-color:#3f3f3f14}.p-datepicker.dp-year-only{box-shadow:none!important;width:auto!important;min-width:unset!important;max-width:unset!important}.p-datepicker.dp-year-only .dp-header-top-alt{display:none!important}.p-datepicker.dp-year-only .dp-monthyear-header{width:205px;min-width:205px;max-width:205px}.p-datepicker.dp-year-only .dp-monthyear-header .dp-year-container{width:100%}.p-datepicker.dp-year-only .dp-year-container{display:flex;flex-direction:column;align-items:center;justify-content:space-between}.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container{width:100%;border-top:1px solid #e0e3e8;height:51px;display:flex;align-items:center}.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-up{border-right:1px solid #e0e3e8;border-radius:0 0 0 5px!important}.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-down{border-radius:0 0 5px!important}.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-year{display:flex;align-items:center;justify-content:center;height:100%;width:49%;border-radius:0;flex:1}.p-datepicker.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-year:hover{background-color:#3f3f3f14}.p-datepicker.dp-year-only .dp-year-container .dp-year-list{width:100%;gap:0px;padding:0}.p-datepicker.dp-year-only .dp-year-container .dp-list-item-active{width:100%;color:#fff!important;background-color:#3f3f3f!important;border-bottom:1px solid #3f3f3f!important;font-weight:600}.p-datepicker.dp-year-only .dp-year-container .dp-list-item{background-color:transparent;border:none;color:#1a1e26;transition:0s!important;height:25px;font-size:16px;border-radius:0;border-bottom:1px solid #e0e3e8;width:100%}.p-datepicker.dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big){padding:3px 10px!important}.p-datepicker.dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big):hover{background-color:#3f3f3f14!important;color:#3f3f3f}.p-datepicker.dp-year-only .dp-year-container .dp-list-item{padding:3px 10px;transition:background .18s cubic-bezier(.4,0,.2,1)}.dp-monthyear-mode .p-datepicker-group,.p-datepicker-monthpicker .p-datepicker-group,.dp-year-only .p-datepicker-group{padding:0!important;border:0px solid transparent!important}.dp-monthyear-mode .dp-monthyear-header,.p-datepicker-monthpicker .dp-monthyear-header,.dp-year-only .dp-monthyear-header{justify-content:flex-start;gap:0;background:#fff;border:1px solid rgba(255,255,255,.33);border-radius:8px;position:absolute;top:0;left:0;padding:0!important;width:331px;min-width:331px;max-width:331px}.dp-monthyear-mode .dp-header-top-alt,.p-datepicker-monthpicker .dp-header-top-alt,.dp-year-only .dp-header-top-alt{width:100%;height:50px!important;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e0e3e8}.dp-monthyear-mode .dp-header-top-alt .dp-header-top-alt-part:first-child,.p-datepicker-monthpicker .dp-header-top-alt .dp-header-top-alt-part:first-child,.dp-year-only .dp-header-top-alt .dp-header-top-alt-part:first-child{border-right:1px solid #e0e3e8}.dp-monthyear-mode .dp-header-top-alt .dp-header-top-alt-part,.p-datepicker-monthpicker .dp-header-top-alt .dp-header-top-alt-part,.dp-year-only .dp-header-top-alt .dp-header-top-alt-part{width:49%;height:50px;flex:1;display:flex;align-items:center;justify-content:center;font-weight:600;color:#1a1e26;font-size:16px;text-transform:capitalize}.dp-monthyear-mode .p-datepicker-calendar-container,.p-datepicker-monthpicker .p-datepicker-calendar-container,.dp-year-only .p-datepicker-calendar-container{display:none}.dp-monthyear-mode .dp-actions,.p-datepicker-monthpicker .dp-actions,.dp-year-only .dp-actions{width:100%;background-color:#fff;display:flex;align-items:center;justify-content:space-between;border-radius:0 0 5px 5px;padding:0 10px 10px}.dp-monthyear-mode .dp-actions .p-button:first-child,.p-datepicker-monthpicker .dp-actions .p-button:first-child,.dp-year-only .dp-actions .p-button:first-child{border:0px solid transparent;color:#3f3f3f}.dp-monthyear-mode .dp-actions .p-button:last-child,.p-datepicker-monthpicker .dp-actions .p-button:last-child,.dp-year-only .dp-actions .p-button:last-child{background-color:#fff;border:1px solid #3f3f3f;color:#3f3f3f}.dp-monthyear-mode .dp-actions .p-button:last-child:hover,.p-datepicker-monthpicker .dp-actions .p-button:last-child:hover,.dp-year-only .dp-actions .p-button:last-child:hover{background-color:#3f3f3f;color:#fff}.dp-monthyear-mode .dp-actions .p-button,.p-datepicker-monthpicker .dp-actions .p-button,.dp-year-only .dp-actions .p-button{padding:10px 15px}.dp-monthyear-mode .dp-actions .p-button .p-button-icon,.p-datepicker-monthpicker .dp-actions .p-button .p-button-icon,.dp-year-only .dp-actions .p-button .p-button-icon{display:none}.dp-monthyear-mode .dp-header-lists,.p-datepicker-monthpicker .dp-header-lists,.dp-year-only .dp-header-lists{width:calc(100% - 20px);height:300px;display:flex;align-items:flex-start;gap:initial;padding:0;margin:10px}.dp-monthyear-mode .dp-month-list,.p-datepicker-monthpicker .dp-month-list,.dp-year-only .dp-month-list{transition:none!important;border:1px solid #e0e3e8;margin:0 10px 0 0!important;gap:0px}.dp-monthyear-mode .dp-month-list .dp-list-item-active,.p-datepicker-monthpicker .dp-month-list .dp-list-item-active,.dp-year-only .dp-month-list .dp-list-item-active{width:100%;color:#fff!important;background-color:#3f3f3f!important;border-bottom:1px solid #3f3f3f!important;font-weight:600}.dp-monthyear-mode .dp-month-list .dp-list-item,.p-datepicker-monthpicker .dp-month-list .dp-list-item,.dp-year-only .dp-month-list .dp-list-item{border:none;height:25px;background-color:transparent;font-size:16px;text-transform:capitalize;border-radius:0;margin:0;padding:3px;width:calc(100% + -0px);border-bottom:1px solid #e0e3e8}.dp-monthyear-mode .dp-month-list .dp-list-item:hover,.p-datepicker-monthpicker .dp-month-list .dp-list-item:hover,.dp-year-only .dp-month-list .dp-list-item:hover{background-color:#3f3f3f14}.dp-monthyear-mode .dp-month-list .dp-list-item:last-child,.p-datepicker-monthpicker .dp-month-list .dp-list-item:last-child,.dp-year-only .dp-month-list .dp-list-item:last-child{border:none}.dp-monthyear-mode .dp-year-container,.p-datepicker-monthpicker .dp-year-container,.dp-year-only .dp-year-container{display:flex;flex-direction:column;align-items:center;justify-content:space-between;border:1px solid #e0e3e8}.dp-monthyear-mode .dp-year-container .dp-arrow-container,.p-datepicker-monthpicker .dp-year-container .dp-arrow-container,.dp-year-only .dp-year-container .dp-arrow-container{width:100%;border-top:1px solid #e0e3e8;height:51px;display:flex;align-items:center}.dp-monthyear-mode .dp-year-container .dp-arrow-container .dp-arrow-up,.p-datepicker-monthpicker .dp-year-container .dp-arrow-container .dp-arrow-up,.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-up{border-right:1px solid #e0e3e8}.dp-monthyear-mode .dp-year-container .dp-arrow-container .dp-arrow-year,.p-datepicker-monthpicker .dp-year-container .dp-arrow-container .dp-arrow-year,.dp-year-only .dp-year-container .dp-arrow-container .dp-arrow-year{display:flex;align-items:center;justify-content:center;height:100%;width:49%;border-radius:0;flex:1}.dp-monthyear-mode .dp-year-container .dp-year-list,.p-datepicker-monthpicker .dp-year-container .dp-year-list,.dp-year-only .dp-year-container .dp-year-list{width:100%;gap:0px;padding:0}.dp-monthyear-mode .dp-year-container .dp-list-item-active,.p-datepicker-monthpicker .dp-year-container .dp-list-item-active,.dp-year-only .dp-year-container .dp-list-item-active{width:100%;color:#fff!important;background-color:#3f3f3f!important;border-bottom:1px solid #3f3f3f!important;font-weight:600}.dp-monthyear-mode .dp-year-container .dp-list-item,.p-datepicker-monthpicker .dp-year-container .dp-list-item,.dp-year-only .dp-year-container .dp-list-item{background-color:transparent;border:none;color:#1a1e26;transition:0s!important;height:25px;font-size:16px;border-radius:0;border-bottom:1px solid #e0e3e8;width:100%;padding:3px 10px}.dp-monthyear-mode .dp-year-container .dp-list-item:not(.dp-list-item-big),.p-datepicker-monthpicker .dp-year-container .dp-list-item:not(.dp-list-item-big),.dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big){padding:3px 10px!important}.dp-monthyear-mode .dp-year-container .dp-list-item:not(.dp-list-item-big):hover,.p-datepicker-monthpicker .dp-year-container .dp-list-item:not(.dp-list-item-big):hover,.dp-year-only .dp-year-container .dp-list-item:not(.dp-list-item-big):hover{background-color:#3f3f3f14!important;color:#3f3f3f}.dp-monthyear-mode .dp-month-list,.dp-monthyear-mode .dp-year-container,.p-datepicker-monthpicker .dp-month-list,.p-datepicker-monthpicker .dp-year-container,.dp-year-only .dp-month-list,.dp-year-only .dp-year-container{width:49%;flex:1;margin:0;background-color:transparent;padding:0;height:100%}.dp-monthyear-mode .dp-month-list .dp-list-item,.dp-monthyear-mode .dp-year-container .dp-list-item,.p-datepicker-monthpicker .dp-month-list .dp-list-item,.p-datepicker-monthpicker .dp-year-container .dp-list-item,.dp-year-only .dp-month-list .dp-list-item,.dp-year-only .dp-year-container .dp-list-item{cursor:pointer}.dp-monthyear-mode .dp-month-list .dp-list-item:hover,.dp-monthyear-mode .dp-year-container .dp-list-item:hover,.p-datepicker-monthpicker .dp-month-list .dp-list-item:hover,.p-datepicker-monthpicker .dp-year-container .dp-list-item:hover,.dp-year-only .dp-month-list .dp-list-item:hover,.dp-year-only .dp-year-container .dp-list-item:hover{color:#3f3f3f;border-bottom:1px solid rgba(63,63,63,.08)}.dp-monthyear-mode .dp-month-list:hover,.dp-monthyear-mode .dp-year-container:hover,.p-datepicker-monthpicker .dp-month-list:hover,.p-datepicker-monthpicker .dp-year-container:hover,.dp-year-only .dp-month-list:hover,.dp-year-only .dp-year-container:hover{background-color:#ffffff4f}.p-datepicker{padding:0;background-color:#fff;box-shadow:1px 2px 26px #00000036;width:321px}.p-datepicker .p-datepicker-group-container{width:100%}.p-datepicker .p-datepicker-group{background:#fff;border-radius:8px;padding-bottom:1px}.p-datepicker .p-datepicker-header{padding:0;height:50px}.p-datepicker .p-datepicker-header .datepicker-custom-header{width:100%;display:flex;align-items:center;justify-content:space-between}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top{width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e0e3e8}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-month{border-right:1px solid #e0e3e8}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-month .dp-arrow-left{border-radius:7px 0 0}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-year .dp-arrow-right{border-radius:0 7px 0 0}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part{width:49%;flex:1;display:flex;align-items:center;justify-content:center}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-arrow{width:30px;height:49px;min-width:30px;min-height:49px;max-width:30px;max-height:49px;display:flex;align-items:center;justify-content:center}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-arrow:hover{background-color:#3f3f3f14;color:#3f3f3f}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-label-button{width:calc(100% - 60px);display:flex;align-items:center;justify-content:center;height:50px;margin:0;text-transform:capitalize;color:#3f3f3f}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part .dp-label-button:hover{background-color:#3f3f3f14;font-weight:800}.p-datepicker .p-datepicker-header .datepicker-custom-header .dp-header-top .dp-header-part:hover{background-color:#ffffff4f}.p-datepicker .p-datepicker-calendar-container{padding:10px}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar{margin:0}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar thead tr th{padding:2px}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar thead tr th span{color:#1a1e26;display:flex;align-items:center;justify-content:center}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr .p-datepicker-today{background-color:transparent}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr .p-datepicker-today span{background-color:transparent;font-weight:600;color:#3f3f3f;border:1px solid #3f3f3f;text-decoration:underline}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td{padding:0;border:1px solid #f4f5f6}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td .p-highlight{color:#fff!important;background-color:#3f3f3f!important;box-shadow:1px 2px 4px #0000004f;font-weight:600}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td .p-disabled{opacity:.3;cursor:not-allowed;background-color:transparent!important;font-size:12px}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td span{margin:0;width:100%;border-radius:0}.p-datepicker .p-datepicker-calendar-container .p-datepicker-calendar tbody tr td span:hover{background-color:#3f3f3f14!important;color:#3f3f3f;box-shadow:1px 2px 4px #0000004f}.dp-monthyear-header{width:360px;background:#fff;border-radius:18px;padding:24px 26px;box-shadow:0 8px 26px #0000001a;display:flex;flex-direction:column;font-family:Inter,sans-serif;gap:22px}.dp-header-top-alt .dp-title{font-size:1.55rem;font-weight:700;text-align:center;color:#1a1e26;margin-bottom:2px}.datepickerbook .dp-year-list .dp-list-item:hover{background:#3f3f3f26}.dp-month-list .dp-list-item-active{background:#fff;font-weight:600}.dp-year-list{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0}.dp-year-list .dp-list-item{font-size:1.2rem;color:#b0b8c4;padding:4px 0;cursor:pointer;transition:.18s cubic-bezier(.4,0,.2,1)}.dp-year-list .dp-list-item:hover{color:#1a1e26}.dp-arrow-up,.dp-arrow-down{font-size:1.5rem;color:#1a1e26;padding:6px;border:none;background:none;cursor:pointer;margin:4px 0}.dp-actions{display:flex;justify-content:center;gap:20px;padding-top:5px;padding-bottom:10px}.dp-header-top{margin:auto}.p-monthpicker{display:none!important;margin:auto}.datepickerbook .p-datepicker-header{border:none!important;border-bottom:none!important;box-shadow:none!important;background:transparent!important}.datepickerbook.p-datepicker{padding:0!important;margin:0!important}.p-yearpicker{display:none!important}.datepickerbook .p-datepicker-footer{margin-bottom:20px}.dp-error-message{color:red!important;font-style:italic!important;display:block!important;width:100%!important;max-width:100%!important;white-space:normal!important;word-break:break-word!important;overflow-wrap:break-word!important;line-height:1.4!important;font-size:.875rem!important;margin-top:2px!important;float:none!important;position:static!important}.dropdownbook.p-dropdown-panel{z-index:999999!important}.p-tooltip{z-index:1000000!important}.dropdown-tooltip-item{position:relative;width:100%;cursor:pointer}.dropdown-container .p-dropdown{font-family:Roboto,sans-serif;min-height:40px;padding:0 12px;background:#fff;border:1.5px solid #e0e3e8;border-radius:7px;color:#1a1e26;outline:none;transition:border-color .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1)}.dropdown-container .p-dropdown:hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled){border-color:#c8cdd6}.dropdown-container .p-dropdown:focus,.dropdown-container .p-dropdown:focus-within,.dropdown-container .p-dropdown.is-open{border-color:#3f3f3f;box-shadow:0 0 0 3px #0000001a}.dropdown-container .p-dropdown[disabled],.dropdown-container .p-dropdown.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.dropdown-container .p-dropdown[readonly],.dropdown-container .p-dropdown.is-readonly{background:#f4f5f6;cursor:default;box-shadow:none}.dropdown-container .p-dropdown[readonly]:hover,.dropdown-container .p-dropdown.is-readonly:hover{border-color:#e0e3e8}.dropdown-container .p-dropdown.is-error{border-color:#dc2626;box-shadow:0 0 0 3px #dc262626}.dropdown-container .p-dropdown.is-success{border-color:#15803d;box-shadow:0 0 0 3px #15803d1f}.dropdown-container .p-dropdown{padding:0;display:flex;align-items:center}.dd-search-row{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid #e0e3e8}.dd-search-row [class*=-filter-container]{flex:1;min-width:0;position:relative}.dd-search-row [class*=-filter-container] .p-inputtext{width:100%;height:32px;padding:0 1.75rem 0 12px;font-size:14px;box-sizing:border-box}.dd-search-row [class*=-filter-container] [class*=-filter-icon]{right:.75rem;color:#b0b8c4}.dd-sort-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #e0e3e8;border-radius:7px;background:#fff;cursor:pointer;color:#b0b8c4;font-size:14px;transition:background .18s cubic-bezier(.4,0,.2,1),color .18s cubic-bezier(.4,0,.2,1)}.dd-sort-btn:hover{background:#f4f5f6;color:#1a1e26}.dropdownbook .p-dropdown-header:has(.dd-search-row){padding:0}.dd-color-badge{display:inline-flex;align-items:center;gap:.5rem;padding:4px 10px;border-radius:1rem;font-size:.875rem;font-family:Roboto,sans-serif;white-space:nowrap;cursor:default;transition:background-color .18s cubic-bezier(.4,0,.2,1);background-color:#f4f5f6;color:#1a1e26;border:1px solid #e0e3e8;border-color:var(--badge-color, #e0e3e8);background-color:color-mix(in srgb,var(--badge-color, #f4f5f6) 50%,transparent)}.dd-color-badge.is-selected{background-color:var(--badge-color, #f4f5f6);box-shadow:0 1px 3px #00000026}.p-dropdown-item:hover .dd-color-badge{background-color:var(--badge-color)!important}.dropdownbook .p-dropdown-items .p-dropdown-item:not(.p-highlight):hover{background:#f4f5f6!important;color:#1a1e26!important}.dropdownbook .p-dropdown-items .p-dropdown-item.p-highlight{background:#3f3f3f14!important;color:#1a1e26!important}.dropdownbook .p-dropdown-items .p-dropdown-item.p-highlight.p-focus{background:#3f3f3f1f!important;color:#1a1e26!important}.dropdownbook .p-dropdown-items .p-dropdown-item.p-focus{background:#f4f5f6!important;color:#1a1e26!important}.dropdownbook .p-dropdown-filter.p-inputtext:hover{border-color:#c8cdd6!important}.dropdownbook .p-dropdown-filter.p-inputtext:focus,.dropdownbook .p-dropdown-filter.p-inputtext.p-focus{border-color:#3f3f3f!important;box-shadow:0 0 0 3px #0000001a!important;outline:none}.multiselect-container{position:relative;display:inline-block}.multiselect-container .p-multiselect{font-family:Roboto,sans-serif;min-height:40px;padding:0 12px;background:#fff;border:1.5px solid #e0e3e8;border-radius:7px;color:#1a1e26;outline:none;transition:border-color .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1)}.multiselect-container .p-multiselect:hover:not(:focus):not(:focus-within):not([disabled]):not(.is-disabled){border-color:#c8cdd6}.multiselect-container .p-multiselect:focus,.multiselect-container .p-multiselect:focus-within,.multiselect-container .p-multiselect.is-open{border-color:#3f3f3f;box-shadow:0 0 0 3px #0000001a}.multiselect-container .p-multiselect[disabled],.multiselect-container .p-multiselect.is-disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.multiselect-container .p-multiselect[readonly],.multiselect-container .p-multiselect.is-readonly{background:#f4f5f6;cursor:default;box-shadow:none}.multiselect-container .p-multiselect[readonly]:hover,.multiselect-container .p-multiselect.is-readonly:hover{border-color:#e0e3e8}.multiselect-container .p-multiselect.is-error{border-color:#dc2626;box-shadow:0 0 0 3px #dc262626}.multiselect-container .p-multiselect.is-success{border-color:#15803d;box-shadow:0 0 0 3px #15803d1f}.multiselect-container .p-multiselect{padding:0;display:flex;align-items:center;height:40px;overflow:hidden}.multiselect-container .p-multiselect .p-multiselect-trigger{border-left:1px solid #cccccc}.selected-options-tooltip{position:absolute;background-color:#fff;border:1px solid #e0e3e8;border-radius:4px;padding:8px;box-shadow:0 2px 4px #0000001a;z-index:1000;width:400px;top:100%;left:0}.selected-options-tooltip div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.multiselect-tooltip-item{width:100%;cursor:pointer}.ms-no-checkbox .p-multiselect-items .p-multiselect-item .p-checkbox{display:none!important}.ms-no-checkbox .p-multiselect-items .p-multiselect-item{padding-left:1rem!important;align-items:center}.ms-panel-header{padding:0}.ms-search-row{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid #e0e3e8}.ms-search-row [class*=-filter-container]{flex:1;min-width:0;position:relative}.ms-search-row [class*=-filter-container] .p-inputtext{width:100%;height:32px;padding:0 1.75rem 0 12px;font-size:14px;box-sizing:border-box}.ms-search-row [class*=-filter-container] [class*=-filter-icon]{right:.75rem;color:#b0b8c4}.ms-sort-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #e0e3e8;border-radius:7px;background:#fff;cursor:pointer;color:#b0b8c4;font-size:14px;transition:background .18s cubic-bezier(.4,0,.2,1),color .18s cubic-bezier(.4,0,.2,1)}.ms-sort-btn:hover{background:#f4f5f6;color:#1a1e26}.ms-selectall-row{display:flex;align-items:center;padding:10px 12px;border-bottom:1px solid #e0e3e8}.ms-selectall-row>div:first-child{width:16px!important;height:16px!important;margin-right:8px;display:flex;align-items:center}.ms-selectall-row>div:first-child .ms-group-checkbox{width:16px;height:16px;min-width:16px;min-height:16px}.ms-selectall-row .p-checkbox{margin-right:0}.ms-selectall-label{font-size:14px;color:#1a1e26}.ms-counter{font-size:13px;color:#b0b8c4;margin-left:auto;white-space:nowrap}.ms-panel-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:8px 12px;border-top:1px solid #e0e3e8}.ms-cancel-btn{background:none;border:none;cursor:pointer;color:#b0b8c4;font-size:14px;padding:6px 12px;transition:color .18s cubic-bezier(.4,0,.2,1)}.ms-cancel-btn:hover{color:#1a1e26}.ms-apply-btn{background:#3f3f3f;color:#fff;border:none;border-radius:4px;padding:6px 16px;cursor:pointer;font-size:14px;transition:background .18s cubic-bezier(.4,0,.2,1)}.ms-apply-btn:hover{background:#1a1e26}.ms-group-header{display:flex;align-items:center;width:100%;padding:4px 0;-webkit-user-select:none;user-select:none}.ms-group-checkbox{width:16px;height:16px;min-width:16px;min-height:16px;border:1.5px solid #e0e3e8;border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#fff;color:#fff;font-size:10px;cursor:pointer;transition:all .18s cubic-bezier(.4,0,.2,1)}.ms-group-checkbox.checked,.ms-group-checkbox.p-highlight{background-color:#3f3f3f;border-color:#3f3f3f}.ms-group-checkbox.partial{background:linear-gradient(to top right,#3f3f3f 50%,transparent 50%);border-color:#3f3f3f}.ms-group-checkbox{margin-right:8px}.ms-group-label{font-weight:700;font-size:14px;flex:1;min-width:0}.ms-group-collapse-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #e0e3e8;border-radius:7px;background:#fff;cursor:pointer;color:#b0b8c4;font-size:14px;transition:background .18s cubic-bezier(.4,0,.2,1),color .18s cubic-bezier(.4,0,.2,1)}.ms-group-collapse-btn:hover{background:#f4f5f6;color:#1a1e26}.ms-group-collapse-btn{width:20px;height:20px;border-color:#b0b8c4;font-size:10px;font-weight:700;margin-left:8px}.p-checkbox-input{display:none}.p-checkbox{display:flex;align-items:center;margin-right:8px}.p-multiselect-item{display:flex;align-items:center;padding:6px 12px!important;font-family:Roboto,sans-serif;font-weight:400!important}.p-multiselect-item>span:not([class]){flex:1;min-width:0}.ms-selectall-row{display:flex;align-items:center}.p-checkbox .p-checkbox-box{width:16px!important;height:16px!important;min-width:16px;min-height:16px;border:1.5px solid #e0e3e8;border-radius:3px;background:#fff;transition:all .18s cubic-bezier(.4,0,.2,1)}.p-checkbox .p-checkbox-box svg{color:#fff;width:10px;height:10px}.p-checkbox.p-highlight .p-checkbox-box{background-color:#3f3f3f!important;border-color:#3f3f3f!important}.p-checkbox.p-highlight .p-checkbox-box svg{color:#fff}.p-multiselect .p-multiselect-label-container{flex:1!important;min-width:0!important;overflow:hidden!important}.p-multiselect .p-multiselect-label{overflow:hidden!important;white-space:nowrap!important;width:100%!important;display:flex!important;align-items:center;gap:0px!important;flex-wrap:nowrap!important}.p-multiselect .p-multiselect-label .p-multiselect-token{position:relative;margin-right:0!important;margin-left:0!important;flex-shrink:1;min-width:25%;transition:transform .18s cubic-bezier(.4,0,.2,1)}.p-multiselect .p-multiselect-label .p-multiselect-token .p-multiselect-token-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.p-multiselect .p-multiselect-label .p-multiselect-token .p-multiselect-token-icon{min-width:14px;min-height:14px;flex-shrink:0}.p-multiselect .p-multiselect-label .p-multiselect-token:not(:first-child){margin-left:-20px!important}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(1){z-index:1}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(2){z-index:2}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(3){z-index:3}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(4){z-index:4}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(5){z-index:5}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(6){z-index:6}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(7){z-index:7}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(8){z-index:8}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(9){z-index:9}.p-multiselect .p-multiselect-label .p-multiselect-token:nth-child(10){z-index:10}.p-multiselect .p-multiselect-label .p-multiselect-token:hover{z-index:100!important;transform:translateY(-2px);box-shadow:0 2px 6px #0003}.p-multiselect-token{animation:fadeIn .18s cubic-bezier(.4,0,.2,1) both;display:inline-flex;align-items:center;gap:2px;padding:4px 4px 4px 8px;border-radius:1rem;font-size:.875rem;font-family:Roboto,sans-serif;font-weight:400;font-style:normal;white-space:nowrap;border:1px solid var(--badge-color, #e0e3e8);background-color:var(--badge-color, #f4f5f6);color:inherit;box-shadow:0 1px 3px #0000001a;transition:transform .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1)}.p-multiselect-token .p-multiselect-token-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-multiselect-token .p-multiselect-token-icon{cursor:pointer;min-width:12px;min-height:12px;width:12px;height:12px;flex-shrink:0;border-radius:100%;padding:0;margin-left:0!important;display:flex;align-items:center;justify-content:center;transition:background-color .18s cubic-bezier(.4,0,.2,1)}.p-multiselect-token .p-multiselect-token-icon svg{width:8px;height:8px;min-width:8px;min-height:8px}.p-multiselect-token .p-multiselect-token-icon:hover{background-color:#fff}.ms-counter-badge{display:inline-flex;align-items:center;gap:.4rem;padding:0;font-size:.8rem;font-family:Roboto,sans-serif;font-weight:500;white-space:nowrap;background:none;color:#b0b8c4;border:none;transition:color .18s cubic-bezier(.4,0,.2,1)}.ms-counter-badge:hover{color:#1a1e26}.ms-counter-badge>span:not([class]){color:#1a1e26}.ms-counter-dots{display:flex;align-items:center;flex-shrink:0}.ms-counter-dots .ms-counter-dot{animation:fadeIn .18s cubic-bezier(.4,0,.2,1) both;width:20px;height:20px;min-width:20px;border-radius:100%;background-color:#e0e3e8;border:1.5px solid #ffffff;display:block;cursor:pointer;position:relative;z-index:1;transform:scale(1);transition:transform .18s cubic-bezier(.4,0,.2,1)}.ms-counter-dots .ms-counter-dot:not(:first-child){margin-left:-5px}.ms-counter-dots .ms-counter-dot:hover{transform:scale(1.35);z-index:100!important}.ms-counter-dots .ms-counter-dot:nth-child(1){animation-delay:40ms}.ms-counter-dots .ms-counter-dot:nth-child(2){animation-delay:80ms}.ms-counter-dots .ms-counter-dot:nth-child(3){animation-delay:.12s}.ms-counter-dots .ms-counter-dot:nth-child(4){animation-delay:.16s}.ms-counter-dots .ms-counter-dot:nth-child(5){animation-delay:.2s}.ms-counter-dots .ms-counter-dot:nth-child(6){animation-delay:.24s}.ms-counter-dots .ms-counter-dot:nth-child(7){animation-delay:.28s}.ms-counter-dots .ms-counter-dot:nth-child(8){animation-delay:.32s}.ms-counter-dots .ms-counter-dot:nth-child(9){animation-delay:.36s}.ms-counter-dots .ms-counter-dot:nth-child(10){animation-delay:.4s}.ms-counter-dots .ms-counter-dot:nth-child(11){animation-delay:.44s}.ms-counter-dots .ms-counter-dot:nth-child(12){animation-delay:.48s}.ms-counter-dots .ms-counter-dot:nth-child(13){animation-delay:.52s}.ms-counter-dots .ms-counter-dot:nth-child(14){animation-delay:.56s}.ms-counter-dots .ms-counter-dot:nth-child(15){animation-delay:.6s}.ms-counter-dots .ms-counter-dot:nth-child(16){animation-delay:.64s}.ms-counter-dots .ms-counter-dot:nth-child(17){animation-delay:.68s}.ms-counter-dots .ms-counter-dot:nth-child(18){animation-delay:.72s}.ms-counter-dots .ms-counter-dot:nth-child(19){animation-delay:.76s}.ms-counter-dots .ms-counter-dot:nth-child(20){animation-delay:.8s}.ms-counter-label{cursor:pointer;flex:1;min-width:0;display:flex;align-items:center}.ms-counter-end{display:flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.ms-counter-count{font-size:.8rem;font-weight:600;color:#1a1e26}.ms-counter-tooltip{display:flex;flex-direction:column;gap:4px;padding:2px 0}.ms-counter-tooltip-row{display:flex;align-items:center;gap:6px;font-size:12px;font-family:Roboto,sans-serif;white-space:nowrap}.ms-counter-tooltip-dot{width:8px;height:8px;min-width:8px;border-radius:100%;background-color:#e0e3e8;flex-shrink:0}.ms-counter-clear-icon{cursor:pointer;font-size:10px;min-width:16px;min-height:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;color:#b0b8c4;border-radius:100%;transition:color .18s cubic-bezier(.4,0,.2,1),background-color .18s cubic-bezier(.4,0,.2,1)}.ms-counter-clear-icon:hover{color:#1a1e26;background-color:#0000000f}.p-multiselect-token-label{font-size:.875rem!important;overflow:hidden!important;text-overflow:ellipsis!important}.p-multiselect-token:only-child .p-multiselect-token-label{text-overflow:ellipsis!important}.ms-color-badge{display:inline-flex;align-items:center;gap:.5rem;padding:4px 10px;border-radius:1rem;font-size:.875rem;font-family:Roboto,sans-serif;white-space:nowrap;cursor:default;transition:background-color .18s cubic-bezier(.4,0,.2,1);background-color:#f4f5f6;color:#1a1e26;border:1px solid #e0e3e8;border-color:var(--badge-color, #e0e3e8);background-color:color-mix(in srgb,var(--badge-color, #f4f5f6) 50%,transparent)}.ms-color-badge.is-selected{background-color:var(--badge-color, #f4f5f6);box-shadow:0 1px 3px #00000026}.ms-color-badge{cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;transition:background-color .18s cubic-bezier(.4,0,.2,1)}.p-multiselect-item:hover .ms-color-badge{background-color:var(--badge-color)!important}.p-multiselect-item-group{font-size:14px;font-weight:600;padding:8px 12px!important;position:sticky;top:0;z-index:5;background-color:#fff!important;border-bottom:1px solid #e0e3e8}.p-multiselect-item-group~.p-multiselect-item{padding-left:28px!important}.p-multiselect-items .p-multiselect-item:not(.p-highlight):hover{background:#f4f5f6!important;color:#1a1e26!important}.p-multiselect-items .p-multiselect-item.p-highlight{background:#3f3f3f14!important;color:#1a1e26!important}.p-multiselect-items .p-multiselect-item.p-highlight.p-focus{background:#3f3f3f1f!important;color:#1a1e26!important}.p-multiselect-items .p-multiselect-item.p-focus{background:#f4f5f6!important;color:#1a1e26!important}.p-multiselect-filter.p-inputtext:hover{border-color:#c8cdd6!important}.p-multiselect-filter.p-inputtext:focus,.p-multiselect-filter.p-inputtext.p-focus{border-color:#3f3f3f!important;box-shadow:0 0 0 3px #0000001a!important;outline:none}.badge-base{position:absolute;top:-8px;right:-8px;background:red!important;border-radius:50%!important;text-align:center;padding:0!important}.badge-small{font-size:10px!important;width:18px!important;height:18px!important;line-height:18px!important}.badge-medium{font-size:12px!important;width:22px!important;height:22px!important;line-height:22px!important}.badge-large{font-size:14px!important;width:26px!important;height:26px!important;line-height:26px!important}.badge-xlarge{font-size:16px!important;width:32px!important;height:32px!important;line-height:32px!important}.badge-xxlarge{font-size:18px!important;width:38px!important;height:38px!important;line-height:38px!important}@keyframes fadeIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes toastSlideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes toastIconPop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.2);opacity:1}to{transform:scale(1)}}@keyframes toastTextSlide{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.p-toast{top:58px!important;right:0!important}.p-toast-message{font-family:Roboto,sans-serif;position:relative;height:auto;border-radius:7px 0 0 7px;box-shadow:0 8px 24px #0000002e;overflow:hidden;border:none;border-left:6px solid var(--toast-dark, #3774bc);background:var(--toast-bg, #56b6e4)!important;color:#fff;animation:toastSlideIn .35s cubic-bezier(.4,0,.2,1) both;transition:width .3s cubic-bezier(.4,0,.2,1),max-width .3s cubic-bezier(.4,0,.2,1),padding .3s cubic-bezier(.4,0,.2,1)}.p-toast-message:hover:after{animation-play-state:paused}.p-toast-message:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;background:var(--toast-dark, #3774bc);opacity:.15;animation:toastTimerBg var(--toast-life, 3s) linear forwards}@keyframes toastTimerBg{0%{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 100% 0 0)}}.p-toast-message.toast-timer-restart:after{animation:none;animation:toastTimerBg var(--toast-life, 3s) linear forwards}@keyframes toastSlideOut{0%{opacity:1;transform:translate(0) scale(1);max-height:200px}50%{opacity:.3;transform:translate(20px) scale(.98);max-height:200px}80%{opacity:0;transform:translate(30px) scale(.97);max-height:200px}to{opacity:0;transform:translate(30px) scale(.97);max-height:0;margin-bottom:0}}.p-toast .p-toast-message.p-toast-message-exit-active{animation:toastSlideOut .6s ease-out forwards!important;overflow:visible!important;transition:none!important}.p-toast-message-success{--toast-color: #2c7722;--toast-bg: #4ec33d;--toast-dark: #2c7722}.p-toast-message-error{--toast-color: #940300;--toast-bg: #f12e22;--toast-dark: #940300}.p-toast-message-warn{--toast-color: #c37602;--toast-bg: #f5b447;--toast-dark: #c37602}.p-toast-message-info{--toast-color: #3774bc;--toast-bg: #56b6e4;--toast-dark: #3774bc}.p-toast-message.toast-type--processing{--toast-color: #7868e6;--toast-bg: #b8b5ff;--toast-dark: #7868e6}.p-toast-message.toast-type--processing .toast-icon-wrapper{animation:toastIconPop .4s cubic-bezier(.4,0,.2,1) .15s both,toastPulse 3s ease-in-out .6s infinite}.p-toast-message.toast-type--processing .toast-icon-wrapper i{animation:toastCogSpin 5s ease-in-out infinite}.p-toast-message.toast-type--processing .toast-icon-wrapper:before,.p-toast-message.toast-type--processing .toast-icon-wrapper:after{content:"";position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;background:#fff9;transform:translate(-50%,-50%);animation:toastRipple 2.5s ease-out infinite;pointer-events:none}.p-toast-message.toast-type--processing .toast-icon-wrapper:after{animation-delay:1.2s}@keyframes toastCogSpin{0%,70%{transform:rotate(0)}85%{transform:rotate(180deg)}85.1%,to{transform:rotate(180deg)}}@keyframes toastPulse{0%,to{box-shadow:0 0 #fff6}50%{box-shadow:0 0 16px 8px #ffffff40}}@keyframes toastRipple{0%{width:6px;height:6px;border-radius:50%;opacity:.6}to{width:70px;height:70px;border-radius:50%;opacity:0}}.p-toast-message.toast-type--warning{--toast-color: #c37602;--toast-bg: #f5b447;--toast-dark: #c37602}.p-toast-message-content{position:relative;z-index:1;padding:9px 8px;border-radius:10px 0 0 10px;background:transparent}.p-toast-message .p-toast-icon-close{position:absolute;top:10px;right:10px;width:24px;height:24px;font-size:10px;display:flex;align-items:center;justify-content:center;padding:0;border-radius:100%;background-color:#ffffff26;color:#ffffffb3;transition:color .18s cubic-bezier(.4,0,.2,1),background-color .18s cubic-bezier(.4,0,.2,1)}.p-toast-message .p-toast-icon-close:hover{color:#fff;background-color:#ffffff4d}.p-toast-message .p-toast-icon-close svg,.p-toast-message .p-toast-icon-close .p-icon{width:12px;height:12px}.toast-actions-top{position:absolute;top:10px;right:38px;display:flex;align-items:center}.toast-toggle-btn{width:24px;height:24px;background-color:#ffffff26;border:none;cursor:pointer;padding:0;color:#ffffffb3;display:flex;align-items:center;justify-content:center;border-radius:100%;transition:color .18s cubic-bezier(.4,0,.2,1),background-color .18s cubic-bezier(.4,0,.2,1)}.toast-toggle-btn:hover{color:#fff;background-color:#ffffff4d}.toast-toggle-icon{width:12px;height:12px;min-width:12px;min-height:12px;transform:rotate(45deg)}.toast-root{display:flex;align-items:flex-start;width:100%;gap:12px}.toast-left{display:flex;align-items:center;flex-shrink:0;margin-top:2px}.toast-icon-wrapper{position:relative;width:32px;height:32px;min-width:32px;min-height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:none;overflow:visible;animation:toastIconPop .4s cubic-bezier(.4,0,.2,1) .15s both}.toast-icon-wrapper i{color:var(--toast-dark, #3774bc);font-size:24px;z-index:1}.toast-left .p-toast-icon-close{order:3}.toast-body{line-height:1.5;font-size:.875rem;color:#ffffffe6;padding-right:50px;flex:1;min-width:0;animation:toastTextSlide .3s cubic-bezier(.4,0,.2,1) .2s both}.toast-title{font-weight:700;font-size:1.1rem;line-height:1.3;color:#fff;margin-bottom:4px}.toast-message{padding-right:0;color:#ffffffd9;font-size:.85rem}.p-toast-message.toast_s--compact{width:fit-content;min-width:48px;padding-right:0;margin-left:auto;margin-right:-66px;transition:margin-right .3s cubic-bezier(.4,0,.2,1)}.p-toast-message.toast_s--compact .p-toast-message-content{display:flex;align-items:center;padding:8px 10px;gap:6px}.p-toast-message.toast_s--compact .toast-actions-top{position:static;display:flex;align-items:center;gap:4px}.p-toast-message.toast_s--compact .p-toast-icon-close{position:relative;top:-5px;right:0;flex-shrink:0}.p-toast-message.toast_s--compact:hover{margin-right:0}.p-toast-message.toast_s--compact .toast-body{padding-right:0}.p-toast-message.toast_s--large{width:auto;min-width:auto;max-width:420px;padding-right:inherit}.p-toast-message.toast_s--large .p-toast-message-content{display:flex;align-items:flex-start;padding:16px 18px;gap:12px}.p-toast-message .maximize-button-container{margin-left:auto;display:flex;align-items:center}.toast-percentage{margin-top:10px;width:100%}.toast-percentage-label{font-size:.8rem;color:#fff9;margin-bottom:4px;text-align:right;width:100%}.toast-percentage-bar{height:4px;background-color:#fff3;border-radius:999px;overflow:hidden;width:100%}.toast-percentage-bar-fill{height:100%;background-color:#fff;border-radius:999px;transition:width .18s cubic-bezier(.4,0,.2,1)}.toast-link{margin-top:8px}.toast-link a{font-size:.8rem;font-weight:500;color:#fff;text-decoration:underline;opacity:.8;transition:opacity .18s cubic-bezier(.4,0,.2,1)}.toast-link a:hover{opacity:1}.toast-links{margin-top:8px;padding-left:1rem}.toast-links li{margin-bottom:4px}.toast-links a{font-size:.8rem;color:#fff;text-decoration:underline;opacity:.8;transition:opacity .18s cubic-bezier(.4,0,.2,1)}.toast-links a:hover{opacity:1}.toast-attached-files{margin-top:10px}.toast-attached-files-title{font-size:.75rem;font-weight:600;color:#fff9;margin-bottom:4px}.toast-attached-files-list{list-style:none;padding:0;margin:0}.toast-attached-files-list li{margin-bottom:4px}.toast-attached-files-list a{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;color:#fff;text-decoration:underline;opacity:.8;transition:opacity .18s cubic-bezier(.4,0,.2,1)}.toast-attached-files-list a:hover{opacity:1}.p-toast-message.heightoastlarge{min-height:50px}.p-toast-message.heightoastmedium{max-height:100px;overflow:hidden}.arengi-table td{overflow:visible!important}.p-datatable-scrollable .p-datatable-tbody>tr>td.p-frozen-column{z-index:1;background-color:var(--surface-0, #ffffff)}.p-datatable-scrollable .p-datatable-tbody>tr.p-row-odd>td.p-frozen-column{background-color:var(--surface-b, #f8f9fa)}.arengi-table .p-cell-editing input,.arengi-table .p-cell-editing .p-inputtext,.arengi-table .p-cell-editing .p-dropdown,.arengi-table .p-cell-editing .p-multiselect,.arengi-table .p-cell-editing .p-calendar{width:100%;min-width:0;box-sizing:border-box}.cell-devise{display:flex;flex-direction:column;gap:.1rem;font-size:.875rem}.cell-devise--editable{cursor:pointer}.cell-devise--empty{display:block;width:100%;height:1.5rem;cursor:pointer}.cell-devise .span-sub{font-size:.75rem;color:#71717a}.devise-editor{display:flex;flex-direction:column;gap:.4rem;padding:.25rem 0}.devise-editor-fields{display:flex;flex-direction:column;gap:.4rem;width:100%;position:relative}.devise-editor-fields .p-dropdown-panel{position:absolute;z-index:1000;top:100%;left:0;width:100%}.devise-editor-save{align-self:flex-end}.arengi-table .p-cell-editing .devise-editor-fields input,.arengi-table .p-cell-editing .devise-editor-fields .p-inputtext,.arengi-table .p-cell-editing .devise-editor-fields .p-dropdown{width:100%;min-width:0}.doc-cell-empty{color:#aaa;font-size:.85rem}.doc-cell{display:flex;flex-direction:column;gap:.25rem}.doc-cell-summary{display:flex;align-items:center;gap:.35rem;font-size:.875rem}.doc-cell-summary .pi-paperclip{color:#71717a;font-size:.8rem}.doc-cell-list{display:flex;flex-direction:column;gap:.15rem;padding-left:1.1rem;font-size:.8rem}.doc-cell-list a{color:#3b82f6;text-decoration:none}.doc-cell-list a:hover{text-decoration:underline}.doc-editor{display:flex;flex-direction:column;gap:.4rem;padding:.25rem 0}.doc-editor-table{width:100%;border-collapse:collapse;font-size:.8rem}.doc-editor-table td{padding:.2rem .35rem;vertical-align:middle}.doc-editor-table td a{color:#3b82f6;text-decoration:none;word-break:break-all}.doc-editor-table td a:hover{text-decoration:underline}.doc-editor-table td:last-child{width:2rem;text-align:center}.doc-editor-add{display:inline-flex;align-items:center;gap:.3rem;cursor:pointer;align-self:flex-start}.tab_label{display:inline-block;padding:3px 8px;font-size:12px;font-weight:600;line-height:1;text-align:center;white-space:nowrap;vertical-align:middle;border-radius:10px}.arengi-treeselect{display:flex;flex-direction:column;gap:.25rem;width:100%;position:relative}.arengi-treeselect__input{width:100%}.arengi-treeselect__error{color:var(--p-inputtext-invalid-border-color, #e24c4c);font-size:.75rem}.arengi-treeselect--invalid .p-treeselect{border-color:var(--p-inputtext-invalid-border-color, #e24c4c)}.arengi-treeselect__node-color{display:inline-block;width:100%;padding:1px 6px;border-radius:3px;line-height:1.5}.arengi-treeselect__value-color{display:inline-block;padding:1px 8px;border-radius:3px;line-height:1.5;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" ?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="300" height="80" viewBox="0 0 300 80">
3
+ <rect x="0" y="0" width="300" height="80" rx="16" ry="16" fill="#003b4f"/>
4
+ <g transform="translate(30,20)">
5
+ <rect x="0" y="0" width="30" height="30" rx="6" ry="6" fill="white"/>
6
+ <rect x="10" y="10" width="30" height="30" rx="6" ry="6" fill="#003b4f"/>
7
+ </g>
8
+ <text x="80" y="50" fill="white" font-family="Arial, sans-serif" font-size="28" font-weight="bold">ARENGIBOOK</text>
9
+ </svg>