@navette-js/support 0.0.0-stage → 1.0.0-beta.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/LICENSE +21 -0
- package/README.md +8 -2
- package/THIRD-PARTY-NOTICES.md +12 -0
- package/data/lang.en-fr.json +2090 -0
- package/data/palettes.json +340 -0
- package/icons/HEROICONS-LICENSE.md +21 -0
- package/icons/heroicons/c-academic-cap.svg +4 -0
- package/icons/heroicons/c-adjustments-horizontal.svg +3 -0
- package/icons/heroicons/c-adjustments-vertical.svg +3 -0
- package/icons/heroicons/c-archive-box-arrow-down.svg +4 -0
- package/icons/heroicons/c-archive-box-x-mark.svg +4 -0
- package/icons/heroicons/c-archive-box.svg +4 -0
- package/icons/heroicons/c-arrow-down-circle.svg +3 -0
- package/icons/heroicons/c-arrow-down-left.svg +3 -0
- package/icons/heroicons/c-arrow-down-on-square-stack.svg +4 -0
- package/icons/heroicons/c-arrow-down-on-square.svg +3 -0
- package/icons/heroicons/c-arrow-down-right.svg +3 -0
- package/icons/heroicons/c-arrow-down-tray.svg +4 -0
- package/icons/heroicons/c-arrow-down.svg +3 -0
- package/icons/heroicons/c-arrow-left-circle.svg +3 -0
- package/icons/heroicons/c-arrow-left-end-on-rectangle.svg +4 -0
- package/icons/heroicons/c-arrow-left-start-on-rectangle.svg +3 -0
- package/icons/heroicons/c-arrow-left.svg +3 -0
- package/icons/heroicons/c-arrow-long-down.svg +3 -0
- package/icons/heroicons/c-arrow-long-left.svg +3 -0
- package/icons/heroicons/c-arrow-long-right.svg +3 -0
- package/icons/heroicons/c-arrow-long-up.svg +3 -0
- package/icons/heroicons/c-arrow-path-rounded-square.svg +3 -0
- package/icons/heroicons/c-arrow-path.svg +3 -0
- package/icons/heroicons/c-arrow-right-circle.svg +3 -0
- package/icons/heroicons/c-arrow-right-end-on-rectangle.svg +4 -0
- package/icons/heroicons/c-arrow-right-start-on-rectangle.svg +3 -0
- package/icons/heroicons/c-arrow-right.svg +3 -0
- package/icons/heroicons/c-arrow-top-right-on-square.svg +4 -0
- package/icons/heroicons/c-arrow-trending-down.svg +3 -0
- package/icons/heroicons/c-arrow-trending-up.svg +3 -0
- package/icons/heroicons/c-arrow-turn-down-left.svg +3 -0
- package/icons/heroicons/c-arrow-turn-down-right.svg +3 -0
- package/icons/heroicons/c-arrow-turn-left-down.svg +3 -0
- package/icons/heroicons/c-arrow-turn-left-up.svg +3 -0
- package/icons/heroicons/c-arrow-turn-right-down.svg +3 -0
- package/icons/heroicons/c-arrow-turn-right-up.svg +3 -0
- package/icons/heroicons/c-arrow-turn-up-left.svg +3 -0
- package/icons/heroicons/c-arrow-turn-up-right.svg +3 -0
- package/icons/heroicons/c-arrow-up-circle.svg +3 -0
- package/icons/heroicons/c-arrow-up-left.svg +3 -0
- package/icons/heroicons/c-arrow-up-on-square-stack.svg +4 -0
- package/icons/heroicons/c-arrow-up-on-square.svg +3 -0
- package/icons/heroicons/c-arrow-up-right.svg +3 -0
- package/icons/heroicons/c-arrow-up-tray.svg +4 -0
- package/icons/heroicons/c-arrow-up.svg +3 -0
- package/icons/heroicons/c-arrow-uturn-down.svg +3 -0
- package/icons/heroicons/c-arrow-uturn-left.svg +3 -0
- package/icons/heroicons/c-arrow-uturn-right.svg +3 -0
- package/icons/heroicons/c-arrow-uturn-up.svg +3 -0
- package/icons/heroicons/c-arrows-pointing-in.svg +3 -0
- package/icons/heroicons/c-arrows-pointing-out.svg +3 -0
- package/icons/heroicons/c-arrows-right-left.svg +3 -0
- package/icons/heroicons/c-arrows-up-down.svg +3 -0
- package/icons/heroicons/c-at-symbol.svg +3 -0
- package/icons/heroicons/c-backspace.svg +3 -0
- package/icons/heroicons/c-backward.svg +3 -0
- package/icons/heroicons/c-banknotes.svg +4 -0
- package/icons/heroicons/c-bars-2.svg +3 -0
- package/icons/heroicons/c-bars-3-bottom-left.svg +3 -0
- package/icons/heroicons/c-bars-3-bottom-right.svg +3 -0
- package/icons/heroicons/c-bars-3-center-left.svg +3 -0
- package/icons/heroicons/c-bars-3.svg +3 -0
- package/icons/heroicons/c-bars-4.svg +3 -0
- package/icons/heroicons/c-bars-arrow-down.svg +3 -0
- package/icons/heroicons/c-bars-arrow-up.svg +3 -0
- package/icons/heroicons/c-battery-0.svg +3 -0
- package/icons/heroicons/c-battery-100.svg +4 -0
- package/icons/heroicons/c-battery-50.svg +4 -0
- package/icons/heroicons/c-beaker.svg +3 -0
- package/icons/heroicons/c-bell-alert.svg +4 -0
- package/icons/heroicons/c-bell-slash.svg +4 -0
- package/icons/heroicons/c-bell-snooze.svg +3 -0
- package/icons/heroicons/c-bell.svg +3 -0
- package/icons/heroicons/c-bold.svg +3 -0
- package/icons/heroicons/c-bolt-slash.svg +3 -0
- package/icons/heroicons/c-bolt.svg +3 -0
- package/icons/heroicons/c-book-open.svg +3 -0
- package/icons/heroicons/c-bookmark-slash.svg +3 -0
- package/icons/heroicons/c-bookmark-square.svg +3 -0
- package/icons/heroicons/c-bookmark.svg +3 -0
- package/icons/heroicons/c-briefcase.svg +4 -0
- package/icons/heroicons/c-bug-ant.svg +3 -0
- package/icons/heroicons/c-building-library.svg +3 -0
- package/icons/heroicons/c-building-office-2.svg +3 -0
- package/icons/heroicons/c-building-office.svg +3 -0
- package/icons/heroicons/c-building-storefront.svg +3 -0
- package/icons/heroicons/c-cake.svg +3 -0
- package/icons/heroicons/c-calculator.svg +3 -0
- package/icons/heroicons/c-calendar-date-range.svg +4 -0
- package/icons/heroicons/c-calendar-days.svg +4 -0
- package/icons/heroicons/c-calendar.svg +3 -0
- package/icons/heroicons/c-camera.svg +4 -0
- package/icons/heroicons/c-chart-bar-square.svg +3 -0
- package/icons/heroicons/c-chart-bar.svg +3 -0
- package/icons/heroicons/c-chart-pie.svg +4 -0
- package/icons/heroicons/c-chat-bubble-bottom-center-text.svg +3 -0
- package/icons/heroicons/c-chat-bubble-bottom-center.svg +3 -0
- package/icons/heroicons/c-chat-bubble-left-ellipsis.svg +3 -0
- package/icons/heroicons/c-chat-bubble-left-right.svg +4 -0
- package/icons/heroicons/c-chat-bubble-left.svg +3 -0
- package/icons/heroicons/c-chat-bubble-oval-left-ellipsis.svg +3 -0
- package/icons/heroicons/c-chat-bubble-oval-left.svg +3 -0
- package/icons/heroicons/c-check-badge.svg +3 -0
- package/icons/heroicons/c-check-circle.svg +3 -0
- package/icons/heroicons/c-check.svg +3 -0
- package/icons/heroicons/c-chevron-double-down.svg +3 -0
- package/icons/heroicons/c-chevron-double-left.svg +3 -0
- package/icons/heroicons/c-chevron-double-right.svg +3 -0
- package/icons/heroicons/c-chevron-double-up.svg +3 -0
- package/icons/heroicons/c-chevron-down.svg +3 -0
- package/icons/heroicons/c-chevron-left.svg +3 -0
- package/icons/heroicons/c-chevron-right.svg +3 -0
- package/icons/heroicons/c-chevron-up-down.svg +3 -0
- package/icons/heroicons/c-chevron-up.svg +3 -0
- package/icons/heroicons/c-circle-stack.svg +5 -0
- package/icons/heroicons/c-clipboard-document-check.svg +4 -0
- package/icons/heroicons/c-clipboard-document-list.svg +4 -0
- package/icons/heroicons/c-clipboard-document.svg +4 -0
- package/icons/heroicons/c-clipboard.svg +3 -0
- package/icons/heroicons/c-clock.svg +3 -0
- package/icons/heroicons/c-cloud-arrow-down.svg +3 -0
- package/icons/heroicons/c-cloud-arrow-up.svg +3 -0
- package/icons/heroicons/c-cloud.svg +3 -0
- package/icons/heroicons/c-code-bracket-square.svg +3 -0
- package/icons/heroicons/c-code-bracket.svg +3 -0
- package/icons/heroicons/c-cog-6-tooth.svg +3 -0
- package/icons/heroicons/c-cog-8-tooth.svg +3 -0
- package/icons/heroicons/c-cog.svg +3 -0
- package/icons/heroicons/c-command-line.svg +3 -0
- package/icons/heroicons/c-computer-desktop.svg +3 -0
- package/icons/heroicons/c-cpu-chip.svg +4 -0
- package/icons/heroicons/c-credit-card.svg +4 -0
- package/icons/heroicons/c-cube-transparent.svg +3 -0
- package/icons/heroicons/c-cube.svg +3 -0
- package/icons/heroicons/c-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/c-currency-dollar.svg +4 -0
- package/icons/heroicons/c-currency-euro.svg +3 -0
- package/icons/heroicons/c-currency-pound.svg +3 -0
- package/icons/heroicons/c-currency-rupee.svg +3 -0
- package/icons/heroicons/c-currency-yen.svg +3 -0
- package/icons/heroicons/c-cursor-arrow-rays.svg +3 -0
- package/icons/heroicons/c-cursor-arrow-ripple.svg +5 -0
- package/icons/heroicons/c-device-phone-mobile.svg +4 -0
- package/icons/heroicons/c-device-tablet.svg +4 -0
- package/icons/heroicons/c-divide.svg +4 -0
- package/icons/heroicons/c-document-arrow-down.svg +3 -0
- package/icons/heroicons/c-document-arrow-up.svg +3 -0
- package/icons/heroicons/c-document-chart-bar.svg +3 -0
- package/icons/heroicons/c-document-check.svg +3 -0
- package/icons/heroicons/c-document-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/c-document-currency-dollar.svg +4 -0
- package/icons/heroicons/c-document-currency-euro.svg +3 -0
- package/icons/heroicons/c-document-currency-pound.svg +3 -0
- package/icons/heroicons/c-document-currency-rupee.svg +3 -0
- package/icons/heroicons/c-document-currency-yen.svg +3 -0
- package/icons/heroicons/c-document-duplicate.svg +4 -0
- package/icons/heroicons/c-document-magnifying-glass.svg +4 -0
- package/icons/heroicons/c-document-minus.svg +3 -0
- package/icons/heroicons/c-document-plus.svg +3 -0
- package/icons/heroicons/c-document-text.svg +3 -0
- package/icons/heroicons/c-document.svg +3 -0
- package/icons/heroicons/c-ellipsis-horizontal-circle.svg +3 -0
- package/icons/heroicons/c-ellipsis-horizontal.svg +3 -0
- package/icons/heroicons/c-ellipsis-vertical.svg +3 -0
- package/icons/heroicons/c-envelope-open.svg +3 -0
- package/icons/heroicons/c-envelope.svg +4 -0
- package/icons/heroicons/c-equals.svg +3 -0
- package/icons/heroicons/c-exclamation-circle.svg +3 -0
- package/icons/heroicons/c-exclamation-triangle.svg +3 -0
- package/icons/heroicons/c-eye-dropper.svg +3 -0
- package/icons/heroicons/c-eye-slash.svg +4 -0
- package/icons/heroicons/c-eye.svg +4 -0
- package/icons/heroicons/c-face-frown.svg +3 -0
- package/icons/heroicons/c-face-smile.svg +3 -0
- package/icons/heroicons/c-film.svg +3 -0
- package/icons/heroicons/c-finger-print.svg +3 -0
- package/icons/heroicons/c-fire.svg +3 -0
- package/icons/heroicons/c-flag.svg +3 -0
- package/icons/heroicons/c-folder-arrow-down.svg +3 -0
- package/icons/heroicons/c-folder-minus.svg +3 -0
- package/icons/heroicons/c-folder-open.svg +3 -0
- package/icons/heroicons/c-folder-plus.svg +3 -0
- package/icons/heroicons/c-folder.svg +3 -0
- package/icons/heroicons/c-forward.svg +3 -0
- package/icons/heroicons/c-funnel.svg +3 -0
- package/icons/heroicons/c-gif.svg +3 -0
- package/icons/heroicons/c-gift-top.svg +4 -0
- package/icons/heroicons/c-gift.svg +4 -0
- package/icons/heroicons/c-globe-alt.svg +3 -0
- package/icons/heroicons/c-globe-americas.svg +3 -0
- package/icons/heroicons/c-globe-asia-australia.svg +3 -0
- package/icons/heroicons/c-globe-europe-africa.svg +3 -0
- package/icons/heroicons/c-h1.svg +3 -0
- package/icons/heroicons/c-h2.svg +3 -0
- package/icons/heroicons/c-h3.svg +3 -0
- package/icons/heroicons/c-hand-raised.svg +3 -0
- package/icons/heroicons/c-hand-thumb-down.svg +3 -0
- package/icons/heroicons/c-hand-thumb-up.svg +3 -0
- package/icons/heroicons/c-hashtag.svg +3 -0
- package/icons/heroicons/c-heart.svg +3 -0
- package/icons/heroicons/c-home-modern.svg +3 -0
- package/icons/heroicons/c-home.svg +3 -0
- package/icons/heroicons/c-identification.svg +3 -0
- package/icons/heroicons/c-inbox-arrow-down.svg +4 -0
- package/icons/heroicons/c-inbox-stack.svg +4 -0
- package/icons/heroicons/c-inbox.svg +3 -0
- package/icons/heroicons/c-information-circle.svg +3 -0
- package/icons/heroicons/c-italic.svg +3 -0
- package/icons/heroicons/c-key.svg +3 -0
- package/icons/heroicons/c-language.svg +3 -0
- package/icons/heroicons/c-lifebuoy.svg +3 -0
- package/icons/heroicons/c-light-bulb.svg +3 -0
- package/icons/heroicons/c-link-slash.svg +3 -0
- package/icons/heroicons/c-link.svg +4 -0
- package/icons/heroicons/c-list-bullet.svg +3 -0
- package/icons/heroicons/c-lock-closed.svg +3 -0
- package/icons/heroicons/c-lock-open.svg +3 -0
- package/icons/heroicons/c-magnifying-glass-circle.svg +4 -0
- package/icons/heroicons/c-magnifying-glass-minus.svg +4 -0
- package/icons/heroicons/c-magnifying-glass-plus.svg +4 -0
- package/icons/heroicons/c-magnifying-glass.svg +3 -0
- package/icons/heroicons/c-map-pin.svg +3 -0
- package/icons/heroicons/c-map.svg +3 -0
- package/icons/heroicons/c-megaphone.svg +3 -0
- package/icons/heroicons/c-microphone.svg +4 -0
- package/icons/heroicons/c-minus-circle.svg +3 -0
- package/icons/heroicons/c-minus.svg +3 -0
- package/icons/heroicons/c-moon.svg +3 -0
- package/icons/heroicons/c-musical-note.svg +3 -0
- package/icons/heroicons/c-newspaper.svg +4 -0
- package/icons/heroicons/c-no-symbol.svg +3 -0
- package/icons/heroicons/c-numbered-list.svg +3 -0
- package/icons/heroicons/c-paint-brush.svg +3 -0
- package/icons/heroicons/c-paper-airplane.svg +3 -0
- package/icons/heroicons/c-paper-clip.svg +3 -0
- package/icons/heroicons/c-pause-circle.svg +3 -0
- package/icons/heroicons/c-pause.svg +3 -0
- package/icons/heroicons/c-pencil-square.svg +4 -0
- package/icons/heroicons/c-pencil.svg +3 -0
- package/icons/heroicons/c-percent-badge.svg +3 -0
- package/icons/heroicons/c-phone-arrow-down-left.svg +4 -0
- package/icons/heroicons/c-phone-arrow-up-right.svg +4 -0
- package/icons/heroicons/c-phone-x-mark.svg +4 -0
- package/icons/heroicons/c-phone.svg +3 -0
- package/icons/heroicons/c-photo.svg +3 -0
- package/icons/heroicons/c-play-circle.svg +3 -0
- package/icons/heroicons/c-play-pause.svg +3 -0
- package/icons/heroicons/c-play.svg +3 -0
- package/icons/heroicons/c-plus-circle.svg +3 -0
- package/icons/heroicons/c-plus.svg +3 -0
- package/icons/heroicons/c-power.svg +3 -0
- package/icons/heroicons/c-presentation-chart-bar.svg +3 -0
- package/icons/heroicons/c-presentation-chart-line.svg +3 -0
- package/icons/heroicons/c-printer.svg +3 -0
- package/icons/heroicons/c-puzzle-piece.svg +3 -0
- package/icons/heroicons/c-qr-code.svg +9 -0
- package/icons/heroicons/c-question-mark-circle.svg +3 -0
- package/icons/heroicons/c-queue-list.svg +3 -0
- package/icons/heroicons/c-radio.svg +3 -0
- package/icons/heroicons/c-receipt-percent.svg +3 -0
- package/icons/heroicons/c-receipt-refund.svg +3 -0
- package/icons/heroicons/c-rectangle-group.svg +3 -0
- package/icons/heroicons/c-rectangle-stack.svg +3 -0
- package/icons/heroicons/c-rocket-launch.svg +4 -0
- package/icons/heroicons/c-rss.svg +3 -0
- package/icons/heroicons/c-scale.svg +3 -0
- package/icons/heroicons/c-scissors.svg +4 -0
- package/icons/heroicons/c-server-stack.svg +4 -0
- package/icons/heroicons/c-server.svg +4 -0
- package/icons/heroicons/c-share.svg +3 -0
- package/icons/heroicons/c-shield-check.svg +3 -0
- package/icons/heroicons/c-shield-exclamation.svg +3 -0
- package/icons/heroicons/c-shopping-bag.svg +3 -0
- package/icons/heroicons/c-shopping-cart.svg +3 -0
- package/icons/heroicons/c-signal-slash.svg +3 -0
- package/icons/heroicons/c-signal.svg +5 -0
- package/icons/heroicons/c-slash.svg +3 -0
- package/icons/heroicons/c-sparkles.svg +3 -0
- package/icons/heroicons/c-speaker-wave.svg +4 -0
- package/icons/heroicons/c-speaker-x-mark.svg +3 -0
- package/icons/heroicons/c-square-2-stack.svg +4 -0
- package/icons/heroicons/c-square-3-stack-3d.svg +5 -0
- package/icons/heroicons/c-squares-2x2.svg +3 -0
- package/icons/heroicons/c-squares-plus.svg +3 -0
- package/icons/heroicons/c-star.svg +3 -0
- package/icons/heroicons/c-stop-circle.svg +3 -0
- package/icons/heroicons/c-stop.svg +3 -0
- package/icons/heroicons/c-strikethrough.svg +3 -0
- package/icons/heroicons/c-sun.svg +3 -0
- package/icons/heroicons/c-swatch.svg +4 -0
- package/icons/heroicons/c-table-cells.svg +3 -0
- package/icons/heroicons/c-tag.svg +3 -0
- package/icons/heroicons/c-ticket.svg +3 -0
- package/icons/heroicons/c-trash.svg +3 -0
- package/icons/heroicons/c-trophy.svg +3 -0
- package/icons/heroicons/c-truck.svg +5 -0
- package/icons/heroicons/c-tv.svg +4 -0
- package/icons/heroicons/c-underline.svg +3 -0
- package/icons/heroicons/c-user-circle.svg +3 -0
- package/icons/heroicons/c-user-group.svg +3 -0
- package/icons/heroicons/c-user-minus.svg +3 -0
- package/icons/heroicons/c-user-plus.svg +3 -0
- package/icons/heroicons/c-user.svg +3 -0
- package/icons/heroicons/c-users.svg +3 -0
- package/icons/heroicons/c-variable.svg +3 -0
- package/icons/heroicons/c-video-camera-slash.svg +3 -0
- package/icons/heroicons/c-video-camera.svg +3 -0
- package/icons/heroicons/c-view-columns.svg +3 -0
- package/icons/heroicons/c-viewfinder-circle.svg +3 -0
- package/icons/heroicons/c-wallet.svg +3 -0
- package/icons/heroicons/c-wifi.svg +3 -0
- package/icons/heroicons/c-window.svg +3 -0
- package/icons/heroicons/c-wrench-screwdriver.svg +4 -0
- package/icons/heroicons/c-wrench.svg +3 -0
- package/icons/heroicons/c-x-circle.svg +3 -0
- package/icons/heroicons/c-x-mark.svg +3 -0
- package/icons/heroicons/m-academic-cap.svg +3 -0
- package/icons/heroicons/m-adjustments-horizontal.svg +3 -0
- package/icons/heroicons/m-adjustments-vertical.svg +3 -0
- package/icons/heroicons/m-archive-box-arrow-down.svg +3 -0
- package/icons/heroicons/m-archive-box-x-mark.svg +4 -0
- package/icons/heroicons/m-archive-box.svg +4 -0
- package/icons/heroicons/m-arrow-down-circle.svg +3 -0
- package/icons/heroicons/m-arrow-down-left.svg +3 -0
- package/icons/heroicons/m-arrow-down-on-square-stack.svg +3 -0
- package/icons/heroicons/m-arrow-down-on-square.svg +3 -0
- package/icons/heroicons/m-arrow-down-right.svg +3 -0
- package/icons/heroicons/m-arrow-down-tray.svg +4 -0
- package/icons/heroicons/m-arrow-down.svg +3 -0
- package/icons/heroicons/m-arrow-left-circle.svg +3 -0
- package/icons/heroicons/m-arrow-left-end-on-rectangle.svg +4 -0
- package/icons/heroicons/m-arrow-left-on-rectangle.svg +4 -0
- package/icons/heroicons/m-arrow-left-start-on-rectangle.svg +4 -0
- package/icons/heroicons/m-arrow-left.svg +3 -0
- package/icons/heroicons/m-arrow-long-down.svg +3 -0
- package/icons/heroicons/m-arrow-long-left.svg +3 -0
- package/icons/heroicons/m-arrow-long-right.svg +3 -0
- package/icons/heroicons/m-arrow-long-up.svg +3 -0
- package/icons/heroicons/m-arrow-path-rounded-square.svg +3 -0
- package/icons/heroicons/m-arrow-path.svg +3 -0
- package/icons/heroicons/m-arrow-right-circle.svg +3 -0
- package/icons/heroicons/m-arrow-right-end-on-rectangle.svg +4 -0
- package/icons/heroicons/m-arrow-right-on-rectangle.svg +4 -0
- package/icons/heroicons/m-arrow-right-start-on-rectangle.svg +4 -0
- package/icons/heroicons/m-arrow-right.svg +3 -0
- package/icons/heroicons/m-arrow-small-down.svg +3 -0
- package/icons/heroicons/m-arrow-small-left.svg +3 -0
- package/icons/heroicons/m-arrow-small-right.svg +3 -0
- package/icons/heroicons/m-arrow-small-up.svg +3 -0
- package/icons/heroicons/m-arrow-top-right-on-square.svg +4 -0
- package/icons/heroicons/m-arrow-trending-down.svg +3 -0
- package/icons/heroicons/m-arrow-trending-up.svg +3 -0
- package/icons/heroicons/m-arrow-turn-down-left.svg +3 -0
- package/icons/heroicons/m-arrow-turn-down-right.svg +3 -0
- package/icons/heroicons/m-arrow-turn-left-down.svg +3 -0
- package/icons/heroicons/m-arrow-turn-left-up.svg +3 -0
- package/icons/heroicons/m-arrow-turn-right-down.svg +3 -0
- package/icons/heroicons/m-arrow-turn-right-up.svg +3 -0
- package/icons/heroicons/m-arrow-turn-up-left.svg +3 -0
- package/icons/heroicons/m-arrow-turn-up-right.svg +3 -0
- package/icons/heroicons/m-arrow-up-circle.svg +3 -0
- package/icons/heroicons/m-arrow-up-left.svg +3 -0
- package/icons/heroicons/m-arrow-up-on-square-stack.svg +3 -0
- package/icons/heroicons/m-arrow-up-on-square.svg +3 -0
- package/icons/heroicons/m-arrow-up-right.svg +3 -0
- package/icons/heroicons/m-arrow-up-tray.svg +4 -0
- package/icons/heroicons/m-arrow-up.svg +3 -0
- package/icons/heroicons/m-arrow-uturn-down.svg +3 -0
- package/icons/heroicons/m-arrow-uturn-left.svg +3 -0
- package/icons/heroicons/m-arrow-uturn-right.svg +3 -0
- package/icons/heroicons/m-arrow-uturn-up.svg +3 -0
- package/icons/heroicons/m-arrows-pointing-in.svg +3 -0
- package/icons/heroicons/m-arrows-pointing-out.svg +3 -0
- package/icons/heroicons/m-arrows-right-left.svg +3 -0
- package/icons/heroicons/m-arrows-up-down.svg +3 -0
- package/icons/heroicons/m-at-symbol.svg +3 -0
- package/icons/heroicons/m-backspace.svg +3 -0
- package/icons/heroicons/m-backward.svg +3 -0
- package/icons/heroicons/m-banknotes.svg +3 -0
- package/icons/heroicons/m-bars-2.svg +3 -0
- package/icons/heroicons/m-bars-3-bottom-left.svg +3 -0
- package/icons/heroicons/m-bars-3-bottom-right.svg +3 -0
- package/icons/heroicons/m-bars-3-center-left.svg +3 -0
- package/icons/heroicons/m-bars-3.svg +3 -0
- package/icons/heroicons/m-bars-4.svg +3 -0
- package/icons/heroicons/m-bars-arrow-down.svg +3 -0
- package/icons/heroicons/m-bars-arrow-up.svg +3 -0
- package/icons/heroicons/m-battery-0.svg +3 -0
- package/icons/heroicons/m-battery-100.svg +4 -0
- package/icons/heroicons/m-battery-50.svg +4 -0
- package/icons/heroicons/m-beaker.svg +3 -0
- package/icons/heroicons/m-bell-alert.svg +4 -0
- package/icons/heroicons/m-bell-slash.svg +3 -0
- package/icons/heroicons/m-bell-snooze.svg +3 -0
- package/icons/heroicons/m-bell.svg +3 -0
- package/icons/heroicons/m-bold.svg +3 -0
- package/icons/heroicons/m-bolt-slash.svg +4 -0
- package/icons/heroicons/m-bolt.svg +3 -0
- package/icons/heroicons/m-book-open.svg +3 -0
- package/icons/heroicons/m-bookmark-slash.svg +3 -0
- package/icons/heroicons/m-bookmark-square.svg +3 -0
- package/icons/heroicons/m-bookmark.svg +3 -0
- package/icons/heroicons/m-briefcase.svg +4 -0
- package/icons/heroicons/m-bug-ant.svg +3 -0
- package/icons/heroicons/m-building-library.svg +3 -0
- package/icons/heroicons/m-building-office-2.svg +3 -0
- package/icons/heroicons/m-building-office.svg +3 -0
- package/icons/heroicons/m-building-storefront.svg +3 -0
- package/icons/heroicons/m-cake.svg +3 -0
- package/icons/heroicons/m-calculator.svg +3 -0
- package/icons/heroicons/m-calendar-date-range.svg +4 -0
- package/icons/heroicons/m-calendar-days.svg +4 -0
- package/icons/heroicons/m-calendar.svg +3 -0
- package/icons/heroicons/m-camera.svg +3 -0
- package/icons/heroicons/m-chart-bar-square.svg +3 -0
- package/icons/heroicons/m-chart-bar.svg +3 -0
- package/icons/heroicons/m-chart-pie.svg +4 -0
- package/icons/heroicons/m-chat-bubble-bottom-center-text.svg +3 -0
- package/icons/heroicons/m-chat-bubble-bottom-center.svg +3 -0
- package/icons/heroicons/m-chat-bubble-left-ellipsis.svg +3 -0
- package/icons/heroicons/m-chat-bubble-left-right.svg +4 -0
- package/icons/heroicons/m-chat-bubble-left.svg +3 -0
- package/icons/heroicons/m-chat-bubble-oval-left-ellipsis.svg +3 -0
- package/icons/heroicons/m-chat-bubble-oval-left.svg +3 -0
- package/icons/heroicons/m-check-badge.svg +3 -0
- package/icons/heroicons/m-check-circle.svg +3 -0
- package/icons/heroicons/m-check.svg +3 -0
- package/icons/heroicons/m-chevron-double-down.svg +3 -0
- package/icons/heroicons/m-chevron-double-left.svg +3 -0
- package/icons/heroicons/m-chevron-double-right.svg +3 -0
- package/icons/heroicons/m-chevron-double-up.svg +3 -0
- package/icons/heroicons/m-chevron-down.svg +3 -0
- package/icons/heroicons/m-chevron-left.svg +3 -0
- package/icons/heroicons/m-chevron-right.svg +3 -0
- package/icons/heroicons/m-chevron-up-down.svg +3 -0
- package/icons/heroicons/m-chevron-up.svg +3 -0
- package/icons/heroicons/m-circle-stack.svg +3 -0
- package/icons/heroicons/m-clipboard-document-check.svg +4 -0
- package/icons/heroicons/m-clipboard-document-list.svg +4 -0
- package/icons/heroicons/m-clipboard-document.svg +4 -0
- package/icons/heroicons/m-clipboard.svg +3 -0
- package/icons/heroicons/m-clock.svg +3 -0
- package/icons/heroicons/m-cloud-arrow-down.svg +3 -0
- package/icons/heroicons/m-cloud-arrow-up.svg +3 -0
- package/icons/heroicons/m-cloud.svg +3 -0
- package/icons/heroicons/m-code-bracket-square.svg +3 -0
- package/icons/heroicons/m-code-bracket.svg +3 -0
- package/icons/heroicons/m-cog-6-tooth.svg +3 -0
- package/icons/heroicons/m-cog-8-tooth.svg +3 -0
- package/icons/heroicons/m-cog.svg +4 -0
- package/icons/heroicons/m-command-line.svg +3 -0
- package/icons/heroicons/m-computer-desktop.svg +3 -0
- package/icons/heroicons/m-cpu-chip.svg +4 -0
- package/icons/heroicons/m-credit-card.svg +3 -0
- package/icons/heroicons/m-cube-transparent.svg +3 -0
- package/icons/heroicons/m-cube.svg +3 -0
- package/icons/heroicons/m-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/m-currency-dollar.svg +4 -0
- package/icons/heroicons/m-currency-euro.svg +3 -0
- package/icons/heroicons/m-currency-pound.svg +3 -0
- package/icons/heroicons/m-currency-rupee.svg +3 -0
- package/icons/heroicons/m-currency-yen.svg +3 -0
- package/icons/heroicons/m-cursor-arrow-rays.svg +3 -0
- package/icons/heroicons/m-cursor-arrow-ripple.svg +5 -0
- package/icons/heroicons/m-device-phone-mobile.svg +4 -0
- package/icons/heroicons/m-device-tablet.svg +3 -0
- package/icons/heroicons/m-divide.svg +3 -0
- package/icons/heroicons/m-document-arrow-down.svg +3 -0
- package/icons/heroicons/m-document-arrow-up.svg +3 -0
- package/icons/heroicons/m-document-chart-bar.svg +3 -0
- package/icons/heroicons/m-document-check.svg +3 -0
- package/icons/heroicons/m-document-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/m-document-currency-dollar.svg +3 -0
- package/icons/heroicons/m-document-currency-euro.svg +3 -0
- package/icons/heroicons/m-document-currency-pound.svg +3 -0
- package/icons/heroicons/m-document-currency-rupee.svg +3 -0
- package/icons/heroicons/m-document-currency-yen.svg +3 -0
- package/icons/heroicons/m-document-duplicate.svg +4 -0
- package/icons/heroicons/m-document-magnifying-glass.svg +4 -0
- package/icons/heroicons/m-document-minus.svg +3 -0
- package/icons/heroicons/m-document-plus.svg +3 -0
- package/icons/heroicons/m-document-text.svg +3 -0
- package/icons/heroicons/m-document.svg +3 -0
- package/icons/heroicons/m-ellipsis-horizontal-circle.svg +3 -0
- package/icons/heroicons/m-ellipsis-horizontal.svg +3 -0
- package/icons/heroicons/m-ellipsis-vertical.svg +3 -0
- package/icons/heroicons/m-envelope-open.svg +3 -0
- package/icons/heroicons/m-envelope.svg +4 -0
- package/icons/heroicons/m-equals.svg +3 -0
- package/icons/heroicons/m-exclamation-circle.svg +3 -0
- package/icons/heroicons/m-exclamation-triangle.svg +3 -0
- package/icons/heroicons/m-eye-dropper.svg +3 -0
- package/icons/heroicons/m-eye-slash.svg +4 -0
- package/icons/heroicons/m-eye.svg +4 -0
- package/icons/heroicons/m-face-frown.svg +3 -0
- package/icons/heroicons/m-face-smile.svg +3 -0
- package/icons/heroicons/m-film.svg +3 -0
- package/icons/heroicons/m-finger-print.svg +3 -0
- package/icons/heroicons/m-fire.svg +3 -0
- package/icons/heroicons/m-flag.svg +3 -0
- package/icons/heroicons/m-folder-arrow-down.svg +3 -0
- package/icons/heroicons/m-folder-minus.svg +3 -0
- package/icons/heroicons/m-folder-open.svg +3 -0
- package/icons/heroicons/m-folder-plus.svg +3 -0
- package/icons/heroicons/m-folder.svg +3 -0
- package/icons/heroicons/m-forward.svg +3 -0
- package/icons/heroicons/m-funnel.svg +3 -0
- package/icons/heroicons/m-gif.svg +3 -0
- package/icons/heroicons/m-gift-top.svg +3 -0
- package/icons/heroicons/m-gift.svg +4 -0
- package/icons/heroicons/m-globe-alt.svg +3 -0
- package/icons/heroicons/m-globe-americas.svg +3 -0
- package/icons/heroicons/m-globe-asia-australia.svg +3 -0
- package/icons/heroicons/m-globe-europe-africa.svg +3 -0
- package/icons/heroicons/m-h1.svg +3 -0
- package/icons/heroicons/m-h2.svg +3 -0
- package/icons/heroicons/m-h3.svg +3 -0
- package/icons/heroicons/m-hand-raised.svg +3 -0
- package/icons/heroicons/m-hand-thumb-down.svg +3 -0
- package/icons/heroicons/m-hand-thumb-up.svg +3 -0
- package/icons/heroicons/m-hashtag.svg +3 -0
- package/icons/heroicons/m-heart.svg +3 -0
- package/icons/heroicons/m-home-modern.svg +3 -0
- package/icons/heroicons/m-home.svg +3 -0
- package/icons/heroicons/m-identification.svg +3 -0
- package/icons/heroicons/m-inbox-arrow-down.svg +4 -0
- package/icons/heroicons/m-inbox-stack.svg +4 -0
- package/icons/heroicons/m-inbox.svg +3 -0
- package/icons/heroicons/m-information-circle.svg +3 -0
- package/icons/heroicons/m-italic.svg +3 -0
- package/icons/heroicons/m-key.svg +3 -0
- package/icons/heroicons/m-language.svg +4 -0
- package/icons/heroicons/m-lifebuoy.svg +3 -0
- package/icons/heroicons/m-light-bulb.svg +3 -0
- package/icons/heroicons/m-link-slash.svg +3 -0
- package/icons/heroicons/m-link.svg +4 -0
- package/icons/heroicons/m-list-bullet.svg +3 -0
- package/icons/heroicons/m-lock-closed.svg +3 -0
- package/icons/heroicons/m-lock-open.svg +3 -0
- package/icons/heroicons/m-magnifying-glass-circle.svg +4 -0
- package/icons/heroicons/m-magnifying-glass-minus.svg +4 -0
- package/icons/heroicons/m-magnifying-glass-plus.svg +4 -0
- package/icons/heroicons/m-magnifying-glass.svg +3 -0
- package/icons/heroicons/m-map-pin.svg +3 -0
- package/icons/heroicons/m-map.svg +3 -0
- package/icons/heroicons/m-megaphone.svg +3 -0
- package/icons/heroicons/m-microphone.svg +4 -0
- package/icons/heroicons/m-minus-circle.svg +3 -0
- package/icons/heroicons/m-minus-small.svg +3 -0
- package/icons/heroicons/m-minus.svg +3 -0
- package/icons/heroicons/m-moon.svg +3 -0
- package/icons/heroicons/m-musical-note.svg +3 -0
- package/icons/heroicons/m-newspaper.svg +4 -0
- package/icons/heroicons/m-no-symbol.svg +3 -0
- package/icons/heroicons/m-numbered-list.svg +3 -0
- package/icons/heroicons/m-paint-brush.svg +3 -0
- package/icons/heroicons/m-paper-airplane.svg +3 -0
- package/icons/heroicons/m-paper-clip.svg +3 -0
- package/icons/heroicons/m-pause-circle.svg +3 -0
- package/icons/heroicons/m-pause.svg +3 -0
- package/icons/heroicons/m-pencil-square.svg +4 -0
- package/icons/heroicons/m-pencil.svg +3 -0
- package/icons/heroicons/m-percent-badge.svg +3 -0
- package/icons/heroicons/m-phone-arrow-down-left.svg +3 -0
- package/icons/heroicons/m-phone-arrow-up-right.svg +3 -0
- package/icons/heroicons/m-phone-x-mark.svg +3 -0
- package/icons/heroicons/m-phone.svg +3 -0
- package/icons/heroicons/m-photo.svg +3 -0
- package/icons/heroicons/m-play-circle.svg +3 -0
- package/icons/heroicons/m-play-pause.svg +3 -0
- package/icons/heroicons/m-play.svg +3 -0
- package/icons/heroicons/m-plus-circle.svg +3 -0
- package/icons/heroicons/m-plus-small.svg +3 -0
- package/icons/heroicons/m-plus.svg +3 -0
- package/icons/heroicons/m-power.svg +3 -0
- package/icons/heroicons/m-presentation-chart-bar.svg +3 -0
- package/icons/heroicons/m-presentation-chart-line.svg +3 -0
- package/icons/heroicons/m-printer.svg +3 -0
- package/icons/heroicons/m-puzzle-piece.svg +3 -0
- package/icons/heroicons/m-qr-code.svg +3 -0
- package/icons/heroicons/m-question-mark-circle.svg +3 -0
- package/icons/heroicons/m-queue-list.svg +3 -0
- package/icons/heroicons/m-radio.svg +3 -0
- package/icons/heroicons/m-receipt-percent.svg +3 -0
- package/icons/heroicons/m-receipt-refund.svg +3 -0
- package/icons/heroicons/m-rectangle-group.svg +3 -0
- package/icons/heroicons/m-rectangle-stack.svg +3 -0
- package/icons/heroicons/m-rocket-launch.svg +4 -0
- package/icons/heroicons/m-rss.svg +4 -0
- package/icons/heroicons/m-scale.svg +3 -0
- package/icons/heroicons/m-scissors.svg +4 -0
- package/icons/heroicons/m-server-stack.svg +4 -0
- package/icons/heroicons/m-server.svg +4 -0
- package/icons/heroicons/m-share.svg +3 -0
- package/icons/heroicons/m-shield-check.svg +3 -0
- package/icons/heroicons/m-shield-exclamation.svg +3 -0
- package/icons/heroicons/m-shopping-bag.svg +3 -0
- package/icons/heroicons/m-shopping-cart.svg +3 -0
- package/icons/heroicons/m-signal-slash.svg +3 -0
- package/icons/heroicons/m-signal.svg +4 -0
- package/icons/heroicons/m-slash.svg +3 -0
- package/icons/heroicons/m-sparkles.svg +3 -0
- package/icons/heroicons/m-speaker-wave.svg +4 -0
- package/icons/heroicons/m-speaker-x-mark.svg +3 -0
- package/icons/heroicons/m-square-2-stack.svg +4 -0
- package/icons/heroicons/m-square-3-stack-3d.svg +5 -0
- package/icons/heroicons/m-squares-2x2.svg +3 -0
- package/icons/heroicons/m-squares-plus.svg +3 -0
- package/icons/heroicons/m-star.svg +3 -0
- package/icons/heroicons/m-stop-circle.svg +3 -0
- package/icons/heroicons/m-stop.svg +3 -0
- package/icons/heroicons/m-strikethrough.svg +3 -0
- package/icons/heroicons/m-sun.svg +3 -0
- package/icons/heroicons/m-swatch.svg +3 -0
- package/icons/heroicons/m-table-cells.svg +3 -0
- package/icons/heroicons/m-tag.svg +3 -0
- package/icons/heroicons/m-ticket.svg +3 -0
- package/icons/heroicons/m-trash.svg +3 -0
- package/icons/heroicons/m-trophy.svg +3 -0
- package/icons/heroicons/m-truck.svg +4 -0
- package/icons/heroicons/m-tv.svg +4 -0
- package/icons/heroicons/m-underline.svg +3 -0
- package/icons/heroicons/m-user-circle.svg +3 -0
- package/icons/heroicons/m-user-group.svg +3 -0
- package/icons/heroicons/m-user-minus.svg +3 -0
- package/icons/heroicons/m-user-plus.svg +3 -0
- package/icons/heroicons/m-user.svg +3 -0
- package/icons/heroicons/m-users.svg +3 -0
- package/icons/heroicons/m-variable.svg +3 -0
- package/icons/heroicons/m-video-camera-slash.svg +3 -0
- package/icons/heroicons/m-video-camera.svg +3 -0
- package/icons/heroicons/m-view-columns.svg +3 -0
- package/icons/heroicons/m-viewfinder-circle.svg +3 -0
- package/icons/heroicons/m-wallet.svg +3 -0
- package/icons/heroicons/m-wifi.svg +3 -0
- package/icons/heroicons/m-window.svg +3 -0
- package/icons/heroicons/m-wrench-screwdriver.svg +4 -0
- package/icons/heroicons/m-wrench.svg +3 -0
- package/icons/heroicons/m-x-circle.svg +3 -0
- package/icons/heroicons/m-x-mark.svg +3 -0
- package/icons/heroicons/o-academic-cap.svg +3 -0
- package/icons/heroicons/o-adjustments-horizontal.svg +3 -0
- package/icons/heroicons/o-adjustments-vertical.svg +3 -0
- package/icons/heroicons/o-archive-box-arrow-down.svg +3 -0
- package/icons/heroicons/o-archive-box-x-mark.svg +3 -0
- package/icons/heroicons/o-archive-box.svg +3 -0
- package/icons/heroicons/o-arrow-down-circle.svg +3 -0
- package/icons/heroicons/o-arrow-down-left.svg +3 -0
- package/icons/heroicons/o-arrow-down-on-square-stack.svg +3 -0
- package/icons/heroicons/o-arrow-down-on-square.svg +3 -0
- package/icons/heroicons/o-arrow-down-right.svg +3 -0
- package/icons/heroicons/o-arrow-down-tray.svg +3 -0
- package/icons/heroicons/o-arrow-down.svg +3 -0
- package/icons/heroicons/o-arrow-left-circle.svg +3 -0
- package/icons/heroicons/o-arrow-left-end-on-rectangle.svg +3 -0
- package/icons/heroicons/o-arrow-left-on-rectangle.svg +3 -0
- package/icons/heroicons/o-arrow-left-start-on-rectangle.svg +3 -0
- package/icons/heroicons/o-arrow-left.svg +3 -0
- package/icons/heroicons/o-arrow-long-down.svg +3 -0
- package/icons/heroicons/o-arrow-long-left.svg +3 -0
- package/icons/heroicons/o-arrow-long-right.svg +3 -0
- package/icons/heroicons/o-arrow-long-up.svg +3 -0
- package/icons/heroicons/o-arrow-path-rounded-square.svg +3 -0
- package/icons/heroicons/o-arrow-path.svg +3 -0
- package/icons/heroicons/o-arrow-right-circle.svg +3 -0
- package/icons/heroicons/o-arrow-right-end-on-rectangle.svg +3 -0
- package/icons/heroicons/o-arrow-right-on-rectangle.svg +3 -0
- package/icons/heroicons/o-arrow-right-start-on-rectangle.svg +3 -0
- package/icons/heroicons/o-arrow-right.svg +3 -0
- package/icons/heroicons/o-arrow-small-down.svg +3 -0
- package/icons/heroicons/o-arrow-small-left.svg +3 -0
- package/icons/heroicons/o-arrow-small-right.svg +3 -0
- package/icons/heroicons/o-arrow-small-up.svg +3 -0
- package/icons/heroicons/o-arrow-top-right-on-square.svg +3 -0
- package/icons/heroicons/o-arrow-trending-down.svg +3 -0
- package/icons/heroicons/o-arrow-trending-up.svg +3 -0
- package/icons/heroicons/o-arrow-turn-down-left.svg +3 -0
- package/icons/heroicons/o-arrow-turn-down-right.svg +3 -0
- package/icons/heroicons/o-arrow-turn-left-down.svg +3 -0
- package/icons/heroicons/o-arrow-turn-left-up.svg +3 -0
- package/icons/heroicons/o-arrow-turn-right-down.svg +3 -0
- package/icons/heroicons/o-arrow-turn-right-up.svg +3 -0
- package/icons/heroicons/o-arrow-turn-up-left.svg +3 -0
- package/icons/heroicons/o-arrow-turn-up-right.svg +3 -0
- package/icons/heroicons/o-arrow-up-circle.svg +3 -0
- package/icons/heroicons/o-arrow-up-left.svg +3 -0
- package/icons/heroicons/o-arrow-up-on-square-stack.svg +3 -0
- package/icons/heroicons/o-arrow-up-on-square.svg +3 -0
- package/icons/heroicons/o-arrow-up-right.svg +3 -0
- package/icons/heroicons/o-arrow-up-tray.svg +3 -0
- package/icons/heroicons/o-arrow-up.svg +3 -0
- package/icons/heroicons/o-arrow-uturn-down.svg +3 -0
- package/icons/heroicons/o-arrow-uturn-left.svg +3 -0
- package/icons/heroicons/o-arrow-uturn-right.svg +3 -0
- package/icons/heroicons/o-arrow-uturn-up.svg +3 -0
- package/icons/heroicons/o-arrows-pointing-in.svg +3 -0
- package/icons/heroicons/o-arrows-pointing-out.svg +3 -0
- package/icons/heroicons/o-arrows-right-left.svg +3 -0
- package/icons/heroicons/o-arrows-up-down.svg +3 -0
- package/icons/heroicons/o-at-symbol.svg +3 -0
- package/icons/heroicons/o-backspace.svg +3 -0
- package/icons/heroicons/o-backward.svg +3 -0
- package/icons/heroicons/o-banknotes.svg +3 -0
- package/icons/heroicons/o-bars-2.svg +3 -0
- package/icons/heroicons/o-bars-3-bottom-left.svg +3 -0
- package/icons/heroicons/o-bars-3-bottom-right.svg +3 -0
- package/icons/heroicons/o-bars-3-center-left.svg +3 -0
- package/icons/heroicons/o-bars-3.svg +3 -0
- package/icons/heroicons/o-bars-4.svg +3 -0
- package/icons/heroicons/o-bars-arrow-down.svg +3 -0
- package/icons/heroicons/o-bars-arrow-up.svg +3 -0
- package/icons/heroicons/o-battery-0.svg +3 -0
- package/icons/heroicons/o-battery-100.svg +3 -0
- package/icons/heroicons/o-battery-50.svg +3 -0
- package/icons/heroicons/o-beaker.svg +3 -0
- package/icons/heroicons/o-bell-alert.svg +3 -0
- package/icons/heroicons/o-bell-slash.svg +3 -0
- package/icons/heroicons/o-bell-snooze.svg +3 -0
- package/icons/heroicons/o-bell.svg +3 -0
- package/icons/heroicons/o-bold.svg +3 -0
- package/icons/heroicons/o-bolt-slash.svg +3 -0
- package/icons/heroicons/o-bolt.svg +3 -0
- package/icons/heroicons/o-book-open.svg +3 -0
- package/icons/heroicons/o-bookmark-slash.svg +3 -0
- package/icons/heroicons/o-bookmark-square.svg +3 -0
- package/icons/heroicons/o-bookmark.svg +3 -0
- package/icons/heroicons/o-briefcase.svg +3 -0
- package/icons/heroicons/o-bug-ant.svg +3 -0
- package/icons/heroicons/o-building-library.svg +3 -0
- package/icons/heroicons/o-building-office-2.svg +3 -0
- package/icons/heroicons/o-building-office.svg +3 -0
- package/icons/heroicons/o-building-storefront.svg +3 -0
- package/icons/heroicons/o-cake.svg +3 -0
- package/icons/heroicons/o-calculator.svg +3 -0
- package/icons/heroicons/o-calendar-date-range.svg +3 -0
- package/icons/heroicons/o-calendar-days.svg +3 -0
- package/icons/heroicons/o-calendar.svg +3 -0
- package/icons/heroicons/o-camera.svg +4 -0
- package/icons/heroicons/o-chart-bar-square.svg +3 -0
- package/icons/heroicons/o-chart-bar.svg +3 -0
- package/icons/heroicons/o-chart-pie.svg +4 -0
- package/icons/heroicons/o-chat-bubble-bottom-center-text.svg +3 -0
- package/icons/heroicons/o-chat-bubble-bottom-center.svg +3 -0
- package/icons/heroicons/o-chat-bubble-left-ellipsis.svg +3 -0
- package/icons/heroicons/o-chat-bubble-left-right.svg +3 -0
- package/icons/heroicons/o-chat-bubble-left.svg +3 -0
- package/icons/heroicons/o-chat-bubble-oval-left-ellipsis.svg +3 -0
- package/icons/heroicons/o-chat-bubble-oval-left.svg +3 -0
- package/icons/heroicons/o-check-badge.svg +3 -0
- package/icons/heroicons/o-check-circle.svg +3 -0
- package/icons/heroicons/o-check.svg +3 -0
- package/icons/heroicons/o-chevron-double-down.svg +3 -0
- package/icons/heroicons/o-chevron-double-left.svg +3 -0
- package/icons/heroicons/o-chevron-double-right.svg +3 -0
- package/icons/heroicons/o-chevron-double-up.svg +4 -0
- package/icons/heroicons/o-chevron-down.svg +3 -0
- package/icons/heroicons/o-chevron-left.svg +3 -0
- package/icons/heroicons/o-chevron-right.svg +3 -0
- package/icons/heroicons/o-chevron-up-down.svg +3 -0
- package/icons/heroicons/o-chevron-up.svg +3 -0
- package/icons/heroicons/o-circle-stack.svg +3 -0
- package/icons/heroicons/o-clipboard-document-check.svg +3 -0
- package/icons/heroicons/o-clipboard-document-list.svg +3 -0
- package/icons/heroicons/o-clipboard-document.svg +3 -0
- package/icons/heroicons/o-clipboard.svg +3 -0
- package/icons/heroicons/o-clock.svg +3 -0
- package/icons/heroicons/o-cloud-arrow-down.svg +3 -0
- package/icons/heroicons/o-cloud-arrow-up.svg +3 -0
- package/icons/heroicons/o-cloud.svg +3 -0
- package/icons/heroicons/o-code-bracket-square.svg +3 -0
- package/icons/heroicons/o-code-bracket.svg +3 -0
- package/icons/heroicons/o-cog-6-tooth.svg +4 -0
- package/icons/heroicons/o-cog-8-tooth.svg +4 -0
- package/icons/heroicons/o-cog.svg +3 -0
- package/icons/heroicons/o-command-line.svg +3 -0
- package/icons/heroicons/o-computer-desktop.svg +3 -0
- package/icons/heroicons/o-cpu-chip.svg +3 -0
- package/icons/heroicons/o-credit-card.svg +3 -0
- package/icons/heroicons/o-cube-transparent.svg +3 -0
- package/icons/heroicons/o-cube.svg +3 -0
- package/icons/heroicons/o-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/o-currency-dollar.svg +3 -0
- package/icons/heroicons/o-currency-euro.svg +3 -0
- package/icons/heroicons/o-currency-pound.svg +3 -0
- package/icons/heroicons/o-currency-rupee.svg +3 -0
- package/icons/heroicons/o-currency-yen.svg +3 -0
- package/icons/heroicons/o-cursor-arrow-rays.svg +3 -0
- package/icons/heroicons/o-cursor-arrow-ripple.svg +3 -0
- package/icons/heroicons/o-device-phone-mobile.svg +3 -0
- package/icons/heroicons/o-device-tablet.svg +3 -0
- package/icons/heroicons/o-divide.svg +3 -0
- package/icons/heroicons/o-document-arrow-down.svg +3 -0
- package/icons/heroicons/o-document-arrow-up.svg +3 -0
- package/icons/heroicons/o-document-chart-bar.svg +3 -0
- package/icons/heroicons/o-document-check.svg +3 -0
- package/icons/heroicons/o-document-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/o-document-currency-dollar.svg +3 -0
- package/icons/heroicons/o-document-currency-euro.svg +3 -0
- package/icons/heroicons/o-document-currency-pound.svg +3 -0
- package/icons/heroicons/o-document-currency-rupee.svg +3 -0
- package/icons/heroicons/o-document-currency-yen.svg +3 -0
- package/icons/heroicons/o-document-duplicate.svg +3 -0
- package/icons/heroicons/o-document-magnifying-glass.svg +3 -0
- package/icons/heroicons/o-document-minus.svg +3 -0
- package/icons/heroicons/o-document-plus.svg +3 -0
- package/icons/heroicons/o-document-text.svg +3 -0
- package/icons/heroicons/o-document.svg +3 -0
- package/icons/heroicons/o-ellipsis-horizontal-circle.svg +3 -0
- package/icons/heroicons/o-ellipsis-horizontal.svg +3 -0
- package/icons/heroicons/o-ellipsis-vertical.svg +3 -0
- package/icons/heroicons/o-envelope-open.svg +3 -0
- package/icons/heroicons/o-envelope.svg +3 -0
- package/icons/heroicons/o-equals.svg +3 -0
- package/icons/heroicons/o-exclamation-circle.svg +3 -0
- package/icons/heroicons/o-exclamation-triangle.svg +3 -0
- package/icons/heroicons/o-eye-dropper.svg +3 -0
- package/icons/heroicons/o-eye-slash.svg +3 -0
- package/icons/heroicons/o-eye.svg +4 -0
- package/icons/heroicons/o-face-frown.svg +3 -0
- package/icons/heroicons/o-face-smile.svg +3 -0
- package/icons/heroicons/o-film.svg +3 -0
- package/icons/heroicons/o-finger-print.svg +3 -0
- package/icons/heroicons/o-fire.svg +4 -0
- package/icons/heroicons/o-flag.svg +3 -0
- package/icons/heroicons/o-folder-arrow-down.svg +3 -0
- package/icons/heroicons/o-folder-minus.svg +3 -0
- package/icons/heroicons/o-folder-open.svg +3 -0
- package/icons/heroicons/o-folder-plus.svg +3 -0
- package/icons/heroicons/o-folder.svg +3 -0
- package/icons/heroicons/o-forward.svg +3 -0
- package/icons/heroicons/o-funnel.svg +3 -0
- package/icons/heroicons/o-gif.svg +3 -0
- package/icons/heroicons/o-gift-top.svg +3 -0
- package/icons/heroicons/o-gift.svg +3 -0
- package/icons/heroicons/o-globe-alt.svg +3 -0
- package/icons/heroicons/o-globe-americas.svg +3 -0
- package/icons/heroicons/o-globe-asia-australia.svg +3 -0
- package/icons/heroicons/o-globe-europe-africa.svg +3 -0
- package/icons/heroicons/o-h1.svg +3 -0
- package/icons/heroicons/o-h2.svg +3 -0
- package/icons/heroicons/o-h3.svg +3 -0
- package/icons/heroicons/o-hand-raised.svg +3 -0
- package/icons/heroicons/o-hand-thumb-down.svg +3 -0
- package/icons/heroicons/o-hand-thumb-up.svg +3 -0
- package/icons/heroicons/o-hashtag.svg +3 -0
- package/icons/heroicons/o-heart.svg +3 -0
- package/icons/heroicons/o-home-modern.svg +3 -0
- package/icons/heroicons/o-home.svg +3 -0
- package/icons/heroicons/o-identification.svg +3 -0
- package/icons/heroicons/o-inbox-arrow-down.svg +3 -0
- package/icons/heroicons/o-inbox-stack.svg +3 -0
- package/icons/heroicons/o-inbox.svg +3 -0
- package/icons/heroicons/o-information-circle.svg +3 -0
- package/icons/heroicons/o-italic.svg +3 -0
- package/icons/heroicons/o-key.svg +3 -0
- package/icons/heroicons/o-language.svg +3 -0
- package/icons/heroicons/o-lifebuoy.svg +3 -0
- package/icons/heroicons/o-light-bulb.svg +3 -0
- package/icons/heroicons/o-link-slash.svg +3 -0
- package/icons/heroicons/o-link.svg +3 -0
- package/icons/heroicons/o-list-bullet.svg +3 -0
- package/icons/heroicons/o-lock-closed.svg +3 -0
- package/icons/heroicons/o-lock-open.svg +3 -0
- package/icons/heroicons/o-magnifying-glass-circle.svg +3 -0
- package/icons/heroicons/o-magnifying-glass-minus.svg +3 -0
- package/icons/heroicons/o-magnifying-glass-plus.svg +3 -0
- package/icons/heroicons/o-magnifying-glass.svg +3 -0
- package/icons/heroicons/o-map-pin.svg +4 -0
- package/icons/heroicons/o-map.svg +3 -0
- package/icons/heroicons/o-megaphone.svg +3 -0
- package/icons/heroicons/o-microphone.svg +3 -0
- package/icons/heroicons/o-minus-circle.svg +3 -0
- package/icons/heroicons/o-minus-small.svg +3 -0
- package/icons/heroicons/o-minus.svg +3 -0
- package/icons/heroicons/o-moon.svg +3 -0
- package/icons/heroicons/o-musical-note.svg +3 -0
- package/icons/heroicons/o-newspaper.svg +3 -0
- package/icons/heroicons/o-no-symbol.svg +3 -0
- package/icons/heroicons/o-numbered-list.svg +3 -0
- package/icons/heroicons/o-paint-brush.svg +3 -0
- package/icons/heroicons/o-paper-airplane.svg +3 -0
- package/icons/heroicons/o-paper-clip.svg +3 -0
- package/icons/heroicons/o-pause-circle.svg +3 -0
- package/icons/heroicons/o-pause.svg +3 -0
- package/icons/heroicons/o-pencil-square.svg +3 -0
- package/icons/heroicons/o-pencil.svg +3 -0
- package/icons/heroicons/o-percent-badge.svg +3 -0
- package/icons/heroicons/o-phone-arrow-down-left.svg +3 -0
- package/icons/heroicons/o-phone-arrow-up-right.svg +3 -0
- package/icons/heroicons/o-phone-x-mark.svg +3 -0
- package/icons/heroicons/o-phone.svg +3 -0
- package/icons/heroicons/o-photo.svg +3 -0
- package/icons/heroicons/o-play-circle.svg +4 -0
- package/icons/heroicons/o-play-pause.svg +3 -0
- package/icons/heroicons/o-play.svg +3 -0
- package/icons/heroicons/o-plus-circle.svg +3 -0
- package/icons/heroicons/o-plus-small.svg +3 -0
- package/icons/heroicons/o-plus.svg +3 -0
- package/icons/heroicons/o-power.svg +3 -0
- package/icons/heroicons/o-presentation-chart-bar.svg +3 -0
- package/icons/heroicons/o-presentation-chart-line.svg +3 -0
- package/icons/heroicons/o-printer.svg +3 -0
- package/icons/heroicons/o-puzzle-piece.svg +3 -0
- package/icons/heroicons/o-qr-code.svg +4 -0
- package/icons/heroicons/o-question-mark-circle.svg +3 -0
- package/icons/heroicons/o-queue-list.svg +3 -0
- package/icons/heroicons/o-radio.svg +3 -0
- package/icons/heroicons/o-receipt-percent.svg +3 -0
- package/icons/heroicons/o-receipt-refund.svg +3 -0
- package/icons/heroicons/o-rectangle-group.svg +3 -0
- package/icons/heroicons/o-rectangle-stack.svg +3 -0
- package/icons/heroicons/o-rocket-launch.svg +3 -0
- package/icons/heroicons/o-rss.svg +3 -0
- package/icons/heroicons/o-scale.svg +3 -0
- package/icons/heroicons/o-scissors.svg +3 -0
- package/icons/heroicons/o-server-stack.svg +3 -0
- package/icons/heroicons/o-server.svg +3 -0
- package/icons/heroicons/o-share.svg +3 -0
- package/icons/heroicons/o-shield-check.svg +3 -0
- package/icons/heroicons/o-shield-exclamation.svg +3 -0
- package/icons/heroicons/o-shopping-bag.svg +3 -0
- package/icons/heroicons/o-shopping-cart.svg +3 -0
- package/icons/heroicons/o-signal-slash.svg +3 -0
- package/icons/heroicons/o-signal.svg +3 -0
- package/icons/heroicons/o-slash.svg +3 -0
- package/icons/heroicons/o-sparkles.svg +3 -0
- package/icons/heroicons/o-speaker-wave.svg +3 -0
- package/icons/heroicons/o-speaker-x-mark.svg +3 -0
- package/icons/heroicons/o-square-2-stack.svg +3 -0
- package/icons/heroicons/o-square-3-stack-3d.svg +3 -0
- package/icons/heroicons/o-squares-2x2.svg +3 -0
- package/icons/heroicons/o-squares-plus.svg +3 -0
- package/icons/heroicons/o-star.svg +3 -0
- package/icons/heroicons/o-stop-circle.svg +4 -0
- package/icons/heroicons/o-stop.svg +3 -0
- package/icons/heroicons/o-strikethrough.svg +3 -0
- package/icons/heroicons/o-sun.svg +3 -0
- package/icons/heroicons/o-swatch.svg +3 -0
- package/icons/heroicons/o-table-cells.svg +3 -0
- package/icons/heroicons/o-tag.svg +4 -0
- package/icons/heroicons/o-ticket.svg +3 -0
- package/icons/heroicons/o-trash.svg +3 -0
- package/icons/heroicons/o-trophy.svg +3 -0
- package/icons/heroicons/o-truck.svg +3 -0
- package/icons/heroicons/o-tv.svg +3 -0
- package/icons/heroicons/o-underline.svg +3 -0
- package/icons/heroicons/o-user-circle.svg +3 -0
- package/icons/heroicons/o-user-group.svg +3 -0
- package/icons/heroicons/o-user-minus.svg +3 -0
- package/icons/heroicons/o-user-plus.svg +3 -0
- package/icons/heroicons/o-user.svg +3 -0
- package/icons/heroicons/o-users.svg +3 -0
- package/icons/heroicons/o-variable.svg +3 -0
- package/icons/heroicons/o-video-camera-slash.svg +3 -0
- package/icons/heroicons/o-video-camera.svg +3 -0
- package/icons/heroicons/o-view-columns.svg +3 -0
- package/icons/heroicons/o-viewfinder-circle.svg +3 -0
- package/icons/heroicons/o-wallet.svg +3 -0
- package/icons/heroicons/o-wifi.svg +3 -0
- package/icons/heroicons/o-window.svg +3 -0
- package/icons/heroicons/o-wrench-screwdriver.svg +3 -0
- package/icons/heroicons/o-wrench.svg +4 -0
- package/icons/heroicons/o-x-circle.svg +3 -0
- package/icons/heroicons/o-x-mark.svg +3 -0
- package/icons/heroicons/s-academic-cap.svg +5 -0
- package/icons/heroicons/s-adjustments-horizontal.svg +3 -0
- package/icons/heroicons/s-adjustments-vertical.svg +3 -0
- package/icons/heroicons/s-archive-box-arrow-down.svg +4 -0
- package/icons/heroicons/s-archive-box-x-mark.svg +4 -0
- package/icons/heroicons/s-archive-box.svg +4 -0
- package/icons/heroicons/s-arrow-down-circle.svg +3 -0
- package/icons/heroicons/s-arrow-down-left.svg +3 -0
- package/icons/heroicons/s-arrow-down-on-square-stack.svg +4 -0
- package/icons/heroicons/s-arrow-down-on-square.svg +3 -0
- package/icons/heroicons/s-arrow-down-right.svg +3 -0
- package/icons/heroicons/s-arrow-down-tray.svg +3 -0
- package/icons/heroicons/s-arrow-down.svg +3 -0
- package/icons/heroicons/s-arrow-left-circle.svg +3 -0
- package/icons/heroicons/s-arrow-left-end-on-rectangle.svg +3 -0
- package/icons/heroicons/s-arrow-left-on-rectangle.svg +3 -0
- package/icons/heroicons/s-arrow-left-start-on-rectangle.svg +3 -0
- package/icons/heroicons/s-arrow-left.svg +3 -0
- package/icons/heroicons/s-arrow-long-down.svg +3 -0
- package/icons/heroicons/s-arrow-long-left.svg +3 -0
- package/icons/heroicons/s-arrow-long-right.svg +3 -0
- package/icons/heroicons/s-arrow-long-up.svg +3 -0
- package/icons/heroicons/s-arrow-path-rounded-square.svg +3 -0
- package/icons/heroicons/s-arrow-path.svg +3 -0
- package/icons/heroicons/s-arrow-right-circle.svg +3 -0
- package/icons/heroicons/s-arrow-right-end-on-rectangle.svg +3 -0
- package/icons/heroicons/s-arrow-right-on-rectangle.svg +3 -0
- package/icons/heroicons/s-arrow-right-start-on-rectangle.svg +3 -0
- package/icons/heroicons/s-arrow-right.svg +3 -0
- package/icons/heroicons/s-arrow-small-down.svg +3 -0
- package/icons/heroicons/s-arrow-small-left.svg +3 -0
- package/icons/heroicons/s-arrow-small-right.svg +3 -0
- package/icons/heroicons/s-arrow-small-up.svg +3 -0
- package/icons/heroicons/s-arrow-top-right-on-square.svg +3 -0
- package/icons/heroicons/s-arrow-trending-down.svg +3 -0
- package/icons/heroicons/s-arrow-trending-up.svg +3 -0
- package/icons/heroicons/s-arrow-turn-down-left.svg +3 -0
- package/icons/heroicons/s-arrow-turn-down-right.svg +3 -0
- package/icons/heroicons/s-arrow-turn-left-down.svg +3 -0
- package/icons/heroicons/s-arrow-turn-left-up.svg +3 -0
- package/icons/heroicons/s-arrow-turn-right-down.svg +3 -0
- package/icons/heroicons/s-arrow-turn-right-up.svg +3 -0
- package/icons/heroicons/s-arrow-turn-up-left.svg +3 -0
- package/icons/heroicons/s-arrow-turn-up-right.svg +3 -0
- package/icons/heroicons/s-arrow-up-circle.svg +3 -0
- package/icons/heroicons/s-arrow-up-left.svg +3 -0
- package/icons/heroicons/s-arrow-up-on-square-stack.svg +4 -0
- package/icons/heroicons/s-arrow-up-on-square.svg +3 -0
- package/icons/heroicons/s-arrow-up-right.svg +3 -0
- package/icons/heroicons/s-arrow-up-tray.svg +3 -0
- package/icons/heroicons/s-arrow-up.svg +3 -0
- package/icons/heroicons/s-arrow-uturn-down.svg +3 -0
- package/icons/heroicons/s-arrow-uturn-left.svg +3 -0
- package/icons/heroicons/s-arrow-uturn-right.svg +3 -0
- package/icons/heroicons/s-arrow-uturn-up.svg +3 -0
- package/icons/heroicons/s-arrows-pointing-in.svg +3 -0
- package/icons/heroicons/s-arrows-pointing-out.svg +3 -0
- package/icons/heroicons/s-arrows-right-left.svg +3 -0
- package/icons/heroicons/s-arrows-up-down.svg +3 -0
- package/icons/heroicons/s-at-symbol.svg +3 -0
- package/icons/heroicons/s-backspace.svg +3 -0
- package/icons/heroicons/s-backward.svg +3 -0
- package/icons/heroicons/s-banknotes.svg +5 -0
- package/icons/heroicons/s-bars-2.svg +3 -0
- package/icons/heroicons/s-bars-3-bottom-left.svg +3 -0
- package/icons/heroicons/s-bars-3-bottom-right.svg +3 -0
- package/icons/heroicons/s-bars-3-center-left.svg +3 -0
- package/icons/heroicons/s-bars-3.svg +3 -0
- package/icons/heroicons/s-bars-4.svg +3 -0
- package/icons/heroicons/s-bars-arrow-down.svg +3 -0
- package/icons/heroicons/s-bars-arrow-up.svg +3 -0
- package/icons/heroicons/s-battery-0.svg +3 -0
- package/icons/heroicons/s-battery-100.svg +3 -0
- package/icons/heroicons/s-battery-50.svg +4 -0
- package/icons/heroicons/s-beaker.svg +3 -0
- package/icons/heroicons/s-bell-alert.svg +4 -0
- package/icons/heroicons/s-bell-slash.svg +4 -0
- package/icons/heroicons/s-bell-snooze.svg +3 -0
- package/icons/heroicons/s-bell.svg +3 -0
- package/icons/heroicons/s-bold.svg +3 -0
- package/icons/heroicons/s-bolt-slash.svg +3 -0
- package/icons/heroicons/s-bolt.svg +3 -0
- package/icons/heroicons/s-book-open.svg +3 -0
- package/icons/heroicons/s-bookmark-slash.svg +3 -0
- package/icons/heroicons/s-bookmark-square.svg +3 -0
- package/icons/heroicons/s-bookmark.svg +3 -0
- package/icons/heroicons/s-briefcase.svg +4 -0
- package/icons/heroicons/s-bug-ant.svg +3 -0
- package/icons/heroicons/s-building-library.svg +5 -0
- package/icons/heroicons/s-building-office-2.svg +3 -0
- package/icons/heroicons/s-building-office.svg +3 -0
- package/icons/heroicons/s-building-storefront.svg +4 -0
- package/icons/heroicons/s-cake.svg +3 -0
- package/icons/heroicons/s-calculator.svg +3 -0
- package/icons/heroicons/s-calendar-date-range.svg +4 -0
- package/icons/heroicons/s-calendar-days.svg +4 -0
- package/icons/heroicons/s-calendar.svg +3 -0
- package/icons/heroicons/s-camera.svg +4 -0
- package/icons/heroicons/s-chart-bar-square.svg +3 -0
- package/icons/heroicons/s-chart-bar.svg +3 -0
- package/icons/heroicons/s-chart-pie.svg +4 -0
- package/icons/heroicons/s-chat-bubble-bottom-center-text.svg +3 -0
- package/icons/heroicons/s-chat-bubble-bottom-center.svg +3 -0
- package/icons/heroicons/s-chat-bubble-left-ellipsis.svg +3 -0
- package/icons/heroicons/s-chat-bubble-left-right.svg +4 -0
- package/icons/heroicons/s-chat-bubble-left.svg +3 -0
- package/icons/heroicons/s-chat-bubble-oval-left-ellipsis.svg +3 -0
- package/icons/heroicons/s-chat-bubble-oval-left.svg +3 -0
- package/icons/heroicons/s-check-badge.svg +3 -0
- package/icons/heroicons/s-check-circle.svg +3 -0
- package/icons/heroicons/s-check.svg +3 -0
- package/icons/heroicons/s-chevron-double-down.svg +4 -0
- package/icons/heroicons/s-chevron-double-left.svg +4 -0
- package/icons/heroicons/s-chevron-double-right.svg +4 -0
- package/icons/heroicons/s-chevron-double-up.svg +4 -0
- package/icons/heroicons/s-chevron-down.svg +3 -0
- package/icons/heroicons/s-chevron-left.svg +3 -0
- package/icons/heroicons/s-chevron-right.svg +3 -0
- package/icons/heroicons/s-chevron-up-down.svg +3 -0
- package/icons/heroicons/s-chevron-up.svg +3 -0
- package/icons/heroicons/s-circle-stack.svg +6 -0
- package/icons/heroicons/s-clipboard-document-check.svg +4 -0
- package/icons/heroicons/s-clipboard-document-list.svg +4 -0
- package/icons/heroicons/s-clipboard-document.svg +5 -0
- package/icons/heroicons/s-clipboard.svg +3 -0
- package/icons/heroicons/s-clock.svg +3 -0
- package/icons/heroicons/s-cloud-arrow-down.svg +3 -0
- package/icons/heroicons/s-cloud-arrow-up.svg +3 -0
- package/icons/heroicons/s-cloud.svg +3 -0
- package/icons/heroicons/s-code-bracket-square.svg +3 -0
- package/icons/heroicons/s-code-bracket.svg +3 -0
- package/icons/heroicons/s-cog-6-tooth.svg +3 -0
- package/icons/heroicons/s-cog-8-tooth.svg +3 -0
- package/icons/heroicons/s-cog.svg +4 -0
- package/icons/heroicons/s-command-line.svg +3 -0
- package/icons/heroicons/s-computer-desktop.svg +3 -0
- package/icons/heroicons/s-cpu-chip.svg +4 -0
- package/icons/heroicons/s-credit-card.svg +4 -0
- package/icons/heroicons/s-cube-transparent.svg +3 -0
- package/icons/heroicons/s-cube.svg +3 -0
- package/icons/heroicons/s-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/s-currency-dollar.svg +4 -0
- package/icons/heroicons/s-currency-euro.svg +3 -0
- package/icons/heroicons/s-currency-pound.svg +3 -0
- package/icons/heroicons/s-currency-rupee.svg +3 -0
- package/icons/heroicons/s-currency-yen.svg +3 -0
- package/icons/heroicons/s-cursor-arrow-rays.svg +3 -0
- package/icons/heroicons/s-cursor-arrow-ripple.svg +3 -0
- package/icons/heroicons/s-device-phone-mobile.svg +4 -0
- package/icons/heroicons/s-device-tablet.svg +4 -0
- package/icons/heroicons/s-divide.svg +3 -0
- package/icons/heroicons/s-document-arrow-down.svg +4 -0
- package/icons/heroicons/s-document-arrow-up.svg +4 -0
- package/icons/heroicons/s-document-chart-bar.svg +4 -0
- package/icons/heroicons/s-document-check.svg +4 -0
- package/icons/heroicons/s-document-currency-bangladeshi.svg +3 -0
- package/icons/heroicons/s-document-currency-dollar.svg +3 -0
- package/icons/heroicons/s-document-currency-euro.svg +4 -0
- package/icons/heroicons/s-document-currency-pound.svg +3 -0
- package/icons/heroicons/s-document-currency-rupee.svg +3 -0
- package/icons/heroicons/s-document-currency-yen.svg +3 -0
- package/icons/heroicons/s-document-duplicate.svg +4 -0
- package/icons/heroicons/s-document-magnifying-glass.svg +5 -0
- package/icons/heroicons/s-document-minus.svg +4 -0
- package/icons/heroicons/s-document-plus.svg +4 -0
- package/icons/heroicons/s-document-text.svg +4 -0
- package/icons/heroicons/s-document.svg +4 -0
- package/icons/heroicons/s-ellipsis-horizontal-circle.svg +3 -0
- package/icons/heroicons/s-ellipsis-horizontal.svg +3 -0
- package/icons/heroicons/s-ellipsis-vertical.svg +3 -0
- package/icons/heroicons/s-envelope-open.svg +4 -0
- package/icons/heroicons/s-envelope.svg +4 -0
- package/icons/heroicons/s-equals.svg +3 -0
- package/icons/heroicons/s-exclamation-circle.svg +3 -0
- package/icons/heroicons/s-exclamation-triangle.svg +3 -0
- package/icons/heroicons/s-eye-dropper.svg +3 -0
- package/icons/heroicons/s-eye-slash.svg +5 -0
- package/icons/heroicons/s-eye.svg +4 -0
- package/icons/heroicons/s-face-frown.svg +3 -0
- package/icons/heroicons/s-face-smile.svg +3 -0
- package/icons/heroicons/s-film.svg +3 -0
- package/icons/heroicons/s-finger-print.svg +3 -0
- package/icons/heroicons/s-fire.svg +3 -0
- package/icons/heroicons/s-flag.svg +3 -0
- package/icons/heroicons/s-folder-arrow-down.svg +3 -0
- package/icons/heroicons/s-folder-minus.svg +3 -0
- package/icons/heroicons/s-folder-open.svg +3 -0
- package/icons/heroicons/s-folder-plus.svg +3 -0
- package/icons/heroicons/s-folder.svg +3 -0
- package/icons/heroicons/s-forward.svg +3 -0
- package/icons/heroicons/s-funnel.svg +3 -0
- package/icons/heroicons/s-gif.svg +3 -0
- package/icons/heroicons/s-gift-top.svg +4 -0
- package/icons/heroicons/s-gift.svg +3 -0
- package/icons/heroicons/s-globe-alt.svg +3 -0
- package/icons/heroicons/s-globe-americas.svg +3 -0
- package/icons/heroicons/s-globe-asia-australia.svg +4 -0
- package/icons/heroicons/s-globe-europe-africa.svg +3 -0
- package/icons/heroicons/s-h1.svg +3 -0
- package/icons/heroicons/s-h2.svg +3 -0
- package/icons/heroicons/s-h3.svg +3 -0
- package/icons/heroicons/s-hand-raised.svg +3 -0
- package/icons/heroicons/s-hand-thumb-down.svg +3 -0
- package/icons/heroicons/s-hand-thumb-up.svg +3 -0
- package/icons/heroicons/s-hashtag.svg +3 -0
- package/icons/heroicons/s-heart.svg +3 -0
- package/icons/heroicons/s-home-modern.svg +4 -0
- package/icons/heroicons/s-home.svg +4 -0
- package/icons/heroicons/s-identification.svg +3 -0
- package/icons/heroicons/s-inbox-arrow-down.svg +4 -0
- package/icons/heroicons/s-inbox-stack.svg +4 -0
- package/icons/heroicons/s-inbox.svg +3 -0
- package/icons/heroicons/s-information-circle.svg +3 -0
- package/icons/heroicons/s-italic.svg +3 -0
- package/icons/heroicons/s-key.svg +3 -0
- package/icons/heroicons/s-language.svg +3 -0
- package/icons/heroicons/s-lifebuoy.svg +3 -0
- package/icons/heroicons/s-light-bulb.svg +4 -0
- package/icons/heroicons/s-link-slash.svg +3 -0
- package/icons/heroicons/s-link.svg +3 -0
- package/icons/heroicons/s-list-bullet.svg +3 -0
- package/icons/heroicons/s-lock-closed.svg +3 -0
- package/icons/heroicons/s-lock-open.svg +3 -0
- package/icons/heroicons/s-magnifying-glass-circle.svg +4 -0
- package/icons/heroicons/s-magnifying-glass-minus.svg +3 -0
- package/icons/heroicons/s-magnifying-glass-plus.svg +3 -0
- package/icons/heroicons/s-magnifying-glass.svg +3 -0
- package/icons/heroicons/s-map-pin.svg +3 -0
- package/icons/heroicons/s-map.svg +3 -0
- package/icons/heroicons/s-megaphone.svg +3 -0
- package/icons/heroicons/s-microphone.svg +4 -0
- package/icons/heroicons/s-minus-circle.svg +3 -0
- package/icons/heroicons/s-minus-small.svg +3 -0
- package/icons/heroicons/s-minus.svg +3 -0
- package/icons/heroicons/s-moon.svg +3 -0
- package/icons/heroicons/s-musical-note.svg +3 -0
- package/icons/heroicons/s-newspaper.svg +4 -0
- package/icons/heroicons/s-no-symbol.svg +3 -0
- package/icons/heroicons/s-numbered-list.svg +3 -0
- package/icons/heroicons/s-paint-brush.svg +3 -0
- package/icons/heroicons/s-paper-airplane.svg +3 -0
- package/icons/heroicons/s-paper-clip.svg +3 -0
- package/icons/heroicons/s-pause-circle.svg +3 -0
- package/icons/heroicons/s-pause.svg +3 -0
- package/icons/heroicons/s-pencil-square.svg +4 -0
- package/icons/heroicons/s-pencil.svg +3 -0
- package/icons/heroicons/s-percent-badge.svg +3 -0
- package/icons/heroicons/s-phone-arrow-down-left.svg +4 -0
- package/icons/heroicons/s-phone-arrow-up-right.svg +4 -0
- package/icons/heroicons/s-phone-x-mark.svg +3 -0
- package/icons/heroicons/s-phone.svg +3 -0
- package/icons/heroicons/s-photo.svg +3 -0
- package/icons/heroicons/s-play-circle.svg +3 -0
- package/icons/heroicons/s-play-pause.svg +3 -0
- package/icons/heroicons/s-play.svg +3 -0
- package/icons/heroicons/s-plus-circle.svg +3 -0
- package/icons/heroicons/s-plus-small.svg +3 -0
- package/icons/heroicons/s-plus.svg +3 -0
- package/icons/heroicons/s-power.svg +3 -0
- package/icons/heroicons/s-presentation-chart-bar.svg +3 -0
- package/icons/heroicons/s-presentation-chart-line.svg +3 -0
- package/icons/heroicons/s-printer.svg +3 -0
- package/icons/heroicons/s-puzzle-piece.svg +3 -0
- package/icons/heroicons/s-qr-code.svg +3 -0
- package/icons/heroicons/s-question-mark-circle.svg +3 -0
- package/icons/heroicons/s-queue-list.svg +3 -0
- package/icons/heroicons/s-radio.svg +3 -0
- package/icons/heroicons/s-receipt-percent.svg +3 -0
- package/icons/heroicons/s-receipt-refund.svg +3 -0
- package/icons/heroicons/s-rectangle-group.svg +3 -0
- package/icons/heroicons/s-rectangle-stack.svg +3 -0
- package/icons/heroicons/s-rocket-launch.svg +4 -0
- package/icons/heroicons/s-rss.svg +3 -0
- package/icons/heroicons/s-scale.svg +3 -0
- package/icons/heroicons/s-scissors.svg +4 -0
- package/icons/heroicons/s-server-stack.svg +4 -0
- package/icons/heroicons/s-server.svg +4 -0
- package/icons/heroicons/s-share.svg +3 -0
- package/icons/heroicons/s-shield-check.svg +3 -0
- package/icons/heroicons/s-shield-exclamation.svg +3 -0
- package/icons/heroicons/s-shopping-bag.svg +3 -0
- package/icons/heroicons/s-shopping-cart.svg +3 -0
- package/icons/heroicons/s-signal-slash.svg +3 -0
- package/icons/heroicons/s-signal.svg +3 -0
- package/icons/heroicons/s-slash.svg +3 -0
- package/icons/heroicons/s-sparkles.svg +3 -0
- package/icons/heroicons/s-speaker-wave.svg +4 -0
- package/icons/heroicons/s-speaker-x-mark.svg +3 -0
- package/icons/heroicons/s-square-2-stack.svg +4 -0
- package/icons/heroicons/s-square-3-stack-3d.svg +5 -0
- package/icons/heroicons/s-squares-2x2.svg +3 -0
- package/icons/heroicons/s-squares-plus.svg +3 -0
- package/icons/heroicons/s-star.svg +3 -0
- package/icons/heroicons/s-stop-circle.svg +3 -0
- package/icons/heroicons/s-stop.svg +3 -0
- package/icons/heroicons/s-strikethrough.svg +3 -0
- package/icons/heroicons/s-sun.svg +3 -0
- package/icons/heroicons/s-swatch.svg +4 -0
- package/icons/heroicons/s-table-cells.svg +3 -0
- package/icons/heroicons/s-tag.svg +3 -0
- package/icons/heroicons/s-ticket.svg +3 -0
- package/icons/heroicons/s-trash.svg +3 -0
- package/icons/heroicons/s-trophy.svg +3 -0
- package/icons/heroicons/s-truck.svg +5 -0
- package/icons/heroicons/s-tv.svg +4 -0
- package/icons/heroicons/s-underline.svg +3 -0
- package/icons/heroicons/s-user-circle.svg +3 -0
- package/icons/heroicons/s-user-group.svg +4 -0
- package/icons/heroicons/s-user-minus.svg +3 -0
- package/icons/heroicons/s-user-plus.svg +3 -0
- package/icons/heroicons/s-user.svg +3 -0
- package/icons/heroicons/s-users.svg +3 -0
- package/icons/heroicons/s-variable.svg +3 -0
- package/icons/heroicons/s-video-camera-slash.svg +3 -0
- package/icons/heroicons/s-video-camera.svg +3 -0
- package/icons/heroicons/s-view-columns.svg +3 -0
- package/icons/heroicons/s-viewfinder-circle.svg +3 -0
- package/icons/heroicons/s-wallet.svg +3 -0
- package/icons/heroicons/s-wifi.svg +3 -0
- package/icons/heroicons/s-window.svg +3 -0
- package/icons/heroicons/s-wrench-screwdriver.svg +5 -0
- package/icons/heroicons/s-wrench.svg +3 -0
- package/icons/heroicons/s-x-circle.svg +3 -0
- package/icons/heroicons/s-x-mark.svg +3 -0
- package/lib/i18n.d.ts +8 -0
- package/lib/i18n.js +70 -0
- package/lib/index.d.ts +164 -0
- package/lib/index.js +516 -0
- package/lib/ui.d.ts +261 -0
- package/lib/ui.js +257 -0
- package/package.json +57 -4
- package/views/components/badge.ejs +8 -0
- package/views/components/icon-button.ejs +6 -0
- package/views/components/pagination.ejs +88 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
// @navette-js/support — briques transverses portées de filament/support : échappement, sac d'attributs, sérialisation JS,
|
|
3
|
+
// évaluation paresseuse, couleurs, icônes, vues EJS à espaces de noms.
|
|
4
|
+
import ejs from 'ejs';
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
// ------------------------------------------------------------------ échappement (équivalent de e() / htmlspecialchars)
|
|
9
|
+
export function e(value) {
|
|
10
|
+
return String(value ?? '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
11
|
+
}
|
|
12
|
+
/** Chaîne HTML sûre : n'est pas ré-échappée par les vues. */
|
|
13
|
+
export class HtmlString {
|
|
14
|
+
html;
|
|
15
|
+
constructor(html) { this.html = html; }
|
|
16
|
+
toString() { return this.html; }
|
|
17
|
+
}
|
|
18
|
+
export const raw = (html) => new HtmlString(html);
|
|
19
|
+
// ------------------------------------------------------------------ Js::from (Illuminate\Support\Js)
|
|
20
|
+
// Chaîne JS entre apostrophes, comme json_encode(JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT) de PHP.
|
|
21
|
+
const BS = String.fromCharCode(92);
|
|
22
|
+
const HEX = { '"': 'u0022', "'": 'u0027', '<': 'u003C', '>': 'u003E', '&': 'u0026', '/': '/' };
|
|
23
|
+
function phpString(value) {
|
|
24
|
+
let out = '';
|
|
25
|
+
for (const ch of value) {
|
|
26
|
+
if (ch in HEX)
|
|
27
|
+
out += BS + HEX[ch];
|
|
28
|
+
else if (ch === BS)
|
|
29
|
+
out += BS + BS;
|
|
30
|
+
else if (ch < ' ')
|
|
31
|
+
out += JSON.stringify(ch).slice(1, -1);
|
|
32
|
+
else
|
|
33
|
+
out += ch;
|
|
34
|
+
}
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `json_encode($value, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT)` : dans les chaînes, `'`, `"`, `<`, `>` et `&`
|
|
39
|
+
* sont écrits en `\uXXXX` (les guillemets de structure restent tels quels), et `/` est échappé.
|
|
40
|
+
*/
|
|
41
|
+
function phpJson(value) {
|
|
42
|
+
const json = JSON.stringify(value);
|
|
43
|
+
const HEX = { "'": BS + 'u0027', '<': BS + 'u003C', '>': BS + 'u003E', '&': BS + 'u0026', '/': BS + '/' };
|
|
44
|
+
let out = '';
|
|
45
|
+
for (let i = 0; i < json.length; i++) {
|
|
46
|
+
const c = json[i];
|
|
47
|
+
if (c === BS) {
|
|
48
|
+
const next = json[++i];
|
|
49
|
+
out += next === '"' ? BS + 'u0022' : BS + next;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
out += HEX[c] ?? c;
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
/** Sérialise une valeur en expression JavaScript, au même format que `Js::from()` de Laravel. */
|
|
57
|
+
export function js(value) {
|
|
58
|
+
if (value === null || value === undefined)
|
|
59
|
+
return 'null';
|
|
60
|
+
if (typeof value === 'string')
|
|
61
|
+
return "'" + phpString(value) + "'";
|
|
62
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
63
|
+
return String(value);
|
|
64
|
+
return "JSON.parse('" + phpString(phpJson(value)) + "')";
|
|
65
|
+
}
|
|
66
|
+
export function cls(list) {
|
|
67
|
+
const out = [];
|
|
68
|
+
const items = Array.isArray(list) ? list : [list];
|
|
69
|
+
for (const item of items) {
|
|
70
|
+
if (!item)
|
|
71
|
+
continue;
|
|
72
|
+
if (typeof item === 'string')
|
|
73
|
+
out.push(item);
|
|
74
|
+
else
|
|
75
|
+
for (const [k, on] of Object.entries(item))
|
|
76
|
+
if (on)
|
|
77
|
+
out.push(k);
|
|
78
|
+
}
|
|
79
|
+
return out.join(' ');
|
|
80
|
+
}
|
|
81
|
+
export class Attributes {
|
|
82
|
+
map = new Map();
|
|
83
|
+
constructor(initial = {}) { for (const [k, v] of Object.entries(initial))
|
|
84
|
+
this.map.set(k, v); }
|
|
85
|
+
get(key) { return this.map.get(key); }
|
|
86
|
+
has(key) { return this.map.has(key); }
|
|
87
|
+
/** Port de merge() : les valeurs par défaut passent en premier, puis les attributs existants ; null/false sont ignorés. */
|
|
88
|
+
merge(defaults) {
|
|
89
|
+
const out = new Attributes();
|
|
90
|
+
for (const [k, v] of Object.entries(defaults)) {
|
|
91
|
+
if (v === null || v === undefined || v === false)
|
|
92
|
+
continue;
|
|
93
|
+
out.map.set(k, v);
|
|
94
|
+
}
|
|
95
|
+
for (const [k, v] of this.map) {
|
|
96
|
+
const merged = (k === 'class' || k === 'style') && out.map.has(k) ? [out.map.get(k), v].filter((x) => x !== '' && x != null).join(' ') : v;
|
|
97
|
+
out.map.delete(k);
|
|
98
|
+
out.map.set(k, merged);
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
/** Ajoute (ou remplace) un attribut en fin de liste. */
|
|
103
|
+
set(key, value) { const out = this.clone(); out.map.delete(key); out.map.set(key, value); return out; }
|
|
104
|
+
clone() { const out = new Attributes(); for (const [k, v] of this.map)
|
|
105
|
+
out.map.set(k, v); return out; }
|
|
106
|
+
/** Port de class() : les classes s'ajoutent après les classes existantes ; l'attribut garde sa place, ou va en fin. */
|
|
107
|
+
class(list) {
|
|
108
|
+
const out = this.clone();
|
|
109
|
+
out.map.set('class', [out.map.get('class'), cls(list)].filter((x) => x !== '' && x != null).join(' '));
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
style(list) {
|
|
113
|
+
const added = list.filter(Boolean).join('; ');
|
|
114
|
+
if (!added)
|
|
115
|
+
return this;
|
|
116
|
+
const out = this.clone();
|
|
117
|
+
const existing = String(out.map.get('style') ?? '').replace(/;+$/, '');
|
|
118
|
+
out.map.set('style', [existing, added].filter(Boolean).join('; ') + ';');
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
when(condition, fn) { return condition ? fn(this) : this; }
|
|
122
|
+
/** Grille conteneur : port de ComponentAttributeBag::grid(). */
|
|
123
|
+
grid(columns = {}) {
|
|
124
|
+
const cols = typeof columns === 'number' ? { lg: columns } : { ...(columns ?? {}) };
|
|
125
|
+
for (const k of Object.keys(cols))
|
|
126
|
+
if (!cols[k])
|
|
127
|
+
delete cols[k];
|
|
128
|
+
cols.default ??= 1;
|
|
129
|
+
const v = (bp) => bp.replace(/@/g, 'c').replace(/!/g, 'n');
|
|
130
|
+
return this
|
|
131
|
+
.class(['fi-grid', ...Object.keys(cols).map((bp) => (bp === 'default' ? (cols[bp] > 1 ? 'fi-grid-cols' : '') : `${bp}:fi-grid-cols`))])
|
|
132
|
+
.style(Object.entries(cols).map(([bp, n]) => `--cols-${v(bp)}: repeat(${n}, minmax(0, 1fr))`));
|
|
133
|
+
}
|
|
134
|
+
/** Colonne de grille : port de ComponentAttributeBag::gridColumn(). */
|
|
135
|
+
gridColumn(span = {}, isHidden = false) {
|
|
136
|
+
const s = span !== null && typeof span === 'object' ? { ...span } : span ? { lg: span } : {};
|
|
137
|
+
for (const k of Object.keys(s))
|
|
138
|
+
if (!s[k])
|
|
139
|
+
delete s[k];
|
|
140
|
+
const v = (bp) => bp.replace(/@/g, 'c').replace(/!/g, 'n');
|
|
141
|
+
return this
|
|
142
|
+
.class(['fi-grid-col', { 'fi-hidden': isHidden || s.default === 'hidden' }, ...Object.keys(s).map((bp) => (bp === 'default' ? '' : `${bp}:fi-grid-col-span`))])
|
|
143
|
+
.style(Object.entries(s).map(([bp, n]) => `--col-span-${v(bp)}: ${n === 'full' ? '1 / -1' : `span ${n} / span ${n}`}`));
|
|
144
|
+
}
|
|
145
|
+
/** Rendu `clé="valeur"` ; `true` devient `clé="clé"` (ou `""` pour x-data et wire:*), comme dans Laravel. Les valeurs ne sont pas ré-échappées. */
|
|
146
|
+
toHtml() {
|
|
147
|
+
const parts = [];
|
|
148
|
+
for (const [k, v] of this.map) {
|
|
149
|
+
if (v === false || v === null || v === undefined)
|
|
150
|
+
continue;
|
|
151
|
+
const value = v === true ? (k === 'x-data' || k.startsWith('wire:') ? '' : k) : String(v);
|
|
152
|
+
parts.push(`${k}="${value.replace(/"/g, '"')}"`);
|
|
153
|
+
}
|
|
154
|
+
return parts.join(' ');
|
|
155
|
+
}
|
|
156
|
+
toString() { return this.toHtml(); }
|
|
157
|
+
}
|
|
158
|
+
export const attrs = (initial = {}) => new Attributes(initial);
|
|
159
|
+
export async function evaluate(value, ctx) {
|
|
160
|
+
return typeof value === 'function' ? await value(ctx) : value;
|
|
161
|
+
}
|
|
162
|
+
// ------------------------------------------------------------------ couleurs (Filament\Support\Colors)
|
|
163
|
+
const here = (p) => fileURLToPath(new URL(p, import.meta.url));
|
|
164
|
+
export const Color = JSON.parse(readFileSync(here('../data/palettes.json'), 'utf8'));
|
|
165
|
+
export const WCAG_AA_TEXT = 4.5;
|
|
166
|
+
/** Port de Color::convertToOklch : `#rrggbb`, `rgb(r, g, b)` ou `r, g, b` → `oklch(L C h)`, arrondi à trois décimales. */
|
|
167
|
+
export function convertToOklch(color) {
|
|
168
|
+
if (color.startsWith('oklch('))
|
|
169
|
+
return color;
|
|
170
|
+
const compact = color.replace(/\s+/g, '');
|
|
171
|
+
const [r, g, b] = (compact.startsWith('#') ? convertToRgb(compact) : compact.replace(/^rgb\(|\)$/g, '').split(',').map(Number)).map((channel) => {
|
|
172
|
+
const c = channel / 255;
|
|
173
|
+
return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;
|
|
174
|
+
});
|
|
175
|
+
if (![r, g, b].every(Number.isFinite))
|
|
176
|
+
throw new Error(`Couleur non prise en charge : ${color}`);
|
|
177
|
+
const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b), m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b), s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);
|
|
178
|
+
const lightness = 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s;
|
|
179
|
+
const a = 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, bb = 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s;
|
|
180
|
+
let hue = (Math.atan2(bb, a) * 180) / Math.PI;
|
|
181
|
+
if (hue < 0)
|
|
182
|
+
hue += 360;
|
|
183
|
+
const round = (n) => String(Math.round(n * 1000) / 1000);
|
|
184
|
+
return `oklch(${round(lightness)} ${round(Math.sqrt(a * a + bb * bb))} ${round(hue)})`;
|
|
185
|
+
}
|
|
186
|
+
/** Clarté et saturation de chaque nuance d'une palette générée (constantes de Color::generatePalette). */
|
|
187
|
+
const GENERATED_SHADES = [
|
|
188
|
+
[50, '0.97717647058824', '0.01395454545455'], [100, '0.95035294117647', '0.03272727272727'], [200, '0.90547058823529', '0.06318181818182'],
|
|
189
|
+
[300, '0.84047058823529', '0.10604545454546'], [400, '0.75352941176471', '0.15027272727273'], [500, '0.68270588235294', '0.17009090909091'],
|
|
190
|
+
[600, '0.59782352941176', '0.16913636363636'], [700, '0.51494117647059', '0.14940909090909'], [800, '0.44611764705882', '0.12331818181818'],
|
|
191
|
+
[900, '0.39458823529412', '0.09963636363636'], [950, '0.27788235294118', '0.07136363636364'],
|
|
192
|
+
];
|
|
193
|
+
/** Port de Color::generatePalette (`Color::hex()`, `Color::rgb()`) : onze nuances à partir d'une seule couleur, dont on garde la teinte. */
|
|
194
|
+
export function generatePalette(color) {
|
|
195
|
+
const [, , chroma, hue] = /^oklch\(([\d.]+) ([\d.]+) ([\d.]+)\)$/.exec(convertToOklch(color)).map(Number);
|
|
196
|
+
const achromatic = chroma < 0.03;
|
|
197
|
+
return Object.fromEntries(GENERATED_SHADES.map(([shade, lightness, saturation]) => [shade, `oklch(${lightness} ${achromatic ? '0' : saturation} ${hue})`]));
|
|
198
|
+
}
|
|
199
|
+
const toPalette = (color) => (typeof color === 'string' ? generatePalette(color) : color);
|
|
200
|
+
export function convertToRgb(color) {
|
|
201
|
+
const rgb = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)/.exec(color);
|
|
202
|
+
if (rgb)
|
|
203
|
+
return [+rgb[1], +rgb[2], +rgb[3]];
|
|
204
|
+
if (color.startsWith('#')) {
|
|
205
|
+
const hex = color.length === 4 ? color.replace(/[0-9a-f]/gi, (c) => c + c) : color;
|
|
206
|
+
return [1, 3, 5].map((i) => parseInt(hex.slice(i, i + 2), 16));
|
|
207
|
+
}
|
|
208
|
+
const m = /^oklch\(([\d.]+)\s+([\d.]+)(?:\s+([\d.]+))?\)/.exec(color);
|
|
209
|
+
if (!m)
|
|
210
|
+
throw new Error(`Couleur non prise en charge : ${color}`);
|
|
211
|
+
const L = +m[1], C = +m[2], h = ((+m[3] || 0) * Math.PI) / 180;
|
|
212
|
+
const a = C * Math.cos(h), b = C * Math.sin(h);
|
|
213
|
+
const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3, md = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3, s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;
|
|
214
|
+
const lin = [4.0767416621 * l - 3.3077115913 * md + 0.2309699292 * s, -1.2684380046 * l + 2.6097574011 * md - 0.3413193965 * s, -0.0041960863 * l - 0.7034186147 * md + 1.707614701 * s];
|
|
215
|
+
return lin.map((x) => Math.max(0, Math.min(255, Math.round((x <= 0.0031308 ? 12.92 * x : 1.055 * x ** (1 / 2.4) - 0.055) * 255))));
|
|
216
|
+
}
|
|
217
|
+
/** Rapport de contraste de Filament : luminance approchée par un gamma 2,2 (reproduit tel quel, ce n'est pas la formule WCAG exacte). */
|
|
218
|
+
export function calculateContrastRatio(c1, c2) {
|
|
219
|
+
const lum = (c) => { const [r, g, b] = convertToRgb(c); return 0.2126 * (r / 255) ** 2.2 + 0.7152 * (g / 255) ** 2.2 + 0.0722 * (b / 255) ** 2.2; };
|
|
220
|
+
const a = lum(c1), b = lum(c2);
|
|
221
|
+
return (Math.max(a, b) + 0.05) / (Math.min(a, b) + 0.05);
|
|
222
|
+
}
|
|
223
|
+
export function isLight(color) {
|
|
224
|
+
const m = /^oklch\(([\d.]+)/.exec(color);
|
|
225
|
+
if (!m)
|
|
226
|
+
throw new Error(`isLight : seule la notation oklch est prise en charge pour l'instant (${color})`);
|
|
227
|
+
return +m[1] >= 0.65;
|
|
228
|
+
}
|
|
229
|
+
/** Port de ButtonComponentColorMap : choisit les nuances de fond et de texte accessibles d'un bouton plein. */
|
|
230
|
+
export function buttonColorMap(palette, minRatio = WCAG_AA_TEXT) {
|
|
231
|
+
const light = [{ bg: 600, hover: 500, alternateHover: null }, { bg: 400, hover: 300, alternateHover: 500 }];
|
|
232
|
+
const dark = [{ bg: 600, hover: 500, alternateHover: 700 }];
|
|
233
|
+
const shades = Object.keys(palette).map(Number).sort((a, b) => a - b);
|
|
234
|
+
const textForBg = {};
|
|
235
|
+
const possibleDark = shades.slice(1);
|
|
236
|
+
let fallbackOk = true;
|
|
237
|
+
outer: for (const bg of shades) {
|
|
238
|
+
while (possibleDark.length) {
|
|
239
|
+
const t = possibleDark[0];
|
|
240
|
+
if (t >= 800 && calculateContrastRatio(palette[bg], palette[t]) >= minRatio) {
|
|
241
|
+
textForBg[bg] = t;
|
|
242
|
+
continue outer;
|
|
243
|
+
}
|
|
244
|
+
possibleDark.shift();
|
|
245
|
+
}
|
|
246
|
+
if (fallbackOk && palette[50] !== undefined) {
|
|
247
|
+
if (calculateContrastRatio(palette[bg], palette[50]) >= minRatio) {
|
|
248
|
+
textForBg[bg] = 50;
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
fallbackOk = false;
|
|
252
|
+
}
|
|
253
|
+
textForBg[bg] = 0;
|
|
254
|
+
}
|
|
255
|
+
const lightness = {};
|
|
256
|
+
for (const c of [...light, ...dark])
|
|
257
|
+
for (const s of [c.bg, c.hover, c.alternateHover]) {
|
|
258
|
+
if (s === null)
|
|
259
|
+
continue;
|
|
260
|
+
const t = textForBg[s] ?? 0;
|
|
261
|
+
lightness[s] = t === 0 || isLight(palette[t] ?? 'oklch(1 0 0)');
|
|
262
|
+
}
|
|
263
|
+
const pick = (cands) => {
|
|
264
|
+
for (const c of cands) {
|
|
265
|
+
if (!lightness[c.bg])
|
|
266
|
+
continue;
|
|
267
|
+
if (lightness[c.hover])
|
|
268
|
+
return [c.bg, c.hover];
|
|
269
|
+
if (c.alternateHover !== null && lightness[c.alternateHover])
|
|
270
|
+
return [c.bg, c.alternateHover];
|
|
271
|
+
}
|
|
272
|
+
const f = cands[cands.length - 1];
|
|
273
|
+
return [f.bg, lightness[f.bg] === lightness[f.hover] ? f.hover : (f.alternateHover ?? f.hover)];
|
|
274
|
+
};
|
|
275
|
+
const [bg, hoverBg] = pick(light), [darkBg, darkHoverBg] = pick(dark);
|
|
276
|
+
return { bg, 'hover:bg': hoverBg, 'dark:bg': darkBg, 'dark:hover:bg': darkHoverBg, text: textForBg[bg] ?? 0, 'hover:text': textForBg[hoverBg] ?? 0, 'dark:text': textForBg[darkBg] ?? 0, 'dark:hover:text': textForBg[darkHoverBg] ?? 0 };
|
|
277
|
+
}
|
|
278
|
+
/** Port de Color::findShade : première nuance de la palette assez contrastée sur une surface. */
|
|
279
|
+
export function findShade(palette, surface, options = {}) {
|
|
280
|
+
const shades = Object.keys(palette).map(Number).sort((a, b) => (options.fromDarkest ? b - a : a - b));
|
|
281
|
+
for (const shade of shades) {
|
|
282
|
+
if (options.maxShade !== undefined && shade > options.maxShade)
|
|
283
|
+
continue;
|
|
284
|
+
if (options.minShade !== undefined && shade < options.minShade)
|
|
285
|
+
continue;
|
|
286
|
+
if (calculateContrastRatio(surface, palette[shade]) >= (options.minRatio ?? WCAG_AA_TEXT))
|
|
287
|
+
return shade;
|
|
288
|
+
}
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
/** Cartes de couleurs des composants à texte coloré (BadgeComponent, LinkComponent). */
|
|
292
|
+
export function badgeColorMap(palette, gray) {
|
|
293
|
+
return { text: findShade(palette, palette[50]) ?? 900, 'dark:text': findShade(palette, gray[600], { maxShade: 500, fromDarkest: true }) ?? 200 };
|
|
294
|
+
}
|
|
295
|
+
/** Port de DropdownComponent\ItemComponent::getColorMap. */
|
|
296
|
+
export function dropdownItemColorMap(palette, gray) {
|
|
297
|
+
return {
|
|
298
|
+
text: findShade(palette, 'oklch(1 0 0)', { minShade: 600 }) ?? 950,
|
|
299
|
+
'hover:text': findShade(palette, palette[50], { minShade: 600 }) ?? 950,
|
|
300
|
+
'dark:text': findShade(palette, gray[900], { maxShade: 400, fromDarkest: true }) ?? 200,
|
|
301
|
+
'dark:hover:text': findShade(palette, palette[950], { maxShade: 400, fromDarkest: true }) ?? 100,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
/** Port de IconColumnComponent\IconComponent::getColorMap (contraste non textuel, 3:1). */
|
|
305
|
+
export function iconColumnColorMap(palette, gray) {
|
|
306
|
+
return { text: findShade(palette, 'oklch(1 0 0)', { minRatio: 3 }) ?? 900, 'dark:text': findShade(palette, gray[800], { minRatio: 3, maxShade: 600, fromDarkest: true }) ?? 200 };
|
|
307
|
+
}
|
|
308
|
+
/** Port de IconButtonComponentColorMap (contraste non textuel 3:1, surfaces gray-50 / gray-700). */
|
|
309
|
+
export function iconButtonColorMap(palette, gray) {
|
|
310
|
+
const light = findShade(palette, gray[50], { minRatio: 3 });
|
|
311
|
+
const dark = findShade(palette, gray[700], { minRatio: 3, maxShade: 500, fromDarkest: true });
|
|
312
|
+
// Au-delà de 500 la teinte est déjà sombre : au survol on l'assombrit au lieu de l'éclaircir.
|
|
313
|
+
const [text, hoverText] = light === null ? [900, 800] : light > 500 ? [light, light + 100] : [light + 100, light];
|
|
314
|
+
return { text, 'hover:text': hoverText, 'dark:text': dark ?? 200, 'dark:hover:text': dark === null ? 100 : dark - 100 };
|
|
315
|
+
}
|
|
316
|
+
/** Port de ToggleComponent::getColorMap (contraste non textuel 3:1). */
|
|
317
|
+
export function toggleColorMap(palette, gray) {
|
|
318
|
+
return { bg: findShade(palette, gray[50], { minRatio: 3 }) ?? 900, text: findShade(palette, 'oklch(1 0 0)', { minRatio: 3 }) ?? 900, 'dark:bg': findShade(palette, gray[700], { minRatio: 3, fromDarkest: true }) ?? 200 };
|
|
319
|
+
}
|
|
320
|
+
export function linkColorMap(palette, gray) {
|
|
321
|
+
return { text: findShade(palette, gray[50]) ?? 900, 'dark:text': findShade(palette, gray[700], { maxShade: 400, fromDarkest: true }) ?? 200 };
|
|
322
|
+
}
|
|
323
|
+
/** Bouton à contour : seule la couleur du texte dépend de la palette (ButtonComponent, `isOutlined`). */
|
|
324
|
+
export function outlinedButtonColorMap(palette, gray) {
|
|
325
|
+
return { text: findShade(palette, gray[50]) ?? 900, 'dark:text': findShade(palette, gray[700], { maxShade: 500, fromDarkest: true }) ?? 200 };
|
|
326
|
+
}
|
|
327
|
+
/** Carte de couleurs de chaque composant coloré (équivalent des classes `*Component::getColorMap`). */
|
|
328
|
+
const COMPONENT_COLOR_MAPS = {
|
|
329
|
+
button: (palette) => buttonColorMap(palette),
|
|
330
|
+
'button-outlined': outlinedButtonColorMap,
|
|
331
|
+
badge: badgeColorMap,
|
|
332
|
+
link: linkColorMap,
|
|
333
|
+
'dropdown-item': dropdownItemColorMap,
|
|
334
|
+
'icon-column': iconColumnColorMap,
|
|
335
|
+
'icon-button': iconButtonColorMap,
|
|
336
|
+
toggle: toggleColorMap,
|
|
337
|
+
// Port de StatsOverviewWidgetComponentStatComponentDescriptionComponent et ChartComponent (ce dernier ne pose que `fi-color`).
|
|
338
|
+
'stat-description': (palette, gray) => ({ text: findShade(palette, 'oklch(1 0 0)', { minShade: 600 }) ?? 950, 'dark:text': findShade(palette, gray[900], { maxShade: 400, fromDarkest: true }) ?? 200 }),
|
|
339
|
+
'stat-chart': () => ({}),
|
|
340
|
+
// Texte coloré d'une colonne ou d'une entrée. Gris : 500 / 400, relevé sur Filament ; autres couleurs : même recherche de contraste que la description d'une statistique (non comparé à Filament).
|
|
341
|
+
text: (palette, gray) => (palette === gray ? { text: 500, 'dark:text': 400 } : { text: findShade(palette, 'oklch(1 0 0)', { minShade: 600 }) ?? 950, 'dark:text': findShade(palette, gray[900], { maxShade: 400, fromDarkest: true }) ?? 50 }),
|
|
342
|
+
};
|
|
343
|
+
const CLASS_FOR = {
|
|
344
|
+
bg: (s) => `fi-bg-color-${s}`, 'hover:bg': (s) => `hover:fi-bg-color-${s}`, 'dark:bg': (s) => `dark:fi-bg-color-${s}`, 'dark:hover:bg': (s) => `dark:hover:fi-bg-color-${s}`,
|
|
345
|
+
text: (s) => `fi-text-color-${s}`, 'hover:text': (s) => `hover:fi-text-color-${s}`, 'dark:text': (s) => `dark:fi-text-color-${s}`, 'dark:hover:text': (s) => `dark:hover:fi-text-color-${s}`,
|
|
346
|
+
};
|
|
347
|
+
/** Port de ColorManager. */
|
|
348
|
+
export class ColorManager {
|
|
349
|
+
static DEFAULT_COLORS = { danger: Color.Red, gray: Color.Zinc, info: Color.Blue, primary: Color.Amber, success: Color.Green, warning: Color.Amber };
|
|
350
|
+
colors = { ...ColorManager.DEFAULT_COLORS };
|
|
351
|
+
cache = new Map();
|
|
352
|
+
/** Couleurs propres à la requête en cours (thème choisi par l'utilisateur) : elles priment sur celles du panel. */
|
|
353
|
+
scope = new AsyncLocalStorage();
|
|
354
|
+
register(colors) { for (const [name, color] of Object.entries(colors))
|
|
355
|
+
this.colors[name] = toPalette(color); this.cache.clear(); return this; }
|
|
356
|
+
/** Exécute `fn` avec des couleurs qui ne valent que pour cette requête ; `key` identifie le jeu de couleurs (cache). */
|
|
357
|
+
runWith(key, colors, fn) {
|
|
358
|
+
return this.scope.run({ key, colors: Object.fromEntries(Object.entries(colors).map(([name, color]) => [name, toPalette(color)])) }, fn);
|
|
359
|
+
}
|
|
360
|
+
getColors() { return { ...this.colors, ...(this.scope.getStore()?.colors ?? {}) }; }
|
|
361
|
+
getColor(name) { return this.scope.getStore()?.colors[name] ?? this.colors[name]; }
|
|
362
|
+
/** Classes d'un composant coloré (`getComponentClasses`). Seul le bouton plein est porté pour l'instant. */
|
|
363
|
+
getComponentClasses(component, color) {
|
|
364
|
+
if (!color)
|
|
365
|
+
return [];
|
|
366
|
+
const key = `${this.scope.getStore()?.key ?? ''}:${component}:${color}`;
|
|
367
|
+
const hit = this.cache.get(key);
|
|
368
|
+
if (hit)
|
|
369
|
+
return hit;
|
|
370
|
+
let classes = [];
|
|
371
|
+
// Seul le bouton a le gris pour couleur par défaut sans classe (HasDefaultGrayColor).
|
|
372
|
+
if (color !== 'gray' || component !== 'button') {
|
|
373
|
+
classes = ['fi-color', 'fi-color-' + color.replace(/[^a-zA-Z0-9_-]/g, '')];
|
|
374
|
+
const palette = this.getColor(color);
|
|
375
|
+
if (palette) {
|
|
376
|
+
const gray = this.getColor('gray');
|
|
377
|
+
const map = COMPONENT_COLOR_MAPS[component](palette, gray);
|
|
378
|
+
classes.push(...Object.entries(map).map(([k, shade]) => CLASS_FOR[k](shade)));
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
this.cache.set(key, classes);
|
|
382
|
+
return classes;
|
|
383
|
+
}
|
|
384
|
+
/** Bloc `<style>` des variables `--<couleur>-<nuance>` injecté dans `<head>`. */
|
|
385
|
+
renderCssVariables() {
|
|
386
|
+
const vars = Object.entries(this.getColors()).map(([name, palette]) => Object.entries(palette).map(([shade, value]) => ` --${name}-${shade}:${value}; `).join('')).join('');
|
|
387
|
+
return `<style>\n :root {\n ${vars}}\n</style>`;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// ------------------------------------------------------------------ icônes (generate_icon_html + Heroicons)
|
|
391
|
+
const iconCache = new Map();
|
|
392
|
+
/** Icône Heroicons (`m-eye`, `o-user`, `s-…`, `c-…`) avec les classes `fi-icon fi-size-<taille>`. */
|
|
393
|
+
export function icon(name, options = {}) {
|
|
394
|
+
let svg = iconCache.get(name);
|
|
395
|
+
if (svg === undefined) {
|
|
396
|
+
const file = here(`../icons/heroicons/${name.replace(/^heroicon-/, '')}.svg`);
|
|
397
|
+
if (!existsSync(file))
|
|
398
|
+
throw new Error(`Icône introuvable : ${name}`);
|
|
399
|
+
svg = readFileSync(file, 'utf8').trim();
|
|
400
|
+
iconCache.set(name, svg);
|
|
401
|
+
}
|
|
402
|
+
const a = (options.attributes ?? new Attributes()).class(['fi-icon', `fi-size-${options.size ?? 'md'}`]);
|
|
403
|
+
return svg.replace(/^<svg/, `<svg ${a.toHtml()}`);
|
|
404
|
+
}
|
|
405
|
+
/** Déclare une icône hors Heroicons (logo de marque, pictogramme maison) : un `<svg>` complet, fourni par l'application et non par l'utilisateur. */
|
|
406
|
+
export function registerIcon(name, svg) {
|
|
407
|
+
if (!/^<svg[\s>]/.test(svg.trim()))
|
|
408
|
+
throw new Error(`registerIcon(${name}) attend un élément <svg>.`);
|
|
409
|
+
iconCache.set(name, svg.trim());
|
|
410
|
+
}
|
|
411
|
+
/** Indicateur de chargement (`generate_loading_indicator_html`). */
|
|
412
|
+
export function loadingIndicator(attributes = new Attributes(), size = 'md') {
|
|
413
|
+
const a = attributes.class(['fi-icon fi-loading-indicator', `fi-size-${size}`]);
|
|
414
|
+
return `<svg fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" ${a.toHtml()}><path clip-rule="evenodd" d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" fill-rule="evenodd" fill="currentColor" opacity="0.2"></path><path d="M2 12C2 6.47715 6.47715 2 12 2V5C8.13401 5 5 8.13401 5 12H2Z" fill="currentColor"></path></svg>`;
|
|
415
|
+
}
|
|
416
|
+
// ------------------------------------------------------------------ vues EJS à espaces de noms, surchargeables
|
|
417
|
+
/** Registre de vues : `filament-forms::components.text-input` → fichier EJS ; les dossiers de surcharge passent en premier. */
|
|
418
|
+
export class ViewRegistry {
|
|
419
|
+
namespaces = new Map();
|
|
420
|
+
overrides = [];
|
|
421
|
+
compiled = new Map();
|
|
422
|
+
shared = {};
|
|
423
|
+
namespace(name, dir) { this.namespaces.set(name, dir); return this; }
|
|
424
|
+
/** Dossier de surcharge de l'application : `<dir>/<espace>/<chemin>.ejs` remplace la vue du paquet. */
|
|
425
|
+
overrideFrom(dir) { this.overrides.unshift(dir); this.compiled.clear(); return this; }
|
|
426
|
+
share(data) { Object.assign(this.shared, data); return this; }
|
|
427
|
+
resolve(view) {
|
|
428
|
+
const [ns, name] = view.split('::');
|
|
429
|
+
const rel = name.replace(/\./g, '/') + '.ejs';
|
|
430
|
+
for (const dir of this.overrides) {
|
|
431
|
+
const f = path.join(dir, ns, rel);
|
|
432
|
+
if (existsSync(f))
|
|
433
|
+
return f;
|
|
434
|
+
}
|
|
435
|
+
const base = this.namespaces.get(ns);
|
|
436
|
+
if (!base)
|
|
437
|
+
throw new Error(`Espace de noms de vues inconnu : ${ns}`);
|
|
438
|
+
return path.join(base, rel);
|
|
439
|
+
}
|
|
440
|
+
render(view, data = {}) {
|
|
441
|
+
let fn = this.compiled.get(view);
|
|
442
|
+
if (!fn) {
|
|
443
|
+
const file = this.resolve(view);
|
|
444
|
+
fn = ejs.compile(readFileSync(file, 'utf8'), { filename: file });
|
|
445
|
+
this.compiled.set(view, fn);
|
|
446
|
+
}
|
|
447
|
+
return fn({ e, js, cls, attrs, icon, loadingIndicator, view: (v, d) => this.render(v, d), ...this.shared, ...data });
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
export const views = new ViewRegistry();
|
|
451
|
+
// ------------------------------------------------------------------ réglages globaux (équivalent de configureUsing)
|
|
452
|
+
const configurators = new Map();
|
|
453
|
+
/** Enregistre un réglage appliqué à chaque instance de la classe (et de ses sous-classes) créée ensuite par `make()`. */
|
|
454
|
+
export function configureUsing(cls, configure) {
|
|
455
|
+
configurators.set(cls, [...(configurators.get(cls) ?? []), configure]);
|
|
456
|
+
}
|
|
457
|
+
/** Applique les réglages globaux à une instance fraîchement créée, de la classe la plus générale à la plus précise. */
|
|
458
|
+
export function configured(instance) {
|
|
459
|
+
if (!configurators.size)
|
|
460
|
+
return instance;
|
|
461
|
+
const chain = [];
|
|
462
|
+
for (let cls = instance.constructor; cls && cls !== Object && cls !== Function.prototype; cls = Object.getPrototypeOf(cls))
|
|
463
|
+
chain.unshift(cls);
|
|
464
|
+
for (const cls of chain)
|
|
465
|
+
for (const configure of configurators.get(cls) ?? [])
|
|
466
|
+
configure(instance);
|
|
467
|
+
return instance;
|
|
468
|
+
}
|
|
469
|
+
/** Oublie tous les réglages globaux (tests). */
|
|
470
|
+
export function resetConfigurators() { configurators.clear(); }
|
|
471
|
+
const UNSCOPED = Symbol('unscoped');
|
|
472
|
+
/** Registre de render hooks. Un hook sans portée est rendu partout ; avec portées, seulement quand l'appel porte l'une d'elles. */
|
|
473
|
+
export class RenderHookRegistry {
|
|
474
|
+
hooks = new Map();
|
|
475
|
+
register(name, hook, scopes = null) {
|
|
476
|
+
const byScope = this.hooks.get(name) ?? new Map();
|
|
477
|
+
this.hooks.set(name, byScope);
|
|
478
|
+
const list = scopes === null || scopes === undefined ? [UNSCOPED] : Array.isArray(scopes) ? scopes : [scopes];
|
|
479
|
+
for (const scope of list)
|
|
480
|
+
byScope.set(scope, [...(byScope.get(scope) ?? []), hook]);
|
|
481
|
+
return this;
|
|
482
|
+
}
|
|
483
|
+
/** Hooks à rendre pour cet appel, dans l'ordre de Filament : sans portée d'abord, puis portée par portée, chacun une seule fois. */
|
|
484
|
+
collect(name, scopes) {
|
|
485
|
+
const byScope = this.hooks.get(name);
|
|
486
|
+
if (!byScope)
|
|
487
|
+
return [];
|
|
488
|
+
const found = [];
|
|
489
|
+
for (const scope of [UNSCOPED, ...scopes])
|
|
490
|
+
for (const hook of byScope.get(scope) ?? [])
|
|
491
|
+
if (!found.includes(hook))
|
|
492
|
+
found.push(hook);
|
|
493
|
+
return found;
|
|
494
|
+
}
|
|
495
|
+
has(name, scopes = null) { return this.collect(name, toScopes(scopes)).length > 0; }
|
|
496
|
+
render(name, scopes = null, data = {}) {
|
|
497
|
+
const list = toScopes(scopes);
|
|
498
|
+
return this.collect(name, list).map((hook) => hook({ scopes: list, data }) ?? '').join('');
|
|
499
|
+
}
|
|
500
|
+
clear() { this.hooks.clear(); }
|
|
501
|
+
}
|
|
502
|
+
const toScopes = (scopes) => (scopes === null || scopes === undefined ? [] : Array.isArray(scopes) ? scopes : [scopes]);
|
|
503
|
+
/** Hooks communs à tout le processus (tous les panels). */
|
|
504
|
+
export const renderHooks = new RenderHookRegistry();
|
|
505
|
+
const renderHookScope = new AsyncLocalStorage();
|
|
506
|
+
/** Exécute un rendu avec, en plus des hooks communs, ceux d'un registre propre (celui du panel de la requête). */
|
|
507
|
+
export function runWithRenderHooks(registry, fn) { return renderHookScope.run(registry, fn); }
|
|
508
|
+
const activeRegistries = () => { const own = renderHookScope.getStore(); return own && own !== renderHooks ? [renderHooks, own] : [renderHooks]; };
|
|
509
|
+
/** Rend un emplacement : hooks communs, puis hooks du panel en cours. */
|
|
510
|
+
export function renderHook(name, scopes = null, data = {}) {
|
|
511
|
+
return activeRegistries().map((registry) => registry.render(name, scopes, data)).join('');
|
|
512
|
+
}
|
|
513
|
+
export function hasRenderHook(name, scopes = null) {
|
|
514
|
+
return activeRegistries().some((registry) => registry.has(name, scopes));
|
|
515
|
+
}
|
|
516
|
+
views.share({ renderHook, hasRenderHook });
|