diff --git a/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js b/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js index 4f861398103..dd590e5a344 100644 --- a/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js +++ b/app/assets/javascripts/discourse-common/addon/deprecation-workflow.js @@ -9,6 +9,10 @@ const DEPRECATION_WORKFLOW = [ handler: "silence", matchId: "discourse.decorate-widget.hamburger-widget-links", }, + { + handler: "silence", + matchId: "discourse.fontawesome-6-upgrade", + }, ]; export default DEPRECATION_WORKFLOW; diff --git a/app/assets/javascripts/discourse-common/addon/lib/icon-library.js b/app/assets/javascripts/discourse-common/addon/lib/icon-library.js index 8a0a43f47fd..dd5c061e071 100644 --- a/app/assets/javascripts/discourse-common/addon/lib/icon-library.js +++ b/app/assets/javascripts/discourse-common/addon/lib/icon-library.js @@ -29,7 +29,7 @@ export const REPLACEMENTS = { "notification.replied": "reply", "notification.posted": "discourse-bell-exclamation", "notification.watching_category_or_tag": "discourse-bell-exclamation", - "notification.edited": "pencil-alt", + "notification.edited": "pencil", "notification.bookmark_reminder": "discourse-bookmark-clock", "notification.liked": "heart", "notification.liked_2": "heart", @@ -39,7 +39,7 @@ export const REPLACEMENTS = { "notification.invited_to_private_message": "envelope", "notification.invited_to_topic": "hand-point-right", "notification.invitee_accepted": "user", - "notification.moved_post": "sign-out-alt", + "notification.moved_post": "right-from-bracket", "notification.linked": "link", "notification.linked_consolidated": "link", "notification.granted_badge": "certificate", @@ -53,11 +53,14 @@ export const REPLACEMENTS = { "notification.votes_released": "plus", "notification.chat_quoted": "quote-right", "user_menu.replies": "reply", - "user_menu.drafts": "pencil-alt", + "user_menu.drafts": "pencil", "sidebar.all_categories": "list", }; export function replaceIcon(source, destination) { + source = handleDeprecatedIcon(source); + destination = handleDeprecatedIcon(destination); + REPLACEMENTS[source] = destination; } @@ -132,6 +135,24 @@ export function isExistingIconId(id) { return _iconList?.includes(id); } +function handleDeprecatedIcon(id) { + let newId = id; + + newId = convertIconClass(newId); // Remap from FA4 + newId = remapFromFA5(newId); + + if (newId !== id) { + deprecated( + `The icon name "${id}" has been updated to "${newId}". Please use the new name in your code. Old names will be removed in Q2 2025.`, + { + id: "discourse.fontawesome-6-upgrade", + } + ); + } + + return newId; +} + function warnIfMissing(id) { if (warnMissingIcons && isDevelopment() && !isExistingIconId(id)) { console.warn(`The icon "${id}" is missing from the SVG subset.`); // eslint-disable-line no-console @@ -144,6 +165,8 @@ function handleIconId(icon) { // TODO: clean up "thumbtack unpinned" at source instead of here id = id.replace(" unpinned", ""); + id = handleDeprecatedIcon(id); // Automatically remap deprecated icon names + warnIfMissing(id); return id; } @@ -222,3 +245,706 @@ registerIconRenderer({ } }, }); + +function remapFromFA5(id) { + let lookupId = id; + let prefix; + + if (id.startsWith("far-")) { + prefix = "far"; + lookupId = id.replace("far-", ""); + } else if (id.startsWith("fab-")) { + prefix = "fab"; + lookupId = id.replace("fab-", ""); + } + + if (FA5_REMAPS.hasOwnProperty(lookupId)) { + let newId = FA5_REMAPS[lookupId]; + + if (prefix) { + newId = `${prefix}-${newId}`; + } + return newId; + } + return id; +} + +// We don't want to carry this list forever, so let's remove it a little after the 3.4 stable release ~Q2 2025 +const FA5_REMAPS = { + adjust: "circle-half-stroke", + "air-freshener": "spray-can-sparkles", + "alien-monster": "alien-8bit", + allergies: "hand-dots", + ambulance: "truck-medical", + "american-sign-language-interpreting": "hands-asl-interpreting", + analytics: "chart-mixed", + "angle-double-down": "angles-down", + "angle-double-left": "angles-left", + "angle-double-right": "angles-right", + "angle-double-up": "angles-up", + angry: "face-angry", + "apple-alt": "apple-whole", + "apple-crate": "crate-apple", + archive: "box-archive", + "arrow-alt-circle-down": "circle-down", + "arrow-alt-circle-left": "circle-left", + "arrow-alt-circle-right": "circle-right", + "arrow-alt-circle-up": "circle-up", + "arrow-alt-down": "down", + "arrow-alt-from-bottom": "up-from-line", + "arrow-alt-from-left": "right-from-line", + "arrow-alt-from-right": "left-from-line", + "arrow-alt-from-top": "down-from-line", + "arrow-alt-left": "left", + "arrow-alt-right": "right", + "arrow-alt-square-down": "square-down", + "arrow-alt-square-left": "square-left", + "arrow-alt-square-right": "square-right", + "arrow-alt-square-up": "square-up", + "arrow-alt-to-bottom": "down-to-line", + "arrow-alt-to-left": "left-to-line", + "arrow-alt-to-right": "right-to-line", + "arrow-alt-to-top": "up-to-line", + "arrow-alt-up": "up", + "arrow-circle-down": "circle-arrow-down", + "arrow-circle-left": "circle-arrow-left", + "arrow-circle-right": "circle-arrow-right", + "arrow-circle-up": "circle-arrow-up", + "arrow-from-bottom": "arrow-up-from-line", + "arrow-from-left": "arrow-right-from-line", + "arrow-from-right": "arrow-left-from-line", + "arrow-from-top": "arrow-down-from-line", + "arrow-square-down": "square-arrow-down", + "arrow-square-left": "square-arrow-left", + "arrow-square-right": "square-arrow-right", + "arrow-square-up": "square-arrow-up", + "arrow-to-bottom": "arrow-down-to-line", + "arrow-to-left": "arrow-left-to-line", + "arrow-to-right": "arrow-right-to-line", + "arrow-to-top": "arrow-up-to-line", + arrows: "arrows-up-down-left-right", + "arrows-alt": "up-down-left-right", + "arrows-alt-h": "left-right", + "arrows-alt-v": "up-down", + "arrows-h": "arrows-left-right", + "arrows-v": "arrows-up-down", + "assistive-listening-systems": "ear-listen", + atlas: "book-atlas", + "atom-alt": "atom-simple", + backspace: "delete-left", + "balance-scale": "scale-balanced", + "balance-scale-left": "scale-unbalanced", + "balance-scale-right": "scale-unbalanced-flip", + "band-aid": "bandage", + "barcode-alt": "rectangle-barcode", + "baseball-ball": "baseball", + "basketball-ball": "basketball", + "bed-alt": "bed-front", + beer: "beer-mug-empty", + betamax: "cassette-betamax", + bible: "book-bible", + biking: "person-biking", + "biking-mountain": "person-biking-mountain", + "birthday-cake": "cake-candles", + blind: "person-walking-with-cane", + "book-alt": "book-blank", + "book-dead": "book-skull", + "book-reader": "book-open-reader", + "book-spells": "book-sparkles", + "border-style": "border-top-left", + "border-style-alt": "border-bottom-right", + "box-alt": "box-taped", + "box-fragile": "square-fragile", + "box-full": "box-open-full", + "box-up": "square-this-way-up", + "box-usd": "box-dollar", + boxes: "boxes-stacked", + "boxes-alt": "boxes-stacked", + brackets: "brackets-square", + "broadcast-tower": "tower-broadcast", + burn: "fire-flame-simple", + "bus-alt": "bus-simple", + "calculator-alt": "calculator-simple", + "calendar-alt": "calendar-days", + "calendar-edit": "calendar-pen", + "calendar-times": "calendar-xmark", + "camera-alt": "camera", + "camera-home": "camera-security", + "car-alt": "car-rear", + "car-crash": "car-burst", + "car-mechanic": "car-wrench", + "caravan-alt": "caravan-simple", + "caret-circle-down": "circle-caret-down", + "caret-circle-left": "circle-caret-left", + "caret-circle-right": "circle-caret-right", + "caret-circle-up": "circle-caret-up", + "caret-square-down": "square-caret-down", + "caret-square-left": "square-caret-left", + "caret-square-right": "square-caret-right", + "caret-square-up": "square-caret-up", + cctv: "camera-cctv", + "chalkboard-teacher": "chalkboard-user", + "chart-pie-alt": "chart-pie-simple", + "check-circle": "circle-check", + "check-square": "square-check", + cheeseburger: "burger-cheese", + "chess-bishop-alt": "chess-bishop-piece", + "chess-clock-alt": "chess-clock-flip", + "chess-king-alt": "chess-king-piece", + "chess-knight-alt": "chess-knight-piece", + "chess-pawn-alt": "chess-pawn-piece", + "chess-queen-alt": "chess-queen-piece", + "chess-rook-alt": "chess-rook-piece", + "chevron-circle-down": "circle-chevron-down", + "chevron-circle-left": "circle-chevron-left", + "chevron-circle-right": "circle-chevron-right", + "chevron-circle-up": "circle-chevron-up", + "chevron-double-down": "chevrons-down", + "chevron-double-left": "chevrons-left", + "chevron-double-right": "chevrons-right", + "chevron-double-up": "chevrons-up", + "chevron-square-down": "square-chevron-down", + "chevron-square-left": "square-chevron-left", + "chevron-square-right": "square-chevron-right", + "chevron-square-up": "square-chevron-up", + "clinic-medical": "house-chimney-medical", + "cloud-download": "cloud-arrow-down", + "cloud-download-alt": "cloud-arrow-down", + "cloud-upload": "cloud-arrow-up", + "cloud-upload-alt": "cloud-arrow-up", + cocktail: "martini-glass-citrus", + coffee: "mug-saucer", + "coffee-togo": "cup-togo", + cog: "gear", + cogs: "gears", + columns: "table-columns", + "comment-alt": "message", + "comment-alt-check": "message-check", + "comment-alt-dollar": "message-dollar", + "comment-alt-dots": "message-dots", + "comment-alt-edit": "message-pen", + "comment-alt-exclamation": "message-exclamation", + "comment-alt-lines": "message-lines", + "comment-alt-medical": "message-medical", + "comment-alt-minus": "message-minus", + "comment-alt-music": "message-music", + "comment-alt-plus": "message-plus", + "comment-alt-slash": "message-slash", + "comment-alt-smile": "message-smile", + "comment-alt-times": "message-xmark", + "comment-edit": "comment-pen", + "comment-times": "comment-xmark", + "comments-alt": "messages", + "comments-alt-dollar": "messages-dollar", + "compress-alt": "down-left-and-up-right-to-center", + "compress-arrows-alt": "minimize", + "concierge-bell": "bell-concierge", + construction: "triangle-person-digging", + "conveyor-belt-alt": "conveyor-belt-boxes", + "cowbell-more": "cowbell-circle-plus", + cricket: "cricket-bat-ball", + "crop-alt": "crop-simple", + curling: "curling-stone", + cut: "scissors", + deaf: "ear-deaf", + debug: "ban-bug", + "desktop-alt": "desktop", + dewpoint: "droplet-degree", + diagnoses: "person-dots-from-line", + digging: "person-digging", + "digital-tachograph": "tachograph-digital", + directions: "diamond-turn-right", + dizzy: "face-dizzy", + "dolly-flatbed": "cart-flatbed", + "dolly-flatbed-alt": "cart-flatbed-boxes", + "dolly-flatbed-empty": "cart-flatbed-empty", + donate: "circle-dollar-to-slot", + "dot-circle": "circle-dot", + "drafting-compass": "compass-drafting", + "drone-alt": "drone-front", + "dryer-alt": "dryer-heat", + "eclipse-alt": "moon-over-sun", + edit: "pen-to-square", + "ellipsis-h": "ellipsis", + "ellipsis-h-alt": "ellipsis-stroke", + "ellipsis-v": "ellipsis-vertical", + "ellipsis-v-alt": "ellipsis-stroke-vertical", + "envelope-square": "square-envelope", + exchange: "arrow-right-arrow-left", + "exchange-alt": "right-left", + "exclamation-circle": "circle-exclamation", + "exclamation-square": "square-exclamation", + "exclamation-triangle": "triangle-exclamation", + "expand-alt": "up-right-and-down-left-from-center", + "expand-arrows": "arrows-maximize", + "expand-arrows-alt": "maximize", + "external-link": "arrow-up-right-from-square", + "external-link-alt": "up-right-from-square", + "external-link-square": "square-arrow-up-right", + "external-link-square-alt": "square-up-right", + eyedropper: "eye-dropper", + "fast-backward": "backward-fast", + "fast-forward": "forward-fast", + "feather-alt": "feather-pointed", + female: "person-dress", + "field-hockey": "field-hockey-stick-ball", + "fighter-jet": "jet-fighter", + "file-alt": "file-lines", + "file-archive": "file-zipper", + "file-chart-line": "file-chart-column", + "file-download": "file-arrow-down", + "file-edit": "file-pen", + "file-medical-alt": "file-waveform", + "file-search": "file-magnifying-glass", + "file-times": "file-xmark", + "file-upload": "file-arrow-up", + "film-alt": "film-simple", + "fire-alt": "fire-flame-curved", + "first-aid": "kit-medical", + "fist-raised": "hand-fist", + "flag-alt": "flag-swallowtail", + flame: "fire-flame", + "flask-poison": "flask-round-poison", + "flask-potion": "flask-round-potion", + flushed: "face-flushed", + fog: "cloud-fog", + "folder-download": "folder-arrow-down", + "folder-times": "folder-xmark", + "folder-upload": "folder-arrow-up", + "font-awesome-alt": "square-font-awesome-stroke", + "font-awesome-flag": "font-awesome", + "font-awesome-logo-full": "font-awesome", + "football-ball": "football", + fragile: "wine-glass-crack", + "frosty-head": "snowman-head", + frown: "face-frown", + "frown-open": "face-frown-open", + "funnel-dollar": "filter-circle-dollar", + "game-board-alt": "game-board-simple", + "gamepad-alt": "gamepad-modern", + "glass-champagne": "champagne-glass", + "glass-cheers": "champagne-glasses", + "glass-martini": "martini-glass-empty", + "glass-martini-alt": "martini-glass", + "glass-whiskey": "whiskey-glass", + "glass-whiskey-rocks": "whiskey-glass-ice", + "glasses-alt": "glasses-round", + "globe-africa": "earth-africa", + "globe-americas": "earth-americas", + "globe-asia": "earth-asia", + "globe-europe": "earth-europe", + "golf-ball": "golf-ball-tee", + grimace: "face-grimace", + grin: "face-grin", + "grin-alt": "face-grin-wide", + "grin-beam": "face-grin-beam", + "grin-beam-sweat": "face-grin-beam-sweat", + "grin-hearts": "face-grin-hearts", + "grin-squint": "face-grin-squint", + "grin-squint-tears": "face-grin-squint-tears", + "grin-stars": "face-grin-stars", + "grin-tears": "face-grin-tears", + "grin-tongue": "face-grin-tongue", + "grin-tongue-squint": "face-grin-tongue-squint", + "grin-tongue-wink": "face-grin-tongue-wink", + "grin-wink": "face-grin-wink", + "grip-horizontal": "grip", + "h-square": "square-h", + hamburger: "burger", + "hand-holding-usd": "hand-holding-dollar", + "hand-holding-water": "hand-holding-droplet", + "hand-paper": "hand", + "hand-receiving": "hands-holding-diamond", + "hand-rock": "hand-back-fist", + "hands-heart": "hands-holding-heart", + "hands-helping": "handshake-angle", + "hands-usd": "hands-holding-dollar", + "hands-wash": "hands-bubbles", + "handshake-alt": "handshake-simple", + "handshake-alt-slash": "handshake-simple-slash", + "hard-hat": "helmet-safety", + hdd: "hard-drive", + "head-vr": "head-side-goggles", + "headphones-alt": "headphones-simple", + "heart-broken": "heart-crack", + "heart-circle": "circle-heart", + "heart-rate": "wave-pulse", + "heart-square": "square-heart", + heartbeat: "heart-pulse", + hiking: "person-hiking", + history: "clock-rotate-left", + home: "house", + "home-alt": "house", + "home-heart": "house-heart", + "home-lg": "house-chimney", + "home-lg-alt": "house", + "hospital-alt": "hospital", + "hospital-symbol": "circle-h", + "hot-tub": "hot-tub-person", + "hourglass-half": "hourglass", + "house-damage": "house-chimney-crack", + "house-leave": "house-person-leave", + "house-return": "house-person-return", + hryvnia: "hryvnia-sign", + humidity: "droplet-percent", + "icons-alt": "symbols", + "id-card-alt": "id-card-clip", + "industry-alt": "industry-windows", + "info-circle": "circle-info", + "info-square": "square-info", + innosoft: "42-group", + inventory: "shelves", + "journal-whills": "book-journal-whills", + kiss: "face-kiss", + "kiss-beam": "face-kiss-beam", + "kiss-wink-heart": "face-kiss-wink-heart", + "landmark-alt": "landmark-dome", + "laptop-house": "house-laptop", + laugh: "face-laugh", + "laugh-beam": "face-laugh-beam", + "laugh-squint": "face-laugh-squint", + "laugh-wink": "face-laugh-wink", + "level-down": "arrow-turn-down", + "level-down-alt": "turn-down", + "level-up": "arrow-turn-up", + "level-up-alt": "turn-up", + "list-alt": "rectangle-list", + location: "location-crosshairs", + "location-circle": "circle-location-arrow", + "location-slash": "location-crosshairs-slash", + "lock-alt": "lock-keyhole", + "lock-open-alt": "lock-keyhole-open", + "long-arrow-alt-down": "down-long", + "long-arrow-alt-left": "left-long", + "long-arrow-alt-right": "right-long", + "long-arrow-alt-up": "up-long", + "long-arrow-down": "arrow-down-long", + "long-arrow-left": "arrow-left-long", + "long-arrow-right": "arrow-right-long", + "long-arrow-up": "arrow-up-long", + "low-vision": "eye-low-vision", + luchador: "luchador-mask", + "luggage-cart": "cart-flatbed-suitcase", + magic: "wand-magic", + "mail-bulk": "envelopes-bulk", + male: "person", + "map-marked": "map-location", + "map-marked-alt": "map-location-dot", + "map-marker": "location-pin", + "map-marker-alt": "location-dot", + "map-marker-alt-slash": "location-dot-slash", + "map-marker-check": "location-check", + "map-marker-edit": "location-pen", + "map-marker-exclamation": "location-exclamation", + "map-marker-minus": "location-minus", + "map-marker-plus": "location-plus", + "map-marker-question": "location-question", + "map-marker-slash": "location-pin-slash", + "map-marker-smile": "location-smile", + "map-marker-times": "location-xmark", + "map-signs": "signs-post", + "mars-stroke-h": "mars-stroke-right", + "mars-stroke-v": "mars-stroke-up", + "medium-m": "medium", + medkit: "suitcase-medical", + meh: "face-meh", + "meh-blank": "face-meh-blank", + "meh-rolling-eyes": "face-rolling-eyes", + "microphone-alt": "microphone-lines", + "microphone-alt-slash": "microphone-lines-slash", + "mind-share": "brain-arrow-curved-right", + "minus-circle": "circle-minus", + "minus-hexagon": "hexagon-minus", + "minus-octagon": "octagon-minus", + "minus-square": "square-minus", + "mobile-alt": "mobile-screen-button", + "mobile-android": "mobile", + "mobile-android-alt": "mobile-screen", + "money-bill-alt": "money-bill-1", + "money-bill-wave-alt": "money-bill-1-wave", + "money-check-alt": "money-check-dollar", + "money-check-edit": "money-check-pen", + "money-check-edit-alt": "money-check-dollar-pen", + "monitor-heart-rate": "monitor-waveform", + mouse: "computer-mouse", + "mouse-alt": "computer-mouse-scrollwheel", + "mouse-pointer": "arrow-pointer", + "music-alt": "music-note", + "music-alt-slash": "music-note-slash", + "oil-temp": "oil-temperature", + "page-break": "file-dashed-line", + "paint-brush": "paintbrush", + "paint-brush-alt": "paintbrush-fine", + "paint-brush-fine": "paintbrush-fine", + "pallet-alt": "pallet-boxes", + "paragraph-rtl": "paragraph-left", + parking: "square-parking", + "parking-circle": "circle-parking", + "parking-circle-slash": "ban-parking", + "parking-slash": "square-parking-slash", + pastafarianism: "spaghetti-monster-flying", + "pause-circle": "circle-pause", + "paw-alt": "paw-simple", + "pen-alt": "pen-clip", + "pen-square": "square-pen", + "pencil-alt": "pencil", + "pencil-paintbrush": "pen-paintbrush", + "pencil-ruler": "pen-ruler", + pennant: "flag-pennant", + "people-arrows": "people-arrows-left-right", + "people-carry": "people-carry-box", + percentage: "percent", + "person-carry": "person-carry-box", + "phone-alt": "phone-flip", + "phone-laptop": "laptop-mobile", + "phone-square": "square-phone", + "phone-square-alt": "square-phone-flip", + "photo-video": "photo-film", + "plane-alt": "plane-engines", + "play-circle": "circle-play", + "plus-circle": "circle-plus", + "plus-hexagon": "hexagon-plus", + "plus-octagon": "octagon-plus", + "plus-square": "square-plus", + poll: "square-poll-vertical", + "poll-h": "square-poll-horizontal", + "portal-enter": "person-to-portal", + "portal-exit": "person-from-portal", + portrait: "image-portrait", + "pound-sign": "sterling-sign", + pray: "person-praying", + "praying-hands": "hands-praying", + "prescription-bottle-alt": "prescription-bottle-medical", + presentation: "presentation-screen", + "print-search": "print-magnifying-glass", + procedures: "bed-pulse", + "project-diagram": "diagram-project", + "question-circle": "circle-question", + "question-square": "square-question", + quran: "book-quran", + "rabbit-fast": "rabbit-running", + "radiation-alt": "circle-radiation", + "radio-alt": "radio-tuner", + random: "shuffle", + "rectangle-landscape": "rectangle", + "rectangle-portrait": "rectangle-vertical", + redo: "arrow-rotate-right", + "redo-alt": "rotate-right", + "remove-format": "text-slash", + "repeat-1-alt": "arrows-repeat-1", + "repeat-alt": "arrows-repeat", + "retweet-alt": "arrows-retweet", + "rss-square": "square-rss", + running: "person-running", + "sad-cry": "face-sad-cry", + "sad-tear": "face-sad-tear", + save: "floppy-disk", + "sax-hot": "saxophone-fire", + "scalpel-path": "scalpel-line-dashed", + "scanner-image": "scanner", + search: "magnifying-glass", + "search-dollar": "magnifying-glass-dollar", + "search-location": "magnifying-glass-location", + "search-minus": "magnifying-glass-minus", + "search-plus": "magnifying-glass-plus", + "sensor-alert": "sensor-triangle-exclamation", + "sensor-smoke": "sensor-cloud", + "share-alt": "share-nodes", + "share-alt-square": "square-share-nodes", + "share-square": "share-from-square", + "shield-alt": "shield-halved", + "shipping-fast": "truck-fast", + "shipping-timed": "truck-clock", + "shopping-bag": "bag-shopping", + "shopping-basket": "basket-shopping", + "shopping-cart": "cart-shopping", + "shuttle-van": "van-shuttle", + sign: "sign-hanging", + "sign-in": "arrow-right-to-bracket", + "sign-in-alt": "right-to-bracket", + "sign-language": "hands", + "sign-out": "arrow-right-from-bracket", + "sign-out-alt": "right-from-bracket", + "signal-1": "signal-weak", + "signal-2": "signal-fair", + "signal-3": "signal-good", + "signal-4": "signal-strong", + "signal-alt": "signal-bars", + "signal-alt-1": "signal-bars-weak", + "signal-alt-2": "signal-bars-fair", + "signal-alt-3": "signal-bars-good", + "signal-alt-slash": "signal-bars-slash", + skating: "person-skating", + "ski-jump": "person-ski-jumping", + "ski-lift": "person-ski-lift", + skiing: "person-skiing", + "skiing-nordic": "person-skiing-nordic", + "slack-hash": "slack", + sledding: "person-sledding", + "sliders-h": "sliders", + "sliders-h-square": "square-sliders", + "sliders-v": "sliders-up", + "sliders-v-square": "square-sliders-vertical", + smile: "face-smile", + "smile-beam": "face-smile-beam", + "smile-plus": "face-smile-plus", + "smile-wink": "face-smile-wink", + "smoking-ban": "ban-smoking", + sms: "comment-sms", + "snapchat-ghost": "snapchat", + snowboarding: "person-snowboarding", + snowmobile: "person-snowmobiling", + "sort-alpha-down": "arrow-down-a-z", + "sort-alpha-down-alt": "arrow-down-z-a", + "sort-alpha-up": "arrow-up-a-z", + "sort-alpha-up-alt": "arrow-up-z-a", + "sort-alt": "arrow-down-arrow-up", + "sort-amount-down": "arrow-down-wide-short", + "sort-amount-down-alt": "arrow-down-short-wide", + "sort-amount-up": "arrow-up-wide-short", + "sort-amount-up-alt": "arrow-up-short-wide", + "sort-circle": "circle-sort", + "sort-circle-down": "circle-sort-down", + "sort-circle-up": "circle-sort-up", + "sort-numeric-down": "arrow-down-1-9", + "sort-numeric-down-alt": "arrow-down-9-1", + "sort-numeric-up": "arrow-up-1-9", + "sort-numeric-up-alt": "arrow-up-9-1", + "sort-shapes-down": "arrow-down-triangle-square", + "sort-shapes-down-alt": "arrow-down-square-triangle", + "sort-shapes-up": "arrow-up-triangle-square", + "sort-shapes-up-alt": "arrow-up-square-triangle", + "sort-size-down": "arrow-down-big-small", + "sort-size-down-alt": "arrow-down-small-big", + "sort-size-up": "arrow-up-big-small", + "sort-size-up-alt": "arrow-up-small-big", + soup: "bowl-hot", + "space-shuttle": "shuttle-space", + "space-station-moon-alt": "space-station-moon-construction", + "square-root-alt": "square-root-variable", + "star-half-alt": "star-half-stroke", + "starfighter-alt": "starfighter-twin-ion-engine", + "step-backward": "backward-step", + "step-forward": "forward-step", + "sticky-note": "note-sticky", + "stop-circle": "circle-stop", + "store-alt": "shop", + "store-alt-slash": "shop-slash", + stream: "bars-staggered", + subway: "train-subway", + surprise: "face-surprise", + swimmer: "person-swimming", + "swimming-pool": "water-ladder", + sync: "arrows-rotate", + "sync-alt": "rotate", + "table-tennis": "table-tennis-paddle-ball", + "tablet-alt": "tablet-screen-button", + "tablet-android": "tablet", + "tablet-android-alt": "tablet-screen", + tachometer: "gauge-simple", + "tachometer-alt": "gauge", + "tachometer-alt-average": "gauge-med", + "tachometer-alt-fast": "gauge", + "tachometer-alt-fastest": "gauge-max", + "tachometer-alt-slow": "gauge-low", + "tachometer-alt-slowest": "gauge-min", + "tachometer-average": "gauge-simple-med", + "tachometer-fast": "gauge-simple", + "tachometer-fastest": "gauge-simple-max", + "tachometer-slow": "gauge-simple-low", + "tachometer-slowest": "gauge-simple-min", + tanakh: "book-tanakh", + tasks: "list-check", + "tasks-alt": "bars-progress", + "telegram-plane": "telegram", + "temperature-down": "temperature-arrow-down", + "temperature-frigid": "temperature-snow", + "temperature-hot": "temperature-sun", + "temperature-up": "temperature-arrow-up", + tenge: "tenge-sign", + th: "table-cells", + "th-large": "table-cells-large", + "th-list": "table-list", + "theater-masks": "masks-theater", + "thermometer-empty": "temperature-empty", + "thermometer-full": "temperature-full", + "thermometer-half": "temperature-half", + "thermometer-quarter": "temperature-quarter", + "thermometer-three-quarters": "temperature-three-quarters", + "thumb-tack": "thumbtack", + thunderstorm: "cloud-bolt", + "thunderstorm-moon": "cloud-bolt-moon", + "thunderstorm-sun": "cloud-bolt-sun", + "ticket-alt": "ticket-simple", + times: "xmark", + "times-circle": "circle-xmark", + "times-hexagon": "hexagon-xmark", + "times-octagon": "octagon-xmark", + "times-square": "square-xmark", + tint: "droplet", + "tint-slash": "droplet-slash", + tired: "face-tired", + "toilet-paper-alt": "toilet-paper-blank", + "tombstone-alt": "tombstone-blank", + tools: "screwdriver-wrench", + torah: "scroll-torah", + tram: "train-tram", + "transgender-alt": "transgender", + "trash-alt": "trash-can", + "trash-restore": "trash-arrow-up", + "trash-restore-alt": "trash-can-arrow-up", + "trash-undo-alt": "trash-can-undo", + "tree-alt": "tree-deciduous", + "triangle-music": "triangle-instrument", + "trophy-alt": "trophy-star", + "truck-couch": "truck-ramp-couch", + "truck-loading": "truck-ramp-box", + tshirt: "shirt", + "tv-alt": "tv", + undo: "arrow-rotate-left", + "undo-alt": "rotate-left", + university: "building-columns", + unlink: "link-slash", + "unlock-alt": "unlock-keyhole", + "usd-circle": "circle-dollar", + "usd-square": "square-dollar", + "user-alt": "user-large", + "user-alt-slash": "user-large-slash", + "user-chart": "chart-user", + "user-circle": "circle-user", + "user-cog": "user-gear", + "user-edit": "user-pen", + "user-friends": "user-group", + "user-hard-hat": "user-helmet-safety", + "user-md": "user-doctor", + "user-md-chat": "user-doctor-message", + "user-times": "user-xmark", + "users-class": "screen-users", + "users-cog": "users-gear", + "users-crown": "user-group-crown", + "utensil-fork": "fork", + "utensil-knife": "knife", + "utensil-spoon": "spoon", + "utensils-alt": "fork-knife", + vhs: "cassette-vhs", + "volleyball-ball": "volleyball", + "volume-down": "volume-low", + "volume-mute": "volume-xmark", + "volume-up": "volume-high", + "vote-nay": "xmark-to-slot", + "vote-yea": "check-to-slot", + walking: "person-walking", + "warehouse-alt": "warehouse-full", + washer: "washing-machine", + "water-lower": "water-arrow-down", + "water-rise": "water-arrow-up", + "waveform-path": "waveform-lines", + webcam: "camera-web", + "webcam-slash": "camera-web-slash", + weight: "weight-scale", + "wifi-1": "wifi-weak", + "wifi-2": "wifi-fair", + "window-alt": "window-flip", + "window-close": "rectangle-xmark", + "wine-glass-alt": "wine-glass-empty", +}; diff --git a/app/assets/javascripts/discourse-markdown-it/src/features/image-controls.js b/app/assets/javascripts/discourse-markdown-it/src/features/image-controls.js index 4f5575811b4..d537a97277c 100644 --- a/app/assets/javascripts/discourse-markdown-it/src/features/image-controls.js +++ b/app/assets/javascripts/discourse-markdown-it/src/features/image-controls.js @@ -96,7 +96,7 @@ function buildImageShowAltTextControls(altText) { - + `; @@ -125,8 +125,8 @@ function buildImageDeleteButton() { title="${I18n.t("composer.delete_image_button")}" aria-label="${I18n.t("composer.delete_image_button")}" > - - + + `; @@ -137,8 +137,8 @@ function buildImageGalleryControl(imageCount) { - - + + `; @@ -212,8 +212,8 @@ export function setup(helper) { "span.alt-text-readonly-container.alt-text", "span.alt-text-readonly-container.alt-text-edit-btn", "svg[class=fa d-icon d-icon-pencil svg-icon svg-string]", - "use[href=#pencil-alt]", - "use[href=#far-trash-alt]", + "use[href=#pencil]", + "use[href=#trash-can]", "span.alt-text-edit-container", "span.delete-image-button", @@ -224,14 +224,14 @@ export function setup(helper) { "svg[class=fa d-icon d-icon-check svg-icon svg-string]", "use[href=#check]", "button[class=alt-text-edit-cancel btn btn-default]", - "svg[class=fa d-icon d-icon-times svg-icon svg-string]", - "svg[class=fa d-icon d-icon-trash-alt svg-icon svg-string]", - "use[href=#times]", + "svg[class=fa d-icon d-icon-xmark svg-icon svg-string]", + "svg[class=fa d-icon d-icon-trash-can svg-icon svg-string]", + "use[href=#xmark]", "span.wrap-image-grid-button", "span.wrap-image-grid-button[data-image-count]", - "svg[class=fa d-icon d-icon-th svg-icon svg-string]", - "use[href=#th]", + "svg[class=fa d-icon d-icon-table-cells svg-icon svg-string]", + "use[href=#table-cells]", ...apiExtraButtonAllowList, ]); diff --git a/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js b/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js index d452b31bcf5..78a9fd64b20 100644 --- a/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js +++ b/app/assets/javascripts/discourse/tests/unit/lib/icon-library-test.js @@ -45,4 +45,23 @@ module("Unit | Utility | icon-library", function (hooks) { }); assert.ok(html.includes("aria-label='<script>alert(1)'")); }); + + test("fa5 remaps", function (assert) { + const adjustIcon = iconHTML("adjust"); + assert.true(adjustIcon.includes("d-icon-adjust"), "class is maintained"); + assert.true( + adjustIcon.includes('href="#circle-half-stroke"'), + "has remapped icon" + ); + + const farIcon = iconHTML("far-dot-circle"); + assert.true( + farIcon.includes("d-icon-far-dot-circle"), + "class is maintained" + ); + assert.true( + farIcon.includes('href="#far-circle-dot"'), + "has remapped icon" + ); + }); }); diff --git a/app/views/static/show.html.erb b/app/views/static/show.html.erb index 9ed0c27a348..711b8b6d112 100644 --- a/app/views/static/show.html.erb +++ b/app/views/static/show.html.erb @@ -23,7 +23,7 @@ <% if staff? %>

- + <%= t 'edit_this_page' %>

diff --git a/db/post_migrate/20240909121255_rebake_user_onebox.rb b/db/post_migrate/20240909121255_rebake_user_onebox.rb new file mode 100644 index 00000000000..2c0b66ea0fe --- /dev/null +++ b/db/post_migrate/20240909121255_rebake_user_onebox.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true +class RebakeUserOnebox < ActiveRecord::Migration[7.1] + def up + # Rebake user onebox posts for fontawesome6 upgrade + execute <<~SQL + UPDATE posts SET baked_version = 0 + WHERE cooked LIKE '%d-icon-map-marker-alt%' + SQL + end + + def down + # do nothing + end +end diff --git a/lib/onebox/templates/discourse_user_onebox.mustache b/lib/onebox/templates/discourse_user_onebox.mustache index e7b7cdd2fec..0a2956fc143 100644 --- a/lib/onebox/templates/discourse_user_onebox.mustache +++ b/lib/onebox/templates/discourse_user_onebox.mustache @@ -8,16 +8,16 @@ {{/name}} {{#location}} - - + + {{{location}}} {{/location}} {{#website}} - - + + {{{website_name}}} diff --git a/lib/svg_sprite.rb b/lib/svg_sprite.rb index 4fd993562bf..b5265ba3f34 100644 --- a/lib/svg_sprite.rb +++ b/lib/svg_sprite.rb @@ -4,41 +4,43 @@ module SvgSprite SVG_ICONS ||= Set.new( %w[ - adjust address-book align-left - ambulance anchor - angle-double-down - angle-double-up - angle-double-right - angle-double-left angle-down angle-right angle-up - archive + angles-down + angles-left + angles-right + angles-up arrow-down arrow-left arrow-right + arrow-rotate-left + arrow-rotate-right arrow-up - arrows-alt-h - arrows-alt-v - at + arrows-rotate asterisk + at backward + backward-fast + backward-step ban bars + bars-staggered bed bell bell-slash bold book - book-reader + book-open-reader bookmark bookmark-delete + box-archive briefcase bullseye - calendar-alt + calendar-days caret-down caret-left caret-right @@ -47,56 +49,58 @@ module SvgSprite chart-bar chart-pie check - check-circle - check-square - chevron-circle-down chevron-down chevron-left chevron-right chevron-up circle - cloud-upload-alt + circle-check + circle-chevron-down + circle-exclamation + circle-half-stroke + circle-info + circle-minus + circle-plus + circle-question + circle-xmark + clock-rotate-left + cloud-arrow-up code - cog - columns comment compress copy crosshairs cube desktop + diagram-project discourse-amazon discourse-bell-exclamation discourse-bell-one discourse-bell-slash discourse-bookmark-clock + discourse-chevron-collapse + discourse-chevron-expand discourse-compress discourse-dnd discourse-emojis discourse-expand discourse-other-tab + discourse-sidebar discourse-sparkles discourse-threads - discourse-sidebar - discourse-chevron-collapse - discourse-chevron-expand download - ellipsis-h - ellipsis-v + earth-americas + ellipsis + ellipsis-vertical envelope - envelope-square - exchange-alt - exclamation-circle - exclamation-triangle - external-link-alt eye fab-android fab-apple fab-chrome fab-discord fab-discourse - fab-facebook-square fab-facebook + fab-facebook-square fab-github fab-instagram fab-linkedin-in @@ -111,148 +115,144 @@ module SvgSprite far-bell-slash far-calendar-plus far-chart-bar - far-check-square far-circle + far-circle-dot far-clipboard far-clock far-comment far-comments far-copyright - far-dot-circle - far-edit far-envelope far-eye far-eye-slash - far-file-alt - far-frown + far-face-frown + far-face-meh + far-face-smile + far-file-lines far-heart far-image - far-list-alt - far-meh far-moon - far-smile + far-pen-to-square + far-rectangle-list far-square + far-square-check far-star far-sun far-thumbs-down far-thumbs-up - far-trash-alt - fast-backward - fast-forward + far-trash-can file - file-alt + file-lines filter flag folder folder-open forward + forward-fast + forward-step gavel + gear gift globe - globe-americas grip-lines hand-point-right - hands-helping + handshake-angle heart - history - home hourglass-start + house id-card image images inbox - info-circle italic key keyboard language layer-group + left-right link + link-slash list + list-check list-ol list-ul + location-dot lock - magic - map-marker-alt + magnifying-glass + magnifying-glass-minus + magnifying-glass-plus microphone-slash minus - minus-circle - mobile-alt + mobile-screen-button moon - paint-brush + paintbrush palette paper-plane pause - pencil-alt + pencil play plug plus - plus-circle - plus-square power-off - project-diagram puzzle-piece question - question-circle quote-left quote-right - random - redo reply + right-from-bracket + right-left + right-to-bracket robot rocket + rotate scroll - search - search-plus - search-minus share - shield-alt - sign-in-alt - sign-out-alt + shield-blank + shuffle signal - sliders-h + sliders + spinner + square-check + square-envelope square-full + square-plus star - step-backward - step-forward - stream - sync-alt - sync table + table-cells + table-columns tag tags - tasks - th - thermometer-three-quarters + temperature-three-quarters thumbs-down thumbs-up thumbtack - times - times-circle + tippy-rounded-arrow toggle-off toggle-on - trash-alt - undo - unlink + trash-can + triangle-exclamation + truck-medical unlock - unlock-alt + unlock-keyhole + up-down + up-right-from-square upload user - user-cog - user-edit - user-friends + user-gear + user-group + user-pen user-plus user-secret user-shield - user-times + user-xmark users + wand-magic wrench - spinner - tippy-rounded-arrow + xmark ], ) - FA_ICON_MAP = { "far fa-" => "far-", "fab fa-" => "fab-", "fas fa-" => "", "fa-" => "" } + FA_4_ICON_MAP = { "far fa-" => "far-", "fab fa-" => "fab-", "fas fa-" => "", "fa-" => "" } CORE_SVG_SPRITES = Dir.glob("#{Rails.root}/vendor/assets/svg-icons/**/*.svg") @@ -517,8 +517,17 @@ License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL end def self.process(icon_name) - icon_name = icon_name.strip - FA_ICON_MAP.each { |k, v| icon_name = icon_name.sub(k, v) } + new_name = icon_name.strip + + FA_4_ICON_MAP.each { |k, v| new_name = new_name.sub(k, v) } + new_name = remap_from_fa5(new_name) + + if icon_name != new_name + # TODO: Enable message once core and official themes/plugins are updated + # Discourse.deprecate("The icon `#{icon_name}` is deprecated. Use `#{new_name}` instead.") + return new_name + end + icon_name end @@ -529,4 +538,705 @@ License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL def self.cache @cache ||= DistributedCache.new("svg_sprite") end + + def self.remap_from_fa5(icon_name) + lookup_name = icon_name + prefix = nil + + if lookup_name.start_with?("far-") + prefix = "far" + lookup_name = lookup_name[4..-1] + elsif lookup_name.start_with?("fab-") + prefix = "fab" + lookup_name = lookup_name[4..-1] + end + + if FA5_REMAPS.key?(lookup_name) + new_name = FA5_REMAPS[lookup_name] + new_name = "#{prefix}-#{new_name}" if prefix + + return new_name + end + + icon_name + end + + FA5_REMAPS = { + "adjust" => "circle-half-stroke", + "air-freshener" => "spray-can-sparkles", + "alien-monster" => "alien-8bit", + "allergies" => "hand-dots", + "ambulance" => "truck-medical", + "american-sign-language-interpreting" => "hands-asl-interpreting", + "analytics" => "chart-mixed", + "angle-double-down" => "angles-down", + "angle-double-left" => "angles-left", + "angle-double-right" => "angles-right", + "angle-double-up" => "angles-up", + "angry" => "face-angry", + "apple-alt" => "apple-whole", + "apple-crate" => "crate-apple", + "archive" => "box-archive", + "arrow-alt-circle-down" => "circle-down", + "arrow-alt-circle-left" => "circle-left", + "arrow-alt-circle-right" => "circle-right", + "arrow-alt-circle-up" => "circle-up", + "arrow-alt-down" => "down", + "arrow-alt-from-bottom" => "up-from-line", + "arrow-alt-from-left" => "right-from-line", + "arrow-alt-from-right" => "left-from-line", + "arrow-alt-from-top" => "down-from-line", + "arrow-alt-left" => "left", + "arrow-alt-right" => "right", + "arrow-alt-square-down" => "square-down", + "arrow-alt-square-left" => "square-left", + "arrow-alt-square-right" => "square-right", + "arrow-alt-square-up" => "square-up", + "arrow-alt-to-bottom" => "down-to-line", + "arrow-alt-to-left" => "left-to-line", + "arrow-alt-to-right" => "right-to-line", + "arrow-alt-to-top" => "up-to-line", + "arrow-alt-up" => "up", + "arrow-circle-down" => "circle-arrow-down", + "arrow-circle-left" => "circle-arrow-left", + "arrow-circle-right" => "circle-arrow-right", + "arrow-circle-up" => "circle-arrow-up", + "arrow-from-bottom" => "arrow-up-from-line", + "arrow-from-left" => "arrow-right-from-line", + "arrow-from-right" => "arrow-left-from-line", + "arrow-from-top" => "arrow-down-from-line", + "arrow-square-down" => "square-arrow-down", + "arrow-square-left" => "square-arrow-left", + "arrow-square-right" => "square-arrow-right", + "arrow-square-up" => "square-arrow-up", + "arrow-to-bottom" => "arrow-down-to-line", + "arrow-to-left" => "arrow-left-to-line", + "arrow-to-right" => "arrow-right-to-line", + "arrow-to-top" => "arrow-up-to-line", + "arrows" => "arrows-up-down-left-right", + "arrows-alt" => "up-down-left-right", + "arrows-alt-h" => "left-right", + "arrows-alt-v" => "up-down", + "arrows-h" => "arrows-left-right", + "arrows-v" => "arrows-up-down", + "assistive-listening-systems" => "ear-listen", + "atlas" => "book-atlas", + "atom-alt" => "atom-simple", + "backspace" => "delete-left", + "balance-scale" => "scale-balanced", + "balance-scale-left" => "scale-unbalanced", + "balance-scale-right" => "scale-unbalanced-flip", + "band-aid" => "bandage", + "barcode-alt" => "rectangle-barcode", + "baseball-ball" => "baseball", + "basketball-ball" => "basketball", + "bed-alt" => "bed-front", + "beer" => "beer-mug-empty", + "betamax" => "cassette-betamax", + "bible" => "book-bible", + "biking" => "person-biking", + "biking-mountain" => "person-biking-mountain", + "birthday-cake" => "cake-candles", + "blind" => "person-walking-with-cane", + "book-alt" => "book-blank", + "book-dead" => "book-skull", + "book-reader" => "book-open-reader", + "book-spells" => "book-sparkles", + "border-style" => "border-top-left", + "border-style-alt" => "border-bottom-right", + "box-alt" => "box-taped", + "box-fragile" => "square-fragile", + "box-full" => "box-open-full", + "box-up" => "square-this-way-up", + "box-usd" => "box-dollar", + "boxes" => "boxes-stacked", + "boxes-alt" => "boxes-stacked", + "brackets" => "brackets-square", + "broadcast-tower" => "tower-broadcast", + "burn" => "fire-flame-simple", + "bus-alt" => "bus-simple", + "calculator-alt" => "calculator-simple", + "calendar-alt" => "calendar-days", + "calendar-edit" => "calendar-pen", + "calendar-times" => "calendar-xmark", + "camera-alt" => "camera", + "camera-home" => "camera-security", + "car-alt" => "car-rear", + "car-crash" => "car-burst", + "car-mechanic" => "car-wrench", + "caravan-alt" => "caravan-simple", + "caret-circle-down" => "circle-caret-down", + "caret-circle-left" => "circle-caret-left", + "caret-circle-right" => "circle-caret-right", + "caret-circle-up" => "circle-caret-up", + "caret-square-down" => "square-caret-down", + "caret-square-left" => "square-caret-left", + "caret-square-right" => "square-caret-right", + "caret-square-up" => "square-caret-up", + "cctv" => "camera-cctv", + "chalkboard-teacher" => "chalkboard-user", + "chart-pie-alt" => "chart-pie-simple", + "check-circle" => "circle-check", + "check-square" => "square-check", + "cheeseburger" => "burger-cheese", + "chess-bishop-alt" => "chess-bishop-piece", + "chess-clock-alt" => "chess-clock-flip", + "chess-king-alt" => "chess-king-piece", + "chess-knight-alt" => "chess-knight-piece", + "chess-pawn-alt" => "chess-pawn-piece", + "chess-queen-alt" => "chess-queen-piece", + "chess-rook-alt" => "chess-rook-piece", + "chevron-circle-down" => "circle-chevron-down", + "chevron-circle-left" => "circle-chevron-left", + "chevron-circle-right" => "circle-chevron-right", + "chevron-circle-up" => "circle-chevron-up", + "chevron-double-down" => "chevrons-down", + "chevron-double-left" => "chevrons-left", + "chevron-double-right" => "chevrons-right", + "chevron-double-up" => "chevrons-up", + "chevron-square-down" => "square-chevron-down", + "chevron-square-left" => "square-chevron-left", + "chevron-square-right" => "square-chevron-right", + "chevron-square-up" => "square-chevron-up", + "clinic-medical" => "house-chimney-medical", + "cloud-download" => "cloud-arrow-down", + "cloud-download-alt" => "cloud-arrow-down", + "cloud-upload" => "cloud-arrow-up", + "cloud-upload-alt" => "cloud-arrow-up", + "cocktail" => "martini-glass-citrus", + "coffee" => "mug-saucer", + "coffee-togo" => "cup-togo", + "cog" => "gear", + "cogs" => "gears", + "columns" => "table-columns", + "comment-alt" => "message", + "comment-alt-check" => "message-check", + "comment-alt-dollar" => "message-dollar", + "comment-alt-dots" => "message-dots", + "comment-alt-edit" => "message-pen", + "comment-alt-exclamation" => "message-exclamation", + "comment-alt-lines" => "message-lines", + "comment-alt-medical" => "message-medical", + "comment-alt-minus" => "message-minus", + "comment-alt-music" => "message-music", + "comment-alt-plus" => "message-plus", + "comment-alt-slash" => "message-slash", + "comment-alt-smile" => "message-smile", + "comment-alt-times" => "message-xmark", + "comment-edit" => "comment-pen", + "comment-times" => "comment-xmark", + "comments-alt" => "messages", + "comments-alt-dollar" => "messages-dollar", + "compress-alt" => "down-left-and-up-right-to-center", + "compress-arrows-alt" => "minimize", + "concierge-bell" => "bell-concierge", + "construction" => "triangle-person-digging", + "conveyor-belt-alt" => "conveyor-belt-boxes", + "cowbell-more" => "cowbell-circle-plus", + "cricket" => "cricket-bat-ball", + "crop-alt" => "crop-simple", + "curling" => "curling-stone", + "cut" => "scissors", + "deaf" => "ear-deaf", + "debug" => "ban-bug", + "desktop-alt" => "desktop", + "dewpoint" => "droplet-degree", + "diagnoses" => "person-dots-from-line", + "digging" => "person-digging", + "digital-tachograph" => "tachograph-digital", + "directions" => "diamond-turn-right", + "dizzy" => "face-dizzy", + "dolly-flatbed" => "cart-flatbed", + "dolly-flatbed-alt" => "cart-flatbed-boxes", + "dolly-flatbed-empty" => "cart-flatbed-empty", + "donate" => "circle-dollar-to-slot", + "dot-circle" => "circle-dot", + "drafting-compass" => "compass-drafting", + "drone-alt" => "drone-front", + "dryer-alt" => "dryer-heat", + "eclipse-alt" => "moon-over-sun", + "edit" => "pen-to-square", + "ellipsis-h" => "ellipsis", + "ellipsis-h-alt" => "ellipsis-stroke", + "ellipsis-v" => "ellipsis-vertical", + "ellipsis-v-alt" => "ellipsis-stroke-vertical", + "envelope-square" => "square-envelope", + "exchange" => "arrow-right-arrow-left", + "exchange-alt" => "right-left", + "exclamation-circle" => "circle-exclamation", + "exclamation-square" => "square-exclamation", + "exclamation-triangle" => "triangle-exclamation", + "expand-alt" => "up-right-and-down-left-from-center", + "expand-arrows" => "arrows-maximize", + "expand-arrows-alt" => "maximize", + "external-link" => "arrow-up-right-from-square", + "external-link-alt" => "up-right-from-square", + "external-link-square" => "square-arrow-up-right", + "external-link-square-alt" => "square-up-right", + "eyedropper" => "eye-dropper", + "fast-backward" => "backward-fast", + "fast-forward" => "forward-fast", + "feather-alt" => "feather-pointed", + "female" => "person-dress", + "field-hockey" => "field-hockey-stick-ball", + "fighter-jet" => "jet-fighter", + "file-alt" => "file-lines", + "file-archive" => "file-zipper", + "file-chart-line" => "file-chart-column", + "file-download" => "file-arrow-down", + "file-edit" => "file-pen", + "file-medical-alt" => "file-waveform", + "file-search" => "file-magnifying-glass", + "file-times" => "file-xmark", + "file-upload" => "file-arrow-up", + "film-alt" => "film-simple", + "fire-alt" => "fire-flame-curved", + "first-aid" => "kit-medical", + "fist-raised" => "hand-fist", + "flag-alt" => "flag-swallowtail", + "flame" => "fire-flame", + "flask-poison" => "flask-round-poison", + "flask-potion" => "flask-round-potion", + "flushed" => "face-flushed", + "fog" => "cloud-fog", + "folder-download" => "folder-arrow-down", + "folder-times" => "folder-xmark", + "folder-upload" => "folder-arrow-up", + "font-awesome-alt" => "square-font-awesome-stroke", + "font-awesome-flag" => "font-awesome", + "font-awesome-logo-full" => "font-awesome", + "football-ball" => "football", + "fragile" => "wine-glass-crack", + "frosty-head" => "snowman-head", + "frown" => "face-frown", + "frown-open" => "face-frown-open", + "funnel-dollar" => "filter-circle-dollar", + "game-board-alt" => "game-board-simple", + "gamepad-alt" => "gamepad-modern", + "glass-champagne" => "champagne-glass", + "glass-cheers" => "champagne-glasses", + "glass-martini" => "martini-glass-empty", + "glass-martini-alt" => "martini-glass", + "glass-whiskey" => "whiskey-glass", + "glass-whiskey-rocks" => "whiskey-glass-ice", + "glasses-alt" => "glasses-round", + "globe-africa" => "earth-africa", + "globe-americas" => "earth-americas", + "globe-asia" => "earth-asia", + "globe-europe" => "earth-europe", + "golf-ball" => "golf-ball-tee", + "grimace" => "face-grimace", + "grin" => "face-grin", + "grin-alt" => "face-grin-wide", + "grin-beam" => "face-grin-beam", + "grin-beam-sweat" => "face-grin-beam-sweat", + "grin-hearts" => "face-grin-hearts", + "grin-squint" => "face-grin-squint", + "grin-squint-tears" => "face-grin-squint-tears", + "grin-stars" => "face-grin-stars", + "grin-tears" => "face-grin-tears", + "grin-tongue" => "face-grin-tongue", + "grin-tongue-squint" => "face-grin-tongue-squint", + "grin-tongue-wink" => "face-grin-tongue-wink", + "grin-wink" => "face-grin-wink", + "grip-horizontal" => "grip", + "h-square" => "square-h", + "hamburger" => "burger", + "hand-holding-usd" => "hand-holding-dollar", + "hand-holding-water" => "hand-holding-droplet", + "hand-paper" => "hand", + "hand-receiving" => "hands-holding-diamond", + "hand-rock" => "hand-back-fist", + "hands-heart" => "hands-holding-heart", + "hands-helping" => "handshake-angle", + "hands-usd" => "hands-holding-dollar", + "hands-wash" => "hands-bubbles", + "handshake-alt" => "handshake-simple", + "handshake-alt-slash" => "handshake-simple-slash", + "hard-hat" => "helmet-safety", + "hdd" => "hard-drive", + "head-vr" => "head-side-goggles", + "headphones-alt" => "headphones-simple", + "heart-broken" => "heart-crack", + "heart-circle" => "circle-heart", + "heart-rate" => "wave-pulse", + "heart-square" => "square-heart", + "heartbeat" => "heart-pulse", + "hiking" => "person-hiking", + "history" => "clock-rotate-left", + "home" => "house", + "home-alt" => "house", + "home-heart" => "house-heart", + "home-lg" => "house-chimney", + "home-lg-alt" => "house", + "hospital-alt" => "hospital", + "hospital-symbol" => "circle-h", + "hot-tub" => "hot-tub-person", + "hourglass-half" => "hourglass", + "house-damage" => "house-chimney-crack", + "house-leave" => "house-person-leave", + "house-return" => "house-person-return", + "hryvnia" => "hryvnia-sign", + "humidity" => "droplet-percent", + "icons-alt" => "symbols", + "id-card-alt" => "id-card-clip", + "industry-alt" => "industry-windows", + "info-circle" => "circle-info", + "info-square" => "square-info", + "innosoft" => "42-group", + "inventory" => "shelves", + "journal-whills" => "book-journal-whills", + "kiss" => "face-kiss", + "kiss-beam" => "face-kiss-beam", + "kiss-wink-heart" => "face-kiss-wink-heart", + "landmark-alt" => "landmark-dome", + "laptop-house" => "house-laptop", + "laugh" => "face-laugh", + "laugh-beam" => "face-laugh-beam", + "laugh-squint" => "face-laugh-squint", + "laugh-wink" => "face-laugh-wink", + "level-down" => "arrow-turn-down", + "level-down-alt" => "turn-down", + "level-up" => "arrow-turn-up", + "level-up-alt" => "turn-up", + "list-alt" => "rectangle-list", + "location" => "location-crosshairs", + "location-circle" => "circle-location-arrow", + "location-slash" => "location-crosshairs-slash", + "lock-alt" => "lock-keyhole", + "lock-open-alt" => "lock-keyhole-open", + "long-arrow-alt-down" => "down-long", + "long-arrow-alt-left" => "left-long", + "long-arrow-alt-right" => "right-long", + "long-arrow-alt-up" => "up-long", + "long-arrow-down" => "arrow-down-long", + "long-arrow-left" => "arrow-left-long", + "long-arrow-right" => "arrow-right-long", + "long-arrow-up" => "arrow-up-long", + "low-vision" => "eye-low-vision", + "luchador" => "luchador-mask", + "luggage-cart" => "cart-flatbed-suitcase", + "magic" => "wand-magic", + "mail-bulk" => "envelopes-bulk", + "male" => "person", + "map-marked" => "map-location", + "map-marked-alt" => "map-location-dot", + "map-marker" => "location-pin", + "map-marker-alt" => "location-dot", + "map-marker-alt-slash" => "location-dot-slash", + "map-marker-check" => "location-check", + "map-marker-edit" => "location-pen", + "map-marker-exclamation" => "location-exclamation", + "map-marker-minus" => "location-minus", + "map-marker-plus" => "location-plus", + "map-marker-question" => "location-question", + "map-marker-slash" => "location-pin-slash", + "map-marker-smile" => "location-smile", + "map-marker-times" => "location-xmark", + "map-signs" => "signs-post", + "mars-stroke-h" => "mars-stroke-right", + "mars-stroke-v" => "mars-stroke-up", + "medium-m" => "medium", + "medkit" => "suitcase-medical", + "meh" => "face-meh", + "meh-blank" => "face-meh-blank", + "meh-rolling-eyes" => "face-rolling-eyes", + "microphone-alt" => "microphone-lines", + "microphone-alt-slash" => "microphone-lines-slash", + "mind-share" => "brain-arrow-curved-right", + "minus-circle" => "circle-minus", + "minus-hexagon" => "hexagon-minus", + "minus-octagon" => "octagon-minus", + "minus-square" => "square-minus", + "mobile-alt" => "mobile-screen-button", + "mobile-android" => "mobile", + "mobile-android-alt" => "mobile-screen", + "money-bill-alt" => "money-bill-1", + "money-bill-wave-alt" => "money-bill-1-wave", + "money-check-alt" => "money-check-dollar", + "money-check-edit" => "money-check-pen", + "money-check-edit-alt" => "money-check-dollar-pen", + "monitor-heart-rate" => "monitor-waveform", + "mouse" => "computer-mouse", + "mouse-alt" => "computer-mouse-scrollwheel", + "mouse-pointer" => "arrow-pointer", + "music-alt" => "music-note", + "music-alt-slash" => "music-note-slash", + "oil-temp" => "oil-temperature", + "page-break" => "file-dashed-line", + "paint-brush" => "paintbrush", + "paint-brush-alt" => "paintbrush-fine", + "paint-brush-fine" => "paintbrush-fine", + "pallet-alt" => "pallet-boxes", + "paragraph-rtl" => "paragraph-left", + "parking" => "square-parking", + "parking-circle" => "circle-parking", + "parking-circle-slash" => "ban-parking", + "parking-slash" => "square-parking-slash", + "pastafarianism" => "spaghetti-monster-flying", + "pause-circle" => "circle-pause", + "paw-alt" => "paw-simple", + "pen-alt" => "pen-clip", + "pen-square" => "square-pen", + "pencil-alt" => "pencil", + "pencil-paintbrush" => "pen-paintbrush", + "pencil-ruler" => "pen-ruler", + "pennant" => "flag-pennant", + "people-arrows" => "people-arrows-left-right", + "people-carry" => "people-carry-box", + "percentage" => "percent", + "person-carry" => "person-carry-box", + "phone-alt" => "phone-flip", + "phone-laptop" => "laptop-mobile", + "phone-square" => "square-phone", + "phone-square-alt" => "square-phone-flip", + "photo-video" => "photo-film", + "plane-alt" => "plane-engines", + "play-circle" => "circle-play", + "plus-circle" => "circle-plus", + "plus-hexagon" => "hexagon-plus", + "plus-octagon" => "octagon-plus", + "plus-square" => "square-plus", + "poll" => "square-poll-vertical", + "poll-h" => "square-poll-horizontal", + "portal-enter" => "person-to-portal", + "portal-exit" => "person-from-portal", + "portrait" => "image-portrait", + "pound-sign" => "sterling-sign", + "pray" => "person-praying", + "praying-hands" => "hands-praying", + "prescription-bottle-alt" => "prescription-bottle-medical", + "presentation" => "presentation-screen", + "print-search" => "print-magnifying-glass", + "procedures" => "bed-pulse", + "project-diagram" => "diagram-project", + "question-circle" => "circle-question", + "question-square" => "square-question", + "quran" => "book-quran", + "rabbit-fast" => "rabbit-running", + "radiation-alt" => "circle-radiation", + "radio-alt" => "radio-tuner", + "random" => "shuffle", + "rectangle-landscape" => "rectangle", + "rectangle-portrait" => "rectangle-vertical", + "redo" => "arrow-rotate-right", + "redo-alt" => "rotate-right", + "remove-format" => "text-slash", + "repeat-1-alt" => "arrows-repeat-1", + "repeat-alt" => "arrows-repeat", + "retweet-alt" => "arrows-retweet", + "rss-square" => "square-rss", + "running" => "person-running", + "sad-cry" => "face-sad-cry", + "sad-tear" => "face-sad-tear", + "save" => "floppy-disk", + "sax-hot" => "saxophone-fire", + "scalpel-path" => "scalpel-line-dashed", + "scanner-image" => "scanner", + "search" => "magnifying-glass", + "search-dollar" => "magnifying-glass-dollar", + "search-location" => "magnifying-glass-location", + "search-minus" => "magnifying-glass-minus", + "search-plus" => "magnifying-glass-plus", + "sensor-alert" => "sensor-triangle-exclamation", + "sensor-smoke" => "sensor-cloud", + "share-alt" => "share-nodes", + "share-alt-square" => "square-share-nodes", + "share-square" => "share-from-square", + "shield-alt" => "shield-halved", + "shipping-fast" => "truck-fast", + "shipping-timed" => "truck-clock", + "shopping-bag" => "bag-shopping", + "shopping-basket" => "basket-shopping", + "shopping-cart" => "cart-shopping", + "shuttle-van" => "van-shuttle", + "sign" => "sign-hanging", + "sign-in" => "arrow-right-to-bracket", + "sign-in-alt" => "right-to-bracket", + "sign-language" => "hands", + "sign-out" => "arrow-right-from-bracket", + "sign-out-alt" => "right-from-bracket", + "signal-1" => "signal-weak", + "signal-2" => "signal-fair", + "signal-3" => "signal-good", + "signal-4" => "signal-strong", + "signal-alt" => "signal-bars", + "signal-alt-1" => "signal-bars-weak", + "signal-alt-2" => "signal-bars-fair", + "signal-alt-3" => "signal-bars-good", + "signal-alt-slash" => "signal-bars-slash", + "skating" => "person-skating", + "ski-jump" => "person-ski-jumping", + "ski-lift" => "person-ski-lift", + "skiing" => "person-skiing", + "skiing-nordic" => "person-skiing-nordic", + "slack-hash" => "slack", + "sledding" => "person-sledding", + "sliders-h" => "sliders", + "sliders-h-square" => "square-sliders", + "sliders-v" => "sliders-up", + "sliders-v-square" => "square-sliders-vertical", + "smile" => "face-smile", + "smile-beam" => "face-smile-beam", + "smile-plus" => "face-smile-plus", + "smile-wink" => "face-smile-wink", + "smoking-ban" => "ban-smoking", + "sms" => "comment-sms", + "snapchat-ghost" => "snapchat", + "snowboarding" => "person-snowboarding", + "snowmobile" => "person-snowmobiling", + "sort-alpha-down" => "arrow-down-a-z", + "sort-alpha-down-alt" => "arrow-down-z-a", + "sort-alpha-up" => "arrow-up-a-z", + "sort-alpha-up-alt" => "arrow-up-z-a", + "sort-alt" => "arrow-down-arrow-up", + "sort-amount-down" => "arrow-down-wide-short", + "sort-amount-down-alt" => "arrow-down-short-wide", + "sort-amount-up" => "arrow-up-wide-short", + "sort-amount-up-alt" => "arrow-up-short-wide", + "sort-circle" => "circle-sort", + "sort-circle-down" => "circle-sort-down", + "sort-circle-up" => "circle-sort-up", + "sort-numeric-down" => "arrow-down-1-9", + "sort-numeric-down-alt" => "arrow-down-9-1", + "sort-numeric-up" => "arrow-up-1-9", + "sort-numeric-up-alt" => "arrow-up-9-1", + "sort-shapes-down" => "arrow-down-triangle-square", + "sort-shapes-down-alt" => "arrow-down-square-triangle", + "sort-shapes-up" => "arrow-up-triangle-square", + "sort-shapes-up-alt" => "arrow-up-square-triangle", + "sort-size-down" => "arrow-down-big-small", + "sort-size-down-alt" => "arrow-down-small-big", + "sort-size-up" => "arrow-up-big-small", + "sort-size-up-alt" => "arrow-up-small-big", + "soup" => "bowl-hot", + "space-shuttle" => "shuttle-space", + "space-station-moon-alt" => "space-station-moon-construction", + "square-root-alt" => "square-root-variable", + "star-half-alt" => "star-half-stroke", + "starfighter-alt" => "starfighter-twin-ion-engine", + "step-backward" => "backward-step", + "step-forward" => "forward-step", + "sticky-note" => "note-sticky", + "stop-circle" => "circle-stop", + "store-alt" => "shop", + "store-alt-slash" => "shop-slash", + "stream" => "bars-staggered", + "subway" => "train-subway", + "surprise" => "face-surprise", + "swimmer" => "person-swimming", + "swimming-pool" => "water-ladder", + "sync" => "arrows-rotate", + "sync-alt" => "rotate", + "table-tennis" => "table-tennis-paddle-ball", + "tablet-alt" => "tablet-screen-button", + "tablet-android" => "tablet", + "tablet-android-alt" => "tablet-screen", + "tachometer" => "gauge-simple", + "tachometer-alt" => "gauge", + "tachometer-alt-average" => "gauge-med", + "tachometer-alt-fast" => "gauge", + "tachometer-alt-fastest" => "gauge-max", + "tachometer-alt-slow" => "gauge-low", + "tachometer-alt-slowest" => "gauge-min", + "tachometer-average" => "gauge-simple-med", + "tachometer-fast" => "gauge-simple", + "tachometer-fastest" => "gauge-simple-max", + "tachometer-slow" => "gauge-simple-low", + "tachometer-slowest" => "gauge-simple-min", + "tanakh" => "book-tanakh", + "tasks" => "list-check", + "tasks-alt" => "bars-progress", + "telegram-plane" => "telegram", + "temperature-down" => "temperature-arrow-down", + "temperature-frigid" => "temperature-snow", + "temperature-hot" => "temperature-sun", + "temperature-up" => "temperature-arrow-up", + "tenge" => "tenge-sign", + "th" => "table-cells", + "th-large" => "table-cells-large", + "th-list" => "table-list", + "theater-masks" => "masks-theater", + "thermometer-empty" => "temperature-empty", + "thermometer-full" => "temperature-full", + "thermometer-half" => "temperature-half", + "thermometer-quarter" => "temperature-quarter", + "thermometer-three-quarters" => "temperature-three-quarters", + "thumb-tack" => "thumbtack", + "thunderstorm" => "cloud-bolt", + "thunderstorm-moon" => "cloud-bolt-moon", + "thunderstorm-sun" => "cloud-bolt-sun", + "ticket-alt" => "ticket-simple", + "times" => "xmark", + "times-circle" => "circle-xmark", + "times-hexagon" => "hexagon-xmark", + "times-octagon" => "octagon-xmark", + "times-square" => "square-xmark", + "tint" => "droplet", + "tint-slash" => "droplet-slash", + "tired" => "face-tired", + "toilet-paper-alt" => "toilet-paper-blank", + "tombstone-alt" => "tombstone-blank", + "tools" => "screwdriver-wrench", + "torah" => "scroll-torah", + "tram" => "train-tram", + "transgender-alt" => "transgender", + "trash-alt" => "trash-can", + "trash-restore" => "trash-arrow-up", + "trash-restore-alt" => "trash-can-arrow-up", + "trash-undo-alt" => "trash-can-undo", + "tree-alt" => "tree-deciduous", + "triangle-music" => "triangle-instrument", + "trophy-alt" => "trophy-star", + "truck-couch" => "truck-ramp-couch", + "truck-loading" => "truck-ramp-box", + "tshirt" => "shirt", + "tv-alt" => "tv", + "undo" => "arrow-rotate-left", + "undo-alt" => "rotate-left", + "university" => "building-columns", + "unlink" => "link-slash", + "unlock-alt" => "unlock-keyhole", + "usd-circle" => "circle-dollar", + "usd-square" => "square-dollar", + "user-alt" => "user-large", + "user-alt-slash" => "user-large-slash", + "user-chart" => "chart-user", + "user-circle" => "circle-user", + "user-cog" => "user-gear", + "user-edit" => "user-pen", + "user-friends" => "user-group", + "user-hard-hat" => "user-helmet-safety", + "user-md" => "user-doctor", + "user-md-chat" => "user-doctor-message", + "user-times" => "user-xmark", + "users-class" => "screen-users", + "users-cog" => "users-gear", + "users-crown" => "user-group-crown", + "utensil-fork" => "fork", + "utensil-knife" => "knife", + "utensil-spoon" => "spoon", + "utensils-alt" => "fork-knife", + "vhs" => "cassette-vhs", + "volleyball-ball" => "volleyball", + "volume-down" => "volume-low", + "volume-mute" => "volume-xmark", + "volume-up" => "volume-high", + "vote-nay" => "xmark-to-slot", + "vote-yea" => "check-to-slot", + "walking" => "person-walking", + "warehouse-alt" => "warehouse-full", + "washer" => "washing-machine", + "water-lower" => "water-arrow-down", + "water-rise" => "water-arrow-up", + "waveform-path" => "waveform-lines", + "webcam" => "camera-web", + "webcam-slash" => "camera-web-slash", + "weight" => "weight-scale", + "wifi-1" => "wifi-weak", + "wifi-2" => "wifi-fair", + "window-alt" => "window-flip", + "window-close" => "rectangle-xmark", + "wine-glass-alt" => "wine-glass-empty", + } end diff --git a/package.json b/package.json index 03239f5396b..ad1c9741bc8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "@babel/plugin-proposal-decorators": "^7.24.7", "@discourse/lint-configs": "^1.3.10", "@discourse/moment-timezone-names-translations": "^1.0.0", - "@fortawesome/fontawesome-free": "5.15.4", + "@fortawesome/fontawesome-free": "6.6.0", "@glint/core": "^1.4.1-unstable.01b8deb", "@glint/environment-ember-loose": "^1.4.1-unstable.01b8deb", "@glint/environment-ember-template-imports": "^1.4.1-unstable.01b8deb", diff --git a/plugins/discourse-local-dates/assets/javascripts/initializers/discourse-local-dates.js b/plugins/discourse-local-dates/assets/javascripts/initializers/discourse-local-dates.js index 3471554eef7..ad93eab3a20 100644 --- a/plugins/discourse-local-dates/assets/javascripts/initializers/discourse-local-dates.js +++ b/plugins/discourse-local-dates/assets/javascripts/initializers/discourse-local-dates.js @@ -41,7 +41,7 @@ export function applyLocalDates(dates, siteSettings) { element.innerText = ""; element.insertAdjacentHTML( "beforeend", - `${iconHTML("globe-americas")} + `${iconHTML("earth-americas")} ${localDateBuilder.formatted}` ); element.setAttribute("aria-label", localDateBuilder.textPreview); diff --git a/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js b/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js index 221cd78ffb0..4fb7641c321 100644 --- a/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js +++ b/plugins/discourse-local-dates/test/javascripts/acceptance/local-dates-quoting-test.js @@ -31,8 +31,8 @@ acceptance("Local Dates - quoting", function (needs) { xmlns="http://www.w3.org/2000/svg"> 5:00 PM" data-title="This is a new topic to check on chat quote issues"> - - + + June 17, 2022 8:00 AM (Perth) `; @@ -65,13 +65,13 @@ acceptance("Local Dates - quoting range", function (needs) { const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]); const firstPost = topicResponse.post_stream.posts[0]; firstPost.cooked += `

Some text - - + + June 17, 2022 → - - + + June 18, 2022

`; @@ -106,14 +106,14 @@ acceptance( const topicResponse = cloneJSON(topicFixtures["/t/280/1.json"]); const firstPost = topicResponse.post_stream.posts[0]; firstPost.cooked += `

Testing countdown - - + + 21 hours

Testing recurring - - + + Wednesday

`; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e6f9d4af200..19c3ad3889f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,8 +38,8 @@ importers: specifier: ^1.0.0 version: 1.0.0 '@fortawesome/fontawesome-free': - specifier: 5.15.4 - version: 5.15.4 + specifier: 6.6.0 + version: 6.6.0 '@glint/core': specifier: ^1.4.1-unstable.01b8deb version: 1.4.1-unstable.ff9ea6c(typescript@5.5.4) @@ -2134,8 +2134,8 @@ packages: '@floating-ui/utils@0.2.7': resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} - '@fortawesome/fontawesome-free@5.15.4': - resolution: {integrity: sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==} + '@fortawesome/fontawesome-free@6.6.0': + resolution: {integrity: sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==} engines: {node: '>=6'} '@gar/promisify@1.1.3': @@ -9785,7 +9785,7 @@ snapshots: '@floating-ui/utils@0.2.7': {} - '@fortawesome/fontawesome-free@5.15.4': {} + '@fortawesome/fontawesome-free@6.6.0': {} '@gar/promisify@1.1.3': {} diff --git a/spec/lib/svg_sprite/svg_sprite_spec.rb b/spec/lib/svg_sprite/svg_sprite_spec.rb index 64db6fe9020..a2711a0dc61 100644 --- a/spec/lib/svg_sprite/svg_sprite_spec.rb +++ b/spec/lib/svg_sprite/svg_sprite_spec.rb @@ -11,7 +11,7 @@ RSpec.describe SvgSprite do it "can generate a bundle" do bundle = SvgSprite.bundle expect(bundle).to match(/heart/) - expect(bundle).to match(/angle-double-down/) + expect(bundle).to match(/angles-down/) end it "can generate paths" do @@ -200,16 +200,16 @@ RSpec.describe SvgSprite do end it "includes icons from SiteSettings" do - SiteSetting.svg_icon_subset = "blender|drafting-compass|fab-bandcamp" + SiteSetting.svg_icon_subset = "blender|compass-drafting|fab-bandcamp" all_icons = SvgSprite.all_icons expect(all_icons).to include("blender") - expect(all_icons).to include("drafting-compass") + expect(all_icons).to include("compass-drafting") expect(all_icons).to include("fab-bandcamp") SiteSetting.svg_icon_subset = nil SvgSprite.expire_cache - expect(SvgSprite.all_icons).not_to include("drafting-compass") + expect(SvgSprite.all_icons).not_to include("compass-drafting") # does not fail on non-string setting SiteSetting.svg_icon_subset = false diff --git a/spec/requests/svg_sprite_controller_spec.rb b/spec/requests/svg_sprite_controller_spec.rb index ef9c8b6bd80..fc9dede6ece 100644 --- a/spec/requests/svg_sprite_controller_spec.rb +++ b/spec/requests/svg_sprite_controller_spec.rb @@ -93,7 +93,7 @@ RSpec.describe SvgSpriteController do data = response.parsed_body expect(data.length).to eq(200) - expect(data[0]["id"]).to eq("ad") + expect(data[0]["id"]).to eq("0") end it "should filter" do @@ -113,12 +113,12 @@ RSpec.describe SvgSpriteController do get "/svg-sprite/picker-search" data = response.parsed_body - beer_icon = response.parsed_body.find { |i| i["id"] == "beer" } + beer_icon = response.parsed_body.find { |i| i["id"] == "beer-mug-empty" } expect(beer_icon).to be_present get "/svg-sprite/picker-search", params: { only_available: "true" } data = response.parsed_body - beer_icon = response.parsed_body.find { |i| i["id"] == "beer" } + beer_icon = response.parsed_body.find { |i| i["id"] == "beer-mug-empty" } expect(beer_icon).to be nil expect(data.length).to eq(200) end diff --git a/spec/system/admin_badges_spec.rb b/spec/system/admin_badges_spec.rb index 93fbf91a50a..35a3aa12a56 100644 --- a/spec/system/admin_badges_spec.rb +++ b/spec/system/admin_badges_spec.rb @@ -43,7 +43,7 @@ describe "Admin Badges Page", type: :system do badges_page.form.field("enabled").accept badges_page.form.field("name").fill_in("a name") badges_page.form.field("badge_type_id").select(BadgeType::Bronze) - badges_page.form.field("icon").select("ambulance") + badges_page.form.field("icon").select("truck-medical") badges_page.form.field("description").fill_in("a description") badges_page.form.field("long_description").fill_in("a long_description") badges_page.form.field("badge_grouping_id").select(BadgeGrouping::GettingStarted) @@ -75,11 +75,11 @@ describe "Admin Badges Page", type: :system do badge = Badge.find(Badge::Autobiographer) badge.update!(image_upload_id: Fabricate(:image_upload).id) - badges_page.visit_page(Badge::Autobiographer).choose_icon("ambulance").submit_form + badges_page.visit_page(Badge::Autobiographer).choose_icon("truck-medical").submit_form expect(badges_page).to have_saved_form expect(badge.reload.image_upload_id).to be_blank - expect(badge.icon).to eq("ambulance") + expect(badge.icon).to eq("truck-medical") end end @@ -102,7 +102,7 @@ describe "Admin Badges Page", type: :system do badges_page.form.field("enabled").accept badges_page.form.field("name").fill_in("a name") badges_page.form.field("badge_type_id").select(BadgeType::Bronze) - badges_page.form.field("icon").select("ambulance") + badges_page.form.field("icon").select("truck-medical") badges_page.submit_form expect(badges_page).to have_saved_form badges_page.form.field("name").fill_in("another name") diff --git a/spec/system/editing_sidebar_community_section_spec.rb b/spec/system/editing_sidebar_community_section_spec.rb index 7cb08ecbbb9..45502f5d28f 100644 --- a/spec/system/editing_sidebar_community_section_spec.rb +++ b/spec/system/editing_sidebar_community_section_spec.rb @@ -23,7 +23,7 @@ RSpec.describe "Editing Sidebar Community Section", type: :system do visit("/latest") expect(sidebar.primary_section_icons("community")).to eq( - %w[layer-group user flag wrench ellipsis-v], + %w[layer-group user flag wrench ellipsis-vertical], ) modal = sidebar.click_community_section_more_button.click_customize_community_section_button @@ -37,7 +37,7 @@ RSpec.describe "Editing Sidebar Community Section", type: :system do ) expect(sidebar.primary_section_icons("community")).to eq( - %w[user paper-plane flag wrench ellipsis-v], + %w[user paper-plane flag wrench ellipsis-vertical], ) modal = sidebar.click_community_section_more_button.click_customize_community_section_button @@ -50,7 +50,7 @@ RSpec.describe "Editing Sidebar Community Section", type: :system do ) expect(sidebar.primary_section_icons("community")).to eq( - %w[layer-group user flag wrench ellipsis-v], + %w[layer-group user flag wrench ellipsis-vertical], ) end diff --git a/spec/system/page_objects/admin_badges.rb b/spec/system/page_objects/admin_badges.rb index 32bf9c942f0..dc7105c5f0a 100644 --- a/spec/system/page_objects/admin_badges.rb +++ b/spec/system/page_objects/admin_badges.rb @@ -35,7 +35,7 @@ module PageObjects def choose_icon(name) form.choose_conditional("choose-icon") - form.field("icon").select("ambulance") + form.field("icon").select("truck-medical") self end diff --git a/vendor/assets/svg-icons/fontawesome/brands.svg b/vendor/assets/svg-icons/fontawesome/brands.svg index 21a871aa3ec..59e1b1593ba 100644 --- a/vendor/assets/svg-icons/fontawesome/brands.svg +++ b/vendor/assets/svg-icons/fontawesome/brands.svg @@ -1,1391 +1,1484 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/assets/svg-icons/fontawesome/regular.svg b/vendor/assets/svg-icons/fontawesome/regular.svg index 31ebef71bc6..85f0a31cdf4 100644 --- a/vendor/assets/svg-icons/fontawesome/regular.svg +++ b/vendor/assets/svg-icons/fontawesome/regular.svg @@ -1,463 +1,497 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vendor/assets/svg-icons/fontawesome/solid.svg b/vendor/assets/svg-icons/fontawesome/solid.svg index edaf082663e..c233fb45291 100644 --- a/vendor/assets/svg-icons/fontawesome/solid.svg +++ b/vendor/assets/svg-icons/fontawesome/solid.svg @@ -1,3013 +1,4193 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file