From eef08b00a8afc6e0e639ecd7e20a0c1ec1bb6197 Mon Sep 17 00:00:00 2001 From: aschmutt Date: Sat, 7 May 2022 17:27:14 +0200 Subject: [PATCH 1/3] Fontawesome 6 Pro --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 66db662..342f7d0 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,8 @@ Add to your constant or clear this: plugin.tx_ckeditor_fontawesome.css = "LINK TO FONTAWESOME PRO" ``` +## Fontawesome 6 Pro + ## ToDo: - Add FA-Icon in Content Headline Definition. From 00642fba64ffc9860ca2a5819a5fd034268b022a Mon Sep 17 00:00:00 2001 From: aschmutt Date: Sat, 7 May 2022 17:44:24 +0200 Subject: [PATCH 2/3] Fontawesome 6 Pro --- Configuration/RTE/PluginFA5.yaml | 2 +- Configuration/RTE/PluginFA5Pro.yaml | 2 +- Configuration/RTE/PluginFA6.yaml | 2 +- Configuration/RTE/PluginFA6Pro.yaml | 16 ++ README.md | 17 ++ .../JavaScript/Plugins/ckeditor_fa5/plugin.js | 2 +- .../Plugins/ckeditor_fa5pro/plugin.js | 2 +- .../JavaScript/Plugins/ckeditor_fa6/plugin.js | 2 +- .../ckeditor_fa6pro/css/ckeditor-fa.css | 38 ++++ .../Plugins/ckeditor_fa6pro/dialogs/READNE.md | 42 ++++ .../ckeditor_fa6pro/dialogs/ckeditor-fa.js | 211 ++++++++++++++++++ .../Plugins/ckeditor_fa6pro/icons/fa32x32.png | Bin 0 -> 3022 bytes .../Plugins/ckeditor_fa6pro/plugin.js | 47 ++++ ext_emconf.php | 2 +- ext_localconf.php | 1 + 15 files changed, 379 insertions(+), 7 deletions(-) create mode 100644 Configuration/RTE/PluginFA6Pro.yaml create mode 100644 Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/css/ckeditor-fa.css create mode 100644 Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/READNE.md create mode 100644 Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/ckeditor-fa.js create mode 100644 Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/icons/fa32x32.png create mode 100644 Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/plugin.js diff --git a/Configuration/RTE/PluginFA5.yaml b/Configuration/RTE/PluginFA5.yaml index 885ae07..af19a34 100644 --- a/Configuration/RTE/PluginFA5.yaml +++ b/Configuration/RTE/PluginFA5.yaml @@ -2,7 +2,7 @@ editor: externalPlugins: ckeditor_fa5: - resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa5/plugin.js?v=11.5.4" + resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa5/plugin.js?v=11.5.5" config: fontAwesome: diff --git a/Configuration/RTE/PluginFA5Pro.yaml b/Configuration/RTE/PluginFA5Pro.yaml index e94f0c9..5826166 100644 --- a/Configuration/RTE/PluginFA5Pro.yaml +++ b/Configuration/RTE/PluginFA5Pro.yaml @@ -2,7 +2,7 @@ editor: externalPlugins: ckeditor_fa5pro: - resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa5pro/plugin.js?v=11.5.4" + resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa5pro/plugin.js?v=11.5.5" config: coreStyles_italic: diff --git a/Configuration/RTE/PluginFA6.yaml b/Configuration/RTE/PluginFA6.yaml index 85b1188..0712f5e 100644 --- a/Configuration/RTE/PluginFA6.yaml +++ b/Configuration/RTE/PluginFA6.yaml @@ -2,7 +2,7 @@ editor: externalPlugins: ckeditor_fa: - resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa6/plugin.js?v=11.5.4" + resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa6/plugin.js?v=11.5.5" config: fontAwesome: diff --git a/Configuration/RTE/PluginFA6Pro.yaml b/Configuration/RTE/PluginFA6Pro.yaml new file mode 100644 index 0000000..f44b4f4 --- /dev/null +++ b/Configuration/RTE/PluginFA6Pro.yaml @@ -0,0 +1,16 @@ +# Register wordcount plugin for ckeditor +editor: + externalPlugins: + ckeditor_fa: + resource: "EXT:rte_ckeditor_fontawesome/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/plugin.js?v=11.5.5" + + config: + + coreStyles_italic: + element: 'i' + overrides: 'span' + + extraAllowedContent: + - i(*)[*] + - span(*)[*] + - em(*)[*] \ No newline at end of file diff --git a/README.md b/README.md index 342f7d0..8ae60c1 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,23 @@ plugin.tx_ckeditor_fontawesome.css = "LINK TO FONTAWESOME PRO" ## Fontawesome 6 Pro +Usually you have a RTE config in your sitepacke, if not create a new file. +* add PluginFA6Pro.yaml to imports +* add fontawesome URL or path to CSS (do not forget to add webfonts path as defined in css) + +``` +imports: +- { resource: "EXT:rte_ckeditor/Configuration/RTE/Processing.yaml" } +- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" } +- { resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" } +- { resource: "EXT:rte_ckeditor_fontawesome/Configuration/RTE/PluginFA6Pro.yaml" } + +editor: + config: + fontAwesome: + - "EXT:sitepackage/Resources/Public/Fonts/Css/fa6pro-all.css" +``` + ## ToDo: - Add FA-Icon in Content Headline Definition. diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa5/plugin.js b/Resources/Public/JavaScript/Plugins/ckeditor_fa5/plugin.js index c70f329..e1b94ce 100644 --- a/Resources/Public/JavaScript/Plugins/ckeditor_fa5/plugin.js +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa5/plugin.js @@ -1,6 +1,6 @@ (function ($) { var CKEDITOR_FA = { - version: '11.5.4' + version: '11.5.5' }; CKEDITOR.dtd.$removeEmpty.span = 0; diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa5pro/plugin.js b/Resources/Public/JavaScript/Plugins/ckeditor_fa5pro/plugin.js index 04ff6cf..b308a26 100644 --- a/Resources/Public/JavaScript/Plugins/ckeditor_fa5pro/plugin.js +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa5pro/plugin.js @@ -1,6 +1,6 @@ (function ($) { var CKEDITOR_FA = { - version: '11.5.4' + version: '11.5.5' }; CKEDITOR.dtd.$removeEmpty.span = 0; diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa6/plugin.js b/Resources/Public/JavaScript/Plugins/ckeditor_fa6/plugin.js index 6ff56bf..3be583d 100644 --- a/Resources/Public/JavaScript/Plugins/ckeditor_fa6/plugin.js +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa6/plugin.js @@ -1,6 +1,6 @@ (function ($) { var CKEDITOR_FA = { - version: '11.5.4' + version: '11.5.5' }; CKEDITOR.dtd.$removeEmpty.span = 0; diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/css/ckeditor-fa.css b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/css/ckeditor-fa.css new file mode 100644 index 0000000..51c1306 --- /dev/null +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/css/ckeditor-fa.css @@ -0,0 +1,38 @@ + +#ckeditor-fa-icons { + text-align: center; + white-space: normal; + width: 100%; + height: 350px; + overflow: auto +} + +#ckeditor-fa-icons a { + display: inline-block; + width: 72px; + padding: 5px 0; + text-align: center; + vertical-align: top +} + +#ckeditor-fa-icons a span { + font-size: 28px; + display: block; + text-align: center +} + +#ckeditor-fa-icons a.active { + background-color: rgba(0, 0, 0, .1) +} + +.faSelect { + width: 100% +} + +div[name="font-awesome"] .cke_dialog_ui_input_select { + width: 100%; +} + +div[name="font-awesome"] .cke_dialog_ui_input_text { + min-width: 100px; +} \ No newline at end of file diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/READNE.md b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/READNE.md new file mode 100644 index 0000000..1ced5a4 --- /dev/null +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/READNE.md @@ -0,0 +1,42 @@ +Update Icons https://cdpn.io/MarkBoots/fullpage/LYyeGzo + +```javascript +fetch("https://raw.githubusercontent.com/FortAwesome/Font-Awesome/6.x/metadata/icons.json") + .then(response =>response.json()).then(jsondata => { + var solid = [], regular = [], brand = []; + + Object.entries(jsondata).forEach(([key, value]) => { + if(typeof value.free != 'undefined') { + if(value.free.indexOf('brands') >= 0) brand.push(`"${key}"`); + if(value.free.indexOf('solid') >= 0) solid.push(`"${key}"`); + if(value.free.indexOf('regular') >= 0) regular.push(`"${key}"`); + } + }); + + console.warn('%cSOLID', "font-size:3rem"); console.log(solid.join(',')); + console.warn('%cREGULAR', "font-size:3rem"); console.log(regular.join(',')); + console.warn('%cBRAND', "font-size:3rem"); console.log(brand.join(',')); + }); +``` + +### Update Icons with bash + +When loading with npm, there is a folder with SVGs: + +`node_modules/@fortawesome/fontawesome-pro/svgs/light` + +Bash script to get the list of icons: + +```bash +#!/bin/bash + +filelist="" +for file in *.svg +do + filename="${file%.svg}" + filelist+=\"$filename\", +done +echo $filelist +``` + +=> copy output, remove last `,` and paste into ckeditor-fa.js => `var faLight = [` \ No newline at end of file diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/ckeditor-fa.js b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/ckeditor-fa.js new file mode 100644 index 0000000..ca6aebc --- /dev/null +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/dialogs/ckeditor-fa.js @@ -0,0 +1,211 @@ +// Typo3 9.1 map jQuery back +if (typeof TYPO3.jQuery == 'undefined') { + TYPO3.jQuery = jQuery; +} + +function klick(el) { + + TYPO3.jQuery('#ckeditor-fa-icons a.active').removeClass('active'); + + var className = el.childNodes[0].getAttribute('class'); + document.getElementsByClassName('fontawesomeClass')[0].getElementsByTagName('input')[0].value = className; + el.className = el.className.replace('active', ''); + el.className += ' active'; +} + +function searchIcon(val) { + var fas = document.getElementById('ckeditor-fa-icons'); + var a = fas.getElementsByTagName('a'); + for (var i = 0, len = a.length, el, atr; i < len; i++) { + el = a[i]; + atr = el.childNodes[0].getAttribute('class'); + if (atr && atr.indexOf(val) >= 0) { + el.style.display = 'inline-block'; + } else { + el.style.display = 'none'; + } + } +} + +function clear() { + TYPO3.jQuery('#ckeditor-fa-icons a').removeClass('active').removeAttr('style'); +} + +(function ($) { + CKEDITOR.dialog.add('ckeditorFaDialog', function (editor) { + var faLight = ["0","00","1","2","3","360-degrees","4","5","6","7","8","9","a","abacus","accent-grave","acorn","address-book","address-card","air-conditioner","airplay","alarm-clock","alarm-exclamation","alarm-plus","alarm-snooze","album-circle-plus","album-circle-user","album-collection-circle-plus","album-collection-circle-user","album-collection","album","alicorn","alien-8bit","alien","align-center","align-justify","align-left","align-right","align-slash","alt","amp-guitar","ampersand","anchor-circle-check","anchor-circle-exclamation","anchor-circle-xmark","anchor-lock","anchor","angel","angle-90","angle-down","angle-left","angle-right","angle-up","angle","angles-down","angles-left","angles-right","angles-up","ankh","apartment","aperture","apostrophe","apple-core","apple-whole","archway","arrow-down-1-9","arrow-down-9-1","arrow-down-a-z","arrow-down-arrow-up","arrow-down-big-small","arrow-down-from-dotted-line","arrow-down-from-line","arrow-down-left-and-arrow-up-right-to-center","arrow-down-left","arrow-down-long","arrow-down-right","arrow-down-short-wide","arrow-down-small-big","arrow-down-square-triangle","arrow-down-to-arc","arrow-down-to-bracket","arrow-down-to-dotted-line","arrow-down-to-line","arrow-down-to-square","arrow-down-triangle-square","arrow-down-up-across-line","arrow-down-up-lock","arrow-down-wide-short","arrow-down-z-a","arrow-down","arrow-left-from-line","arrow-left-long-to-line","arrow-left-long","arrow-left-to-line","arrow-left","arrow-pointer","arrow-right-arrow-left","arrow-right-from-arc","arrow-right-from-bracket","arrow-right-from-line","arrow-right-long-to-line","arrow-right-long","arrow-right-to-arc","arrow-right-to-bracket","arrow-right-to-city","arrow-right-to-line","arrow-right","arrow-rotate-left","arrow-rotate-right","arrow-trend-down","arrow-trend-up","arrow-turn-down-left","arrow-turn-down-right","arrow-turn-down","arrow-turn-up","arrow-up-1-9","arrow-up-9-1","arrow-up-a-z","arrow-up-arrow-down","arrow-up-big-small","arrow-up-from-arc","arrow-up-from-bracket","arrow-up-from-dotted-line","arrow-up-from-ground-water","arrow-up-from-line","arrow-up-from-square","arrow-up-from-water-pump","arrow-up-left-from-circle","arrow-up-left","arrow-up-long","arrow-up-right-and-arrow-down-left-from-center","arrow-up-right-dots","arrow-up-right-from-square","arrow-up-right","arrow-up-short-wide","arrow-up-small-big","arrow-up-square-triangle","arrow-up-to-dotted-line","arrow-up-to-line","arrow-up-triangle-square","arrow-up-wide-short","arrow-up-z-a","arrow-up","arrows-cross","arrows-down-to-line","arrows-down-to-people","arrows-from-dotted-line","arrows-from-line","arrows-left-right-to-line","arrows-left-right","arrows-maximize","arrows-minimize","arrows-repeat-1","arrows-repeat","arrows-retweet","arrows-rotate","arrows-spin","arrows-split-up-and-left","arrows-to-circle","arrows-to-dot","arrows-to-dotted-line","arrows-to-eye","arrows-to-line","arrows-turn-right","arrows-turn-to-dots","arrows-up-down-left-right","arrows-up-down","arrows-up-to-line","asterisk","at","atom-simple","atom","audio-description-slash","audio-description","austral-sign","avocado","award-simple","award","axe-battle","axe","b","baby-carriage","baby","backpack","backward-fast","backward-step","backward","bacon","bacteria","bacterium","badge-check","badge-dollar","badge-percent","badge-sheriff","badge","badger-honey","badminton","bag-shopping","bagel","bags-shopping","baguette","bahai","baht-sign","ball-pile","balloon","balloons","ballot-check","ballot","ban-bug","ban-parking","ban-smoking","ban","banana","bandage","bangladeshi-taka-sign","banjo","barcode-read","barcode-scan","barcode","bars-filter","bars-progress","bars-sort","bars-staggered","bars","baseball-bat-ball","baseball","basket-shopping-simple","basket-shopping","basketball-hoop","basketball","bat","bath","battery-bolt","battery-empty","battery-exclamation","battery-full","battery-half","battery-low","battery-quarter","battery-slash","battery-three-quarters","bed-bunk","bed-empty","bed-front","bed-pulse","bed","bee","beer-mug-empty","beer-mug","bell-concierge","bell-exclamation","bell-on","bell-plus","bell-school-slash","bell-school","bell-slash","bell","bells","bench-tree","bezier-curve","bicycle","binary-circle-check","binary-lock","binary-slash","binary","binoculars","biohazard","bird","bitcoin-sign","blanket-fire","blanket","blender-phone","blender","blinds-open","blinds-raised","blinds","block-brick-fire","block-brick","block-question","block-quote","block","blog","blueberries","bluetooth","bold","bolt-auto","bolt-lightning","bolt-slash","bolt","bomb","bone-break","bone","bong","book-arrow-right","book-arrow-up","book-atlas","book-bible","book-blank","book-bookmark","book-circle-arrow-right","book-circle-arrow-up","book-copy","book-font","book-heart","book-journal-whills","book-medical","book-open-cover","book-open-reader","book-open","book-quran","book-section","book-skull","book-sparkles","book-tanakh","book-user","book","bookmark-slash","bookmark","books-medical","books","boombox","boot-heeled","boot","booth-curtain","border-all","border-bottom-right","border-bottom","border-center-h","border-center-v","border-inner","border-left","border-none","border-outer","border-right","border-top-left","border-top","bore-hole","bottle-droplet","bottle-water","bow-arrow","bowl-chopsticks-noodles","bowl-chopsticks","bowl-food","bowl-hot","bowl-rice","bowl-scoop","bowl-scoops","bowl-soft-serve","bowl-spoon","bowling-ball-pin","bowling-ball","bowling-pins","box-archive","box-ballot","box-check","box-circle-check","box-dollar","box-heart","box-open-full","box-open","box-taped","box-tissue","box","boxes-packing","boxes-stacked","boxing-glove","bracket-curly-right","bracket-curly","bracket-round-right","bracket-round","bracket-square-right","bracket-square","brackets-curly","brackets-round","brackets-square","braille","brain-arrow-curved-right","brain-circuit","brain","brake-warning","brazilian-real-sign","bread-loaf","bread-slice-butter","bread-slice","bridge-circle-check","bridge-circle-exclamation","bridge-circle-xmark","bridge-lock","bridge-suspension","bridge-water","bridge","briefcase-arrow-right","briefcase-blank","briefcase-medical","briefcase","brightness-low","brightness","bring-forward","bring-front","broccoli","broom-ball","broom","browser","browsers","brush","bucket","bug-slash","bug","bugs","building-circle-arrow-right","building-circle-check","building-circle-exclamation","building-circle-xmark","building-columns","building-flag","building-lock","building-ngo","building-shield","building-un","building-user","building-wheat","building","buildings","bullhorn","bullseye-arrow","bullseye-pointer","bullseye","burger-cheese","burger-fries","burger-glass","burger-lettuce","burger-soda","burger","burrito","burst","bus-school","bus-simple","bus","business-time","butter","c","cabin","cabinet-filing","cable-car","cactus","cake-candles","cake-slice","calculator-simple","calculator","calendar-arrow-down","calendar-arrow-up","calendar-check","calendar-circle-exclamation","calendar-circle-minus","calendar-circle-plus","calendar-circle-user","calendar-clock","calendar-day","calendar-days","calendar-exclamation","calendar-heart","calendar-image","calendar-lines-pen","calendar-lines","calendar-minus","calendar-pen","calendar-plus","calendar-range","calendar-star","calendar-week","calendar-xmark","calendar","calendars","camcorder","camera-cctv","camera-movie","camera-polaroid","camera-retro","camera-rotate","camera-security","camera-slash","camera-viewfinder","camera-web-slash","camera-web","camera","campfire","campground","can-food","candle-holder","candy-bar","candy-cane","candy-corn","candy","cannabis","capsules","car-battery","car-bolt","car-building","car-bump","car-burst","car-bus","car-circle-bolt","car-garage","car-mirrors","car-on","car-rear","car-side-bolt","car-side","car-tilt","car-tunnel","car-wash","car-wrench","car","caravan-simple","caravan","card-club","card-diamond","card-heart","card-spade","cards-blank","cards","caret-down","caret-left","caret-right","caret-up","carrot","cars","cart-arrow-down","cart-arrow-up","cart-circle-arrow-down","cart-circle-arrow-up","cart-circle-check","cart-circle-exclamation","cart-circle-plus","cart-circle-xmark","cart-flatbed-boxes","cart-flatbed-empty","cart-flatbed-suitcase","cart-flatbed","cart-minus","cart-plus","cart-shopping-fast","cart-shopping","cart-xmark","cash-register","cassette-betamax","cassette-tape","cassette-vhs","castle","cat-space","cat","cauldron","cedi-sign","cent-sign","certificate","chair-office","chair","chalkboard-user","chalkboard","champagne-glass","champagne-glasses","charging-station","chart-area","chart-bar","chart-bullet","chart-candlestick","chart-column","chart-gantt","chart-line-down","chart-line-up","chart-line","chart-mixed","chart-network","chart-pie-simple","chart-pie","chart-pyramid","chart-radar","chart-scatter-3d","chart-scatter-bubble","chart-scatter","chart-simple-horizontal","chart-simple","chart-tree-map","chart-user","chart-waterfall","check-double","check-to-slot","check","cheese-swiss","cheese","cherries","chess-bishop-piece","chess-bishop","chess-board","chess-clock-flip","chess-clock","chess-king-piece","chess-king","chess-knight-piece","chess-knight","chess-pawn-piece","chess-pawn","chess-queen-piece","chess-queen","chess-rook-piece","chess-rook","chess","chestnut","chevron-down","chevron-left","chevron-right","chevron-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up","child-dress","child-reaching","child-rifle","child","children","chimney","chopsticks","church","circle-0","circle-1","circle-2","circle-3","circle-4","circle-5","circle-6","circle-7","circle-8","circle-9","circle-a","circle-ampersand","circle-arrow-down-left","circle-arrow-down-right","circle-arrow-down","circle-arrow-left","circle-arrow-right","circle-arrow-up-left","circle-arrow-up-right","circle-arrow-up","circle-b","circle-bolt","circle-book-open","circle-bookmark","circle-c","circle-calendar","circle-camera","circle-caret-down","circle-caret-left","circle-caret-right","circle-caret-up","circle-check","circle-chevron-down","circle-chevron-left","circle-chevron-right","circle-chevron-up","circle-d","circle-dashed","circle-divide","circle-dollar-to-slot","circle-dollar","circle-dot","circle-down-left","circle-down-right","circle-down","circle-e","circle-ellipsis-vertical","circle-ellipsis","circle-envelope","circle-exclamation-check","circle-exclamation","circle-f","circle-g","circle-h","circle-half-stroke","circle-half","circle-heart","circle-i","circle-info","circle-j","circle-k","circle-l","circle-left","circle-location-arrow","circle-m","circle-microphone-lines","circle-microphone","circle-minus","circle-n","circle-nodes","circle-notch","circle-o","circle-p","circle-parking","circle-pause","circle-phone-flip","circle-phone-hangup","circle-phone","circle-play","circle-plus","circle-q","circle-quarter","circle-quarters","circle-question","circle-r","circle-radiation","circle-right","circle-s","circle-small","circle-sort-down","circle-sort-up","circle-sort","circle-star","circle-stop","circle-t","circle-three-quarters","circle-trash","circle-u","circle-up-left","circle-up-right","circle-up","circle-user","circle-v","circle-video","circle-w","circle-waveform-lines","circle-x","circle-xmark","circle-y","circle-z","circle","citrus-slice","citrus","city","clapperboard-play","clapperboard","clarinet","claw-marks","clipboard-check","clipboard-list-check","clipboard-list","clipboard-medical","clipboard-prescription","clipboard-question","clipboard-user","clipboard","clock-desk","clock-eight-thirty","clock-eight","clock-eleven-thirty","clock-eleven","clock-five-thirty","clock-five","clock-four-thirty","clock-nine-thirty","clock-nine","clock-one-thirty","clock-one","clock-rotate-left","clock-seven-thirty","clock-seven","clock-six-thirty","clock-six","clock-ten-thirty","clock-ten","clock-three-thirty","clock-three","clock-twelve-thirty","clock-twelve","clock-two-thirty","clock-two","clock","clone","closed-captioning-slash","closed-captioning","clothes-hanger","cloud-arrow-down","cloud-arrow-up","cloud-bolt-moon","cloud-bolt-sun","cloud-bolt","cloud-check","cloud-drizzle","cloud-exclamation","cloud-fog","cloud-hail-mixed","cloud-hail","cloud-meatball","cloud-minus","cloud-moon-rain","cloud-moon","cloud-music","cloud-plus","cloud-question","cloud-rain","cloud-rainbow","cloud-showers-heavy","cloud-showers-water","cloud-showers","cloud-slash","cloud-sleet","cloud-snow","cloud-sun-rain","cloud-sun","cloud-word","cloud-xmark","cloud","clouds-moon","clouds-sun","clouds","clover","club","coconut","code-branch","code-commit","code-compare","code-fork","code-merge","code-pull-request-closed","code-pull-request-draft","code-pull-request","code-simple","code","coffee-bean","coffee-beans","coffee-pot","coffin-cross","coffin","coin-blank","coin-front","coin-vertical","coin","coins","colon-sign","colon","columns-3","comet","comma","command","comment-arrow-down","comment-arrow-up-right","comment-arrow-up","comment-captions","comment-check","comment-code","comment-dollar","comment-dots","comment-exclamation","comment-image","comment-lines","comment-medical","comment-middle-top","comment-middle","comment-minus","comment-music","comment-pen","comment-plus","comment-question","comment-quote","comment-slash","comment-smile","comment-sms","comment-text","comment-xmark","comment","comments-dollar","comments-question-check","comments-question","comments","compact-disc","compass-drafting","compass-slash","compass","compress-wide","compress","computer-classic","computer-mouse-scrollwheel","computer-mouse","computer-speaker","computer","container-storage","conveyor-belt-boxes","conveyor-belt-empty","conveyor-belt","cookie-bite","cookie","copy","copyright","corn","corner","couch","cow","cowbell-circle-plus","cowbell","crab","crate-apple","crate-empty","credit-card-blank","credit-card-front","credit-card","cricket-bat-ball","croissant","crop-simple","crop","cross","crosshairs","crow","crown","crutch","crutches","cruzeiro-sign","crystal-ball","cube","cubes-stacked","cubes","cucumber","cup-straw-swoosh","cup-straw","cup-togo","cupcake","curling-stone","custard","d","dagger","dash","database","deer-rudolph","deer","delete-left","delete-right","democrat","desktop-arrow-down","desktop","dharmachakra","diagram-cells","diagram-lean-canvas","diagram-nested","diagram-next","diagram-predecessor","diagram-previous","diagram-project","diagram-sankey","diagram-subtask","diagram-successor","diagram-venn","dial-high","dial-low","dial-max","dial-med-low","dial-med","dial-min","dial-off","dial","diamond-exclamation","diamond-turn-right","diamond","dice-d10","dice-d12","dice-d20","dice-d4","dice-d6","dice-d8","dice-five","dice-four","dice-one","dice-six","dice-three","dice-two","dice","diploma","disc-drive","disease","display-arrow-down","display-code","display-medical","display-slash","display","distribute-spacing-horizontal","distribute-spacing-vertical","ditto","divide","dna","do-not-enter","dog-leashed","dog","dollar-sign","dolly-empty","dolly","dolphin","dong-sign","donut","door-closed","door-open","dove","down-from-dotted-line","down-from-line","down-left-and-up-right-to-center","down-left","down-long","down-right","down-to-bracket","down-to-dotted-line","down-to-line","down","download","dragon","draw-circle","draw-polygon","draw-square","dreidel","drone-front","drone","droplet-degree","droplet-percent","droplet-slash","droplet","drum-steelpan","drum","drumstick-bite","drumstick","dryer-heat","dryer","duck","dumbbell","dumpster-fire","dumpster","dungeon","e","ear-deaf","ear-listen","ear-muffs","ear","earth-africa","earth-americas","earth-asia","earth-europe","earth-oceania","eclipse","egg-fried","egg","eggplant","eject","elephant","elevator","ellipsis-stroke-vertical","ellipsis-stroke","ellipsis-vertical","ellipsis","empty-set","engine-warning","engine","envelope-circle-check","envelope-dot","envelope-open-dollar","envelope-open-text","envelope-open","envelope","envelopes-bulk","envelopes","equals","eraser","escalator","ethernet","euro-sign","exclamation","expand-wide","expand","explosion","eye-dropper-full","eye-dropper-half","eye-dropper","eye-evil","eye-low-vision","eye-slash","eye","eyes","f","face-angry-horns","face-angry","face-anguished","face-anxious-sweat","face-astonished","face-awesome","face-beam-hand-over-mouth","face-clouds","face-confounded","face-confused","face-cowboy-hat","face-diagonal-mouth","face-disappointed","face-disguise","face-dizzy","face-dotted","face-downcast-sweat","face-drooling","face-exhaling","face-explode","face-expressionless","face-eyes-xmarks","face-fearful","face-flushed","face-frown-open","face-frown-slight","face-frown","face-glasses","face-grimace","face-grin-beam-sweat","face-grin-beam","face-grin-hearts","face-grin-squint-tears","face-grin-squint","face-grin-stars","face-grin-tears","face-grin-tongue-squint","face-grin-tongue-wink","face-grin-tongue","face-grin-wide","face-grin-wink","face-grin","face-hand-over-mouth","face-hand-peeking","face-hand-yawn","face-head-bandage","face-holding-back-tears","face-hushed","face-icicles","face-kiss-beam","face-kiss-closed-eyes","face-kiss-wink-heart","face-kiss","face-laugh-beam","face-laugh-squint","face-laugh-wink","face-laugh","face-lying","face-mask","face-meh-blank","face-meh","face-melting","face-monocle","face-nauseated","face-nose-steam","face-party","face-pensive","face-persevering","face-pleading","face-pouting","face-raised-eyebrow","face-relieved","face-rolling-eyes","face-sad-cry","face-sad-sweat","face-sad-tear","face-saluting","face-scream","face-shush","face-sleeping","face-sleepy","face-smile-beam","face-smile-halo","face-smile-hearts","face-smile-horns","face-smile-plus","face-smile-relaxed","face-smile-tear","face-smile-tongue","face-smile-upside-down","face-smile-wink","face-smile","face-smiling-hands","face-smirking","face-spiral-eyes","face-sunglasses","face-surprise","face-swear","face-thermometer","face-thinking","face-tired","face-tissue","face-tongue-money","face-tongue-sweat","face-unamused","face-viewfinder","face-vomit","face-weary","face-woozy","face-worried","face-zany","face-zipper","falafel","family-dress","family-pants","family","fan-table","fan","farm","faucet-drip","faucet","fax","feather-pointed","feather","fence","ferris-wheel","ferry","field-hockey-stick-ball","file-arrow-down","file-arrow-up","file-audio","file-binary","file-certificate","file-chart-column","file-chart-pie","file-check","file-circle-check","file-circle-exclamation","file-circle-info","file-circle-minus","file-circle-plus","file-circle-question","file-circle-xmark","file-code","file-contract","file-csv","file-dashed-line","file-excel","file-exclamation","file-export","file-heart","file-image","file-import","file-invoice-dollar","file-invoice","file-lines","file-lock","file-magnifying-glass","file-medical","file-minus","file-music","file-pdf","file-pen","file-plus-minus","file-plus","file-powerpoint","file-prescription","file-shield","file-signature","file-slash","file-spreadsheet","file-user","file-video","file-waveform","file-word","file-xmark","file-zipper","file","files-medical","files","fill-drip","fill","film-canister","film-simple","film-slash","film","films","filter-circle-dollar","filter-circle-xmark","filter-list","filter-slash","filter","filters","fingerprint","fire-burner","fire-extinguisher","fire-flame-curved","fire-flame-simple","fire-flame","fire-hydrant","fire-smoke","fire","fireplace","fish-bones","fish-cooked","fish-fins","fish","fishing-rod","flag-checkered","flag-pennant","flag-swallowtail","flag-usa","flag","flashlight","flask-round-poison","flask-round-potion","flask-vial","flask","flatbread-stuffed","flatbread","floppy-disk-circle-arrow-right","floppy-disk-circle-xmark","floppy-disk-pen","floppy-disk","floppy-disks","florin-sign","flower-daffodil","flower-tulip","flower","flute","flux-capacitor","flying-disc","folder-arrow-down","folder-arrow-up","folder-bookmark","folder-closed","folder-gear","folder-grid","folder-heart","folder-image","folder-magnifying-glass","folder-medical","folder-minus","folder-music","folder-open","folder-plus","folder-tree","folder-user","folder-xmark","folder","folders","fondue-pot","font-awesome","font-case","font","football-helmet","football","fork-knife","fork","forklift","fort","forward-fast","forward-step","forward","frame","franc-sign","french-fries","frog","function","futbol","g","galaxy","gallery-thumbnails","game-board-simple","game-board","game-console-handheld","gamepad-modern","gamepad","garage-car","garage-open","garage","garlic","gas-pump-slash","gas-pump","gauge-circle-bolt","gauge-circle-minus","gauge-circle-plus","gauge-high","gauge-low","gauge-max","gauge-min","gauge-simple-high","gauge-simple-low","gauge-simple-max","gauge-simple-min","gauge-simple","gauge","gavel","gear","gears","gem","genderless","ghost","gif","gift-card","gift","gifts","gingerbread-man","glass-citrus","glass-empty","glass-half","glass-water-droplet","glass-water","glass","glasses-round","glasses","globe-snow","globe-stand","globe","goal-net","golf-ball-tee","golf-club","golf-flag-hole","gopuram","graduation-cap","gramophone","grapes","grate-droplet","grate","greater-than-equal","greater-than","grid-2-plus","grid-2","grid-4","grid-5","grid-dividers","grid-horizontal","grid","grip-dots-vertical","grip-dots","grip-lines-vertical","grip-lines","grip-vertical","grip","group-arrows-rotate","guarani-sign","guitar-electric","guitar","guitars","gun-slash","gun-squirt","gun","h","h1","h2","h3","h4","h5","h6","hammer-crash","hammer-war","hammer","hamsa","hand-back-fist","hand-back-point-down","hand-back-point-left","hand-back-point-ribbon","hand-back-point-right","hand-back-point-up","hand-dots","hand-fingers-crossed","hand-fist","hand-heart","hand-holding-box","hand-holding-dollar","hand-holding-droplet","hand-holding-hand","hand-holding-heart","hand-holding-magic","hand-holding-medical","hand-holding-seedling","hand-holding-skull","hand-holding","hand-horns","hand-lizard","hand-love","hand-middle-finger","hand-peace","hand-point-down","hand-point-left","hand-point-ribbon","hand-point-right","hand-point-up","hand-pointer","hand-scissors","hand-sparkles","hand-spock","hand-wave","hand","handcuffs","hands-asl-interpreting","hands-bound","hands-bubbles","hands-clapping","hands-holding-child","hands-holding-circle","hands-holding-diamond","hands-holding-dollar","hands-holding-heart","hands-holding","hands-praying","hands","handshake-angle","handshake-simple-slash","handshake-simple","handshake-slash","handshake","hanukiah","hard-drive","hashtag-lock","hashtag","hat-chef","hat-cowboy-side","hat-cowboy","hat-santa","hat-winter","hat-witch","hat-wizard","head-side-brain","head-side-cough-slash","head-side-cough","head-side-goggles","head-side-headphones","head-side-heart","head-side-mask","head-side-medical","head-side-virus","head-side","heading","headphones-simple","headphones","headset","heart-circle-bolt","heart-circle-check","heart-circle-exclamation","heart-circle-minus","heart-circle-plus","heart-circle-xmark","heart-crack","heart-half-stroke","heart-half","heart-pulse","heart","heat","helicopter-symbol","helicopter","helmet-battle","helmet-safety","helmet-un","hexagon-check","hexagon-divide","hexagon-exclamation","hexagon-image","hexagon-minus","hexagon-plus","hexagon-vertical-nft-slanted","hexagon-vertical-nft","hexagon-xmark","hexagon","high-definition","highlighter-line","highlighter","hill-avalanche","hill-rockslide","hippo","hockey-mask","hockey-puck","hockey-stick-puck","hockey-sticks","holly-berry","honey-pot","hood-cloak","horizontal-rule","horse-head","horse-saddle","horse","hose-reel","hose","hospital-user","hospital","hospitals","hot-tub-person","hotdog","hotel","hourglass-clock","hourglass-empty","hourglass-end","hourglass-start","hourglass","house-blank","house-building","house-chimney-blank","house-chimney-crack","house-chimney-heart","house-chimney-medical","house-chimney-user","house-chimney-window","house-chimney","house-circle-check","house-circle-exclamation","house-circle-xmark","house-crack","house-day","house-fire","house-flag","house-flood-water-circle-arrow-right","house-flood-water","house-heart","house-laptop","house-lock","house-medical-circle-check","house-medical-circle-exclamation","house-medical-circle-xmark","house-medical-flag","house-medical","house-night","house-person-leave","house-person-return","house-signal","house-tree","house-tsunami","house-turret","house-user","house-water","house-window","house","hryvnia-sign","hundred-points","hurricane","hyphen","i-cursor","i","ice-cream","ice-skate","icicles","icons","id-badge","id-card-clip","id-card","igloo","image-landscape","image-polaroid-user","image-polaroid","image-portrait","image-slash","image-user","image","images-user","images","inbox-full","inbox-in","inbox-out","inbox","inboxes","indent","indian-rupee-sign","industry-windows","industry","infinity","info","inhaler","input-numeric","input-pipe","input-text","integral","intersection","island-tropical","italic","j","jack-o-lantern","jar-wheat","jar","jedi","jet-fighter-up","jet-fighter","joint","joystick","jug-detergent","jug","k","kaaba","kazoo","kerning","key-skeleton-left-right","key-skeleton","key","keyboard-brightness-low","keyboard-brightness","keyboard-down","keyboard-left","keyboard","keynote","khanda","kidneys","kip-sign","kit-medical","kitchen-set","kite","kiwi-bird","kiwi-fruit","knife-kitchen","knife","l","lacrosse-stick-ball","lacrosse-stick","lambda","lamp-desk","lamp-floor","lamp-street","lamp","land-mine-on","landmark-dome","landmark-flag","landmark","language","laptop-arrow-down","laptop-code","laptop-file","laptop-medical","laptop-mobile","laptop-slash","laptop","lari-sign","lasso-sparkles","lasso","layer-group","layer-minus","layer-plus","leaf-heart","leaf-maple","leaf-oak","leaf","leafy-green","left-from-line","left-long-to-line","left-long","left-right","left-to-line","left","lemon","less-than-equal","less-than","life-ring","light-ceiling","light-emergency-on","light-emergency","light-switch-off","light-switch-on","light-switch","lightbulb-dollar","lightbulb-exclamation-on","lightbulb-exclamation","lightbulb-on","lightbulb-slash","lightbulb","lights-holiday","line-columns","line-height","lines-leaning","link-horizontal-slash","link-horizontal","link-simple-slash","link-simple","link-slash","link","lips","lira-sign","list-check","list-dropdown","list-music","list-ol","list-radio","list-timeline","list-tree","list-ul","list","litecoin-sign","loader","lobster","location-arrow","location-check","location-crosshairs-slash","location-crosshairs","location-dot-slash","location-dot","location-exclamation","location-minus","location-pen","location-pin-lock","location-pin-slash","location-pin","location-plus","location-question","location-smile","location-xmark","lock-a","lock-hashtag","lock-keyhole-open","lock-keyhole","lock-open","lock","locust","lollipop","loveseat","luchador-mask","lungs-virus","lungs","m","mace","magnet","magnifying-glass-arrow-right","magnifying-glass-chart","magnifying-glass-dollar","magnifying-glass-location","magnifying-glass-minus","magnifying-glass-plus","magnifying-glass","mailbox","manat-sign","mandolin","mango","manhole","map-location-dot","map-location","map-pin","map","marker","mars-and-venus-burst","mars-and-venus","mars-double","mars-stroke-right","mars-stroke-up","mars-stroke","mars","martini-glass-citrus","martini-glass-empty","martini-glass","mask-face","mask-snorkel","mask-ventilator","mask","masks-theater","mattress-pillow","maximize","meat","medal","megaphone","melon-slice","melon","memo-circle-check","memo-circle-info","memo-pad","memo","memory","menorah","mercury","merge","message-arrow-down","message-arrow-up-right","message-arrow-up","message-bot","message-captions","message-check","message-code","message-dollar","message-dots","message-exclamation","message-image","message-lines","message-medical","message-middle-top","message-middle","message-minus","message-music","message-pen","message-plus","message-question","message-quote","message-slash","message-smile","message-sms","message-text","message-xmark","message","messages-dollar","messages-question","messages","meteor","meter-bolt","meter-droplet","meter-fire","meter","microchip-ai","microchip","microphone-lines-slash","microphone-lines","microphone-slash","microphone-stand","microphone","microscope","microwave","mill-sign","minimize","minus","mistletoe","mitten","mobile-button","mobile-notch","mobile-retro","mobile-screen-button","mobile-screen","mobile-signal-out","mobile-signal","mobile","money-bill-1-wave","money-bill-1","money-bill-simple-wave","money-bill-simple","money-bill-transfer","money-bill-trend-up","money-bill-wave","money-bill-wheat","money-bill","money-bills-simple","money-bills","money-check-dollar-pen","money-check-dollar","money-check-pen","money-check","money-from-bracket","money-simple-from-bracket","monitor-waveform","monkey","monument","moon-cloud","moon-over-sun","moon-stars","moon","moped","mortar-pestle","mosque","mosquito-net","mosquito","motorcycle","mound","mountain-city","mountain-sun","mountain","mountains","mp3-player","mug-hot","mug-marshmallows","mug-saucer","mug-tea-saucer","mug-tea","mug","mushroom","music-note-slash","music-note","music-slash","music","n","naira-sign","narwhal","nesting-dolls","network-wired","neuter","newspaper","nfc-lock","nfc-magnifying-glass","nfc-pen","nfc-signal","nfc-slash","nfc-symbol","nfc-trash","nfc","not-equal","notdef","note-medical","note-sticky","note","notebook","notes-medical","notes","o","object-exclude","object-group","object-intersect","object-subtract","object-ungroup","object-union","objects-align-bottom","objects-align-center-horizontal","objects-align-center-vertical","objects-align-left","objects-align-right","objects-align-top","objects-column","octagon-check","octagon-divide","octagon-exclamation","octagon-minus","octagon-plus","octagon-xmark","octagon","oil-can-drip","oil-can","oil-temperature","oil-well","olive-branch","olive","om","omega","onion","option","ornament","otter","outdent","outlet","oven","overline","p","page-caret-down","page-caret-up","page","pager","paint-roller","paintbrush-fine","paintbrush-pencil","paintbrush","palette","pallet-box","pallet-boxes","pallet","pan-food","pan-frying","pancakes","panel-ews","panel-fire","panorama","paper-plane-top","paper-plane","paperclip-vertical","paperclip","parachute-box","paragraph-left","paragraph","party-bell","party-horn","passport","paste","pause","paw-claws","paw-simple","paw","peace","peach","peanut","peanuts","peapod","pear","pedestal","pegasus","pen-circle","pen-clip-slash","pen-clip","pen-fancy-slash","pen-fancy","pen-field","pen-line","pen-nib-slash","pen-nib","pen-paintbrush","pen-ruler","pen-slash","pen-swirl","pen-to-square","pen","pencil-slash","pencil","people-arrows-left-right","people-carry-box","people-dress-simple","people-dress","people-group","people-line","people-pants-simple","people-pants","people-pulling","people-robbery","people-roof","people-simple","people","pepper-hot","pepper","percent","period","person-arrow-down-to-line","person-arrow-up-from-line","person-biking-mountain","person-biking","person-booth","person-breastfeeding","person-burst","person-cane","person-carry-box","person-chalkboard","person-circle-check","person-circle-exclamation","person-circle-minus","person-circle-plus","person-circle-question","person-circle-xmark","person-digging","person-dolly-empty","person-dolly","person-dots-from-line","person-dress-burst","person-dress-simple","person-dress","person-drowning","person-falling-burst","person-falling","person-from-portal","person-half-dress","person-harassing","person-hiking","person-military-pointing","person-military-rifle","person-military-to-person","person-pinball","person-praying","person-pregnant","person-rays","person-rifle","person-running","person-seat-reclined","person-seat","person-shelter","person-sign","person-simple","person-skating","person-ski-jumping","person-ski-lift","person-skiing-nordic","person-skiing","person-sledding","person-snowboarding","person-snowmobiling","person-swimming","person-through-window","person-to-door","person-to-portal","person-walking-arrow-loop-left","person-walking-arrow-right","person-walking-dashed-line-arrow-right","person-walking-luggage","person-walking-with-cane","person-walking","person","peseta-sign","peso-sign","phone-arrow-down-left","phone-arrow-up-right","phone-flip","phone-hangup","phone-intercom","phone-missed","phone-office","phone-plus","phone-rotary","phone-slash","phone-volume","phone-xmark","phone","photo-film-music","photo-film","pi","piano-keyboard","piano","pickleball","pie","pig","piggy-bank","pills","pinata","pinball","pineapple","pipe-circle-check","pipe-collar","pipe-section","pipe-smoking","pipe-valve","pipe","pizza-slice","pizza","place-of-worship","plane-arrival","plane-circle-check","plane-circle-exclamation","plane-circle-xmark","plane-departure","plane-engines","plane-lock","plane-prop","plane-slash","plane-tail","plane-up-slash","plane-up","plane","planet-moon","planet-ringed","plant-wilt","plate-utensils","plate-wheat","play-pause","play","plug-circle-bolt","plug-circle-check","plug-circle-exclamation","plug-circle-minus","plug-circle-plus","plug-circle-xmark","plug","plus-large","plus-minus","plus","podcast","podium-star","podium","police-box","poll-people","pompebled","poo-storm","poo","pool-8-ball","poop","popcorn","popsicle","pot-food","potato","power-off","prescription-bottle-medical","prescription-bottle","prescription","presentation-screen","pretzel","print-magnifying-glass","print-slash","print","projector","pump-medical","pump-soap","pump","pumpkin","puzzle-piece-simple","puzzle-piece","puzzle","q","qrcode","question","quote-left","quote-right","quotes","r","rabbit-running","rabbit","racquet","radar","radiation","radio-tuner","radio","rainbow","raindrops","ram","ramp-loading","ranking-star","raygun","receipt","record-vinyl","rectangle-ad","rectangle-barcode","rectangle-code","rectangle-history-circle-plus","rectangle-history-circle-user","rectangle-history","rectangle-list","rectangle-pro","rectangle-terminal","rectangle-vertical-history","rectangle-vertical","rectangle-wide","rectangle-xmark","rectangle","rectangles-mixed","recycle","reel","refrigerator","registered","repeat-1","repeat","reply-all","reply-clock","reply","republican","restroom-simple","restroom","retweet","rhombus","ribbon","right-from-bracket","right-from-line","right-left","right-long-to-line","right-long","right-to-bracket","right-to-line","right","ring","rings-wedding","road-barrier","road-bridge","road-circle-check","road-circle-exclamation","road-circle-xmark","road-lock","road-spikes","road","robot-astromech","robot","rocket-launch","rocket","roller-coaster","rotate-exclamation","rotate-left","rotate-right","rotate","route-highway","route-interstate","route","router","rss","ruble-sign","rug","rugby-ball","ruler-combined","ruler-horizontal","ruler-triangle","ruler-vertical","ruler","rupee-sign","rupiah-sign","rv","s","sack-dollar","sack-xmark","sack","sailboat","salad","salt-shaker","sandwich","satellite-dish","satellite","sausage","saxophone-fire","saxophone","scale-balanced","scale-unbalanced-flip","scale-unbalanced","scalpel-line-dashed","scalpel","scanner-gun","scanner-keyboard","scanner-touchscreen","scanner","scarecrow","scarf","school-circle-check","school-circle-exclamation","school-circle-xmark","school-flag","school-lock","school","scissors","screen-users","screencast","screwdriver-wrench","screwdriver","scribble","scroll-old","scroll-torah","scroll","scrubber","scythe","sd-card","sd-cards","seal-exclamation","seal-question","seal","seat-airline","section","seedling","semicolon","send-back","send-backward","sensor-cloud","sensor-fire","sensor-on","sensor-triangle-exclamation","sensor","server","shapes","share-all","share-from-square","share-nodes","share","sheep","sheet-plastic","shekel-sign","shelves-empty","shelves","shield-cat","shield-check","shield-cross","shield-dog","shield-exclamation","shield-halved","shield-heart","shield-keyhole","shield-minus","shield-plus","shield-quartered","shield-slash","shield-virus","shield-xmark","shield","ship","shirt-long-sleeve","shirt-running","shirt-tank-top","shirt","shish-kebab","shoe-prints","shop-lock","shop-slash","shop","shovel-snow","shovel","shower-down","shower","shredder","shrimp","shuffle","shutters","shuttle-space","shuttlecock","sickle","sidebar-flip","sidebar","sigma","sign-hanging","signal-bars-fair","signal-bars-good","signal-bars-slash","signal-bars-weak","signal-bars","signal-fair","signal-good","signal-slash","signal-stream-slash","signal-stream","signal-strong","signal-weak","signal","signature-lock","signature-slash","signature","signs-post","sim-card","sim-cards","sink","siren-on","siren","sitemap","skeleton","ski-boot-ski","ski-boot","skull-cow","skull-crossbones","skull","slash-back","slash-forward","slash","sleigh","slider","sliders-simple","sliders-up","sliders","slot-machine","smog","smoke","smoking","snake","snooze","snow-blowing","snowflake","snowflakes","snowman-head","snowman","snowplow","soap","socks","soft-serve","solar-panel","solar-system","sort-down","sort-up","sort","spa","space-station-moon-construction","space-station-moon","spade","spaghetti-monster-flying","sparkles","speaker","speakers","spell-check","spider-black-widow","spider-web","spider","spinner-third","spinner","split","splotch","spoon","sportsball","spray-can-sparkles","spray-can","sprinkler-ceiling","sprinkler","square-0","square-1","square-2","square-3","square-4","square-5","square-6","square-7","square-8","square-9","square-a-lock","square-a","square-ampersand","square-arrow-down-left","square-arrow-down-right","square-arrow-down","square-arrow-left","square-arrow-right","square-arrow-up-left","square-arrow-up-right","square-arrow-up","square-b","square-bolt","square-c","square-caret-down","square-caret-left","square-caret-right","square-caret-up","square-check","square-chevron-down","square-chevron-left","square-chevron-right","square-chevron-up","square-code","square-d","square-dashed","square-divide","square-dollar","square-down-left","square-down-right","square-down","square-e","square-ellipsis-vertical","square-ellipsis","square-envelope","square-exclamation","square-f","square-fragile","square-full","square-g","square-h","square-heart","square-i","square-info","square-j","square-k","square-kanban","square-l","square-left","square-list","square-m","square-minus","square-n","square-nfi","square-o","square-p","square-parking-slash","square-parking","square-pen","square-person-confined","square-phone-flip","square-phone-hangup","square-phone","square-plus","square-poll-horizontal","square-poll-vertical","square-q","square-quarters","square-question","square-quote","square-r","square-right","square-ring","square-root-variable","square-root","square-rss","square-s","square-share-nodes","square-sliders-vertical","square-sliders","square-small","square-star","square-t","square-terminal","square-this-way-up","square-u","square-up-left","square-up-right","square-up","square-user","square-v","square-virus","square-w","square-x","square-xmark","square-y","square-z","square","squid","squirrel","staff-aesculapius","staff","stairs","stamp","standard-definition","star-and-crescent","star-christmas","star-exclamation","star-half-stroke","star-half","star-of-david","star-of-life","star-sharp-half-stroke","star-sharp-half","star-sharp","star-shooting","star","starfighter-twin-ion-engine-advanced","starfighter-twin-ion-engine","starfighter","stars","starship-freighter","starship","steak","steering-wheel","sterling-sign","stethoscope","stocking","stomach","stop","stopwatch-20","stopwatch","store-lock","store-slash","store","strawberry","street-view","stretcher","strikethrough","stroopwafel","subscript","suitcase-medical","suitcase-rolling","suitcase","sun-bright","sun-cloud","sun-dust","sun-haze","sun-plant-wilt","sun","sunglasses","sunrise","sunset","superscript","sushi-roll","sushi","swatchbook","sword-laser-alt","sword-laser","sword","swords-laser","swords","symbols","synagogue","syringe","t","table-cells-large","table-cells","table-columns","table-layout","table-list","table-picnic","table-pivot","table-rows","table-tennis-paddle-ball","table-tree","table","tablet-button","tablet-rugged","tablet-screen-button","tablet-screen","tablet","tablets","tachograph-digital","taco","tag","tags","tally-1","tally-2","tally-3","tally-4","tally","tamale","tank-water","tape","tarp-droplet","tarp","taxi-bus","taxi","teddy-bear","teeth-open","teeth","telescope","temperature-arrow-down","temperature-arrow-up","temperature-empty","temperature-full","temperature-half","temperature-high","temperature-list","temperature-low","temperature-quarter","temperature-snow","temperature-sun","temperature-three-quarters","tenge-sign","tennis-ball","tent-arrow-down-to-line","tent-arrow-left-right","tent-arrow-turn-left","tent-arrows-down","tent","tents","terminal","text-height","text-size","text-slash","text-width","text","thermometer","theta","thought-bubble","thumbs-down","thumbs-up","thumbtack","tick","ticket-airline","ticket-simple","ticket","tickets-airline","tilde","timeline-arrow","timeline","timer","tire-flat","tire-pressure-warning","tire-rugged","tire","toggle-off","toggle-on","toilet-paper-blank-under","toilet-paper-blank","toilet-paper-slash","toilet-paper-under-slash","toilet-paper-under","toilet-paper","toilet-portable","toilet","toilets-portable","tomato","tombstone-blank","tombstone","toolbox","tooth","toothbrush","torii-gate","tornado","tower-broadcast","tower-cell","tower-control","tower-observation","tractor","trademark","traffic-cone","traffic-light-go","traffic-light-slow","traffic-light-stop","traffic-light","trailer","train-subway-tunnel","train-subway","train-track","train-tram","train-tunnel","train","transformer-bolt","transgender","transporter-1","transporter-2","transporter-3","transporter-4","transporter-5","transporter-6","transporter-7","transporter-empty","transporter","trash-arrow-up","trash-can-arrow-up","trash-can-check","trash-can-clock","trash-can-list","trash-can-plus","trash-can-slash","trash-can-undo","trash-can-xmark","trash-can","trash-check","trash-clock","trash-list","trash-plus","trash-slash","trash-undo","trash-xmark","trash","treasure-chest","tree-christmas","tree-city","tree-deciduous","tree-decorated","tree-large","tree-palm","tree","trees","triangle-exclamation","triangle-instrument","triangle-person-digging","triangle","trillium","trophy-star","trophy","trowel-bricks","trowel","truck-arrow-right","truck-bolt","truck-clock","truck-container-empty","truck-container","truck-droplet","truck-fast","truck-field-un","truck-field","truck-flatbed","truck-front","truck-medical","truck-monster","truck-moving","truck-pickup","truck-plane","truck-plow","truck-ramp-box","truck-ramp-couch","truck-ramp","truck-tow","truck","trumpet","tty-answer","tty","tugrik-sign","turkey","turkish-lira-sign","turn-down-left","turn-down-right","turn-down","turn-up","turntable","turtle","tv-music","tv-retro","tv","typewriter","u","ufo-beam","ufo","umbrella-beach","umbrella-simple","umbrella","underline","unicorn","uniform-martial-arts","union","universal-access","unlock-keyhole","unlock","up-down-left-right","up-down","up-from-bracket","up-from-dotted-line","up-from-line","up-left","up-long","up-right-and-down-left-from-center","up-right-from-square","up-right","up-to-dotted-line","up-to-line","up","upload","usb-drive","user-alien","user-astronaut","user-bounty-hunter","user-check","user-chef","user-clock","user-cowboy","user-crown","user-doctor-hair-long","user-doctor-hair","user-doctor-message","user-doctor","user-gear","user-graduate","user-group-crown","user-group","user-hair-buns","user-hair-long","user-hair-mullet","user-hair","user-headset","user-helmet-safety","user-injured","user-large-slash","user-large","user-lock","user-minus","user-music","user-ninja","user-nurse-hair-long","user-nurse-hair","user-nurse","user-pen","user-pilot-tie","user-pilot","user-plus","user-police-tie","user-police","user-robot-xmarks","user-robot","user-secret","user-shakespeare","user-shield","user-slash","user-tag","user-tie-hair-long","user-tie-hair","user-tie","user-unlock","user-visor","user-vneck-hair-long","user-vneck-hair","user-vneck","user-xmark","user","users-between-lines","users-gear","users-line","users-medical","users-rays","users-rectangle","users-slash","users-viewfinder","users","utensils-slash","utensils","utility-pole-double","utility-pole","v","vacuum-robot","vacuum","value-absolute","van-shuttle","vault","vector-circle","vector-polygon","vector-square","vent-damper","venus-double","venus-mars","venus","vest-patches","vest","vial-circle-check","vial-virus","vial","vials","video-arrow-down-left","video-arrow-up-right","video-plus","video-slash","video","vihara","violin","virus-covid-slash","virus-covid","virus-slash","virus","viruses","voicemail","volcano","volleyball","volume-high","volume-low","volume-off","volume-slash","volume-xmark","volume","vr-cardboard","w","waffle","wagon-covered","walker","walkie-talkie","wallet","wand-magic-sparkles","wand-magic","wand-sparkles","wand","warehouse-full","warehouse","washing-machine","watch-apple","watch-calculator","watch-fitness","watch-smart","watch","water-arrow-down","water-arrow-up","water-ladder","water","watermelon-slice","wave-pulse","wave-sine","wave-square","wave-triangle","waveform-lines","waveform","weight-hanging","weight-scale","whale","wheat-awn-circle-exclamation","wheat-awn-slash","wheat-awn","wheat-slash","wheat","wheelchair-move","wheelchair","whiskey-glass-ice","whiskey-glass","whistle","wifi-exclamation","wifi-fair","wifi-slash","wifi-weak","wifi","wind-turbine","wind-warning","wind","window-flip","window-frame-open","window-frame","window-maximize","window-minimize","window-restore","window","windsock","wine-bottle","wine-glass-crack","wine-glass-empty","wine-glass","won-sign","worm","wreath","wrench-simple","wrench","x-ray","x","xmark-large","xmark-to-slot","xmark","xmarks-lines","y","yen-sign","yin-yang","z"]; + var faRegular = faLight; + var faSolid = faLight; + var faBrands = ["42-group","500px","accessible-icon","accusoft","adn","adversal","affiliatetheme","airbnb","algolia","alipay","amazon-pay","amazon","amilia","android","angellist","angrycreative","angular","app-store-ios","app-store","apper","apple-pay","apple","artstation","asymmetrik","atlassian","audible","autoprefixer","avianex","aviato","aws","bandcamp","battle-net","behance-square","behance","bilibili","bimobject","bitbucket","bitcoin","bity","black-tie","blackberry","blogger-b","blogger","bluetooth-b","bluetooth","bootstrap","bots","btc","buffer","buromobelexperte","buy-n-large","buysellads","canadian-maple-leaf","cc-amazon-pay","cc-amex","cc-apple-pay","cc-diners-club","cc-discover","cc-jcb","cc-mastercard","cc-paypal","cc-stripe","cc-visa","centercode","centos","chrome","chromecast","cloudflare","cloudscale","cloudsmith","cloudversify","cmplid","codepen","codiepie","confluence","connectdevelop","contao","cotton-bureau","cpanel","creative-commons-by","creative-commons-nc-eu","creative-commons-nc-jp","creative-commons-nc","creative-commons-nd","creative-commons-pd-alt","creative-commons-pd","creative-commons-remix","creative-commons-sa","creative-commons-sampling-plus","creative-commons-sampling","creative-commons-share","creative-commons-zero","creative-commons","critical-role","css3-alt","css3","cuttlefish","d-and-d-beyond","d-and-d","dailymotion","dashcube","deezer","delicious","deploydog","deskpro","dev","deviantart","dhl","diaspora","digg","digital-ocean","discord","discourse","dochub","docker","draft2digital","dribbble-square","dribbble","dropbox","drupal","dyalog","earlybirds","ebay","edge-legacy","edge","elementor","ello","ember","empire","envira","erlang","ethereum","etsy","evernote","expeditedssl","facebook-f","facebook-messenger","facebook-square","facebook","fantasy-flight-games","fedex","fedora","figma","firefox-browser","firefox","first-order-alt","first-order","firstdraft","flickr","flipboard","fly","font-awesome","fonticons-fi","fonticons","fort-awesome-alt","fort-awesome","forumbee","foursquare","free-code-camp","freebsd","fulcrum","galactic-republic","galactic-senate","get-pocket","gg-circle","gg","git-alt","git-square","git","github-alt","github-square","github","gitkraken","gitlab","gitter","glide-g","glide","gofore","golang","goodreads-g","goodreads","google-drive","google-pay","google-play","google-plus-g","google-plus-square","google-plus","google-wallet","google","gratipay","grav","gripfire","grunt","guilded","gulp","hacker-news-square","hacker-news","hackerrank","hashnode","hips","hire-a-helper","hive","hooli","hornbill","hotjar","houzz","html5","hubspot","ideal","imdb","instagram-square","instagram","instalod","intercom","internet-explorer","invision","ioxhost","itch-io","itunes-note","itunes","java","jedi-order","jenkins","jira","joget","joomla","js-square","js","jsfiddle","kaggle","keybase","keycdn","kickstarter-k","kickstarter","korvue","laravel","lastfm-square","lastfm","leanpub","less","line","linkedin-in","linkedin","linode","linux","lyft","magento","mailchimp","mandalorian","markdown","mastodon","maxcdn","mdb","medapps","medium","medrt","meetup","megaport","mendeley","meta","microblog","microsoft","mix","mixcloud","mixer","mizuni","modx","monero","napster","neos","nfc-directional","nfc-symbol","nimblr","node-js","node","npm","ns8","nutritionix","octopus-deploy","odnoklassniki-square","odnoklassniki","old-republic","opencart","openid","opera","optin-monster","orcid","osi","padlet","page4","pagelines","palfed","patreon","paypal","perbyte","periscope","phabricator","phoenix-framework","phoenix-squadron","php","pied-piper-alt","pied-piper-hat","pied-piper-pp","pied-piper-square","pied-piper","pinterest-p","pinterest-square","pinterest","pix","playstation","product-hunt","pushed","python","qq","quinscape","quora","r-project","raspberry-pi","ravelry","react","reacteurope","readme","rebel","red-river","reddit-alien","reddit-square","reddit","redhat","renren","replyd","researchgate","resolving","rev","rocketchat","rockrms","rust","safari","salesforce","sass","schlix","screenpal","scribd","searchengin","sellcast","sellsy","servicestack","shirtsinbulk","shopify","shopware","simplybuilt","sistrix","sith","sitrox","sketch","skyatlas","skype","slack","slideshare","snapchat-square","snapchat","soundcloud","sourcetree","speakap","speaker-deck","spotify","square-font-awesome-stroke","square-font-awesome","squarespace","stack-exchange","stack-overflow","stackpath","staylinked","steam-square","steam-symbol","steam","sticker-mule","strava","stripe-s","stripe","studiovinari","stumbleupon-circle","stumbleupon","superpowers","supple","suse","swift","symfony","teamspeak","telegram","tencent-weibo","the-red-yeti","themeco","themeisle","think-peaks","tiktok","trade-federation","trello","tumblr-square","tumblr","twitch","twitter-square","twitter","typo3","uber","ubuntu","uikit","umbraco","uncharted","uniregistry","unity","unsplash","untappd","ups","usb","usps","ussunnah","vaadin","viacoin","viadeo-square","viadeo","viber","vimeo-square","vimeo-v","vimeo","vine","vk","vnv","vuejs","watchman-monitoring","waze","weebly","weibo","weixin","whatsapp-square","whatsapp","whmcs","wikipedia-w","windows","wirsindhandwerk","wix","wizards-of-the-coast","wodu","wolf-pack-battalion","wordpress-simple","wordpress","wpbeginner","wpexplorer","wpforms","wpressr","xbox","xing-square","xing","y-combinator","yahoo","yammer","yandex-international","yandex","yarn","yelp","yoast","youtube-square","youtube","zhihu"]; + + function faIcons(fas, ty) { + var icons = ''; + for (var x in fas) { + var ids = fas[x]; + var id = ids.split('-').join('
'); + icons += '' + id + ''; + } + return icons; + } + + return { + title: 'FontAwesome6 Pro Icons', + minWidth: 550, + minHeight: 400, + resizable: false, + contents: [{ + id: 'font-awesome', + label: 'Add icon', + elements: [ + { + type: 'hbox', + widths: ['15%', '15%', '15%', '50%'], + children: [ + { + type: 'button', label: 'Light (' + faLight.length + ')', + onClick: function () { + document.getElementById('ckeditor-fa-icons').innerHTML = faIcons(faLight, 'l'); + } + }, + { + type: 'button', label: 'Regular (' + faRegular.length + ')', + onClick: function () { + document.getElementById('ckeditor-fa-icons').innerHTML = faIcons(faRegular, 'r'); + } + }, + { + type: 'button', label: 'Solid (' + faSolid.length + ')', + onClick: function () { + document.getElementById('ckeditor-fa-icons').innerHTML = faIcons(faSolid, 's'); + } + }, + { + type: 'button', label: 'Brands (' + faBrands.length + ')', + onClick: function () { + document.getElementById('ckeditor-fa-icons').innerHTML = faIcons(faBrands, 'b'); + } + } + ] + }, + { + type: 'hbox', + widths: ['20%', '20%', '20%', '20%', '20%'], + children: [ + { + type: 'select', + id: 'size', + className: 'faSelect', + label: 'Size', + items: [['No'], ['fa-xs'], ['fa-sm'], ['fa-lg'], ['fa-2x'], ['fa-3x'], ['fa-5x'], ['fa-7x'], ['fa-10x']], + 'default': 'No', + commit: function (widget) { + widget.setData('size', this.getValue()); + } + }, + { + type: 'select', + id: 'fixwidth', + className: 'faSelect', + label: 'Fixed Width', + items: [['No'], ['Yes']], + 'default': 'No', + commit: function (widget) { + widget.setData('fixwidth', this.getValue()); + } + }, + { + type: 'select', + id: 'bordered', + className: 'faSelect', + label: 'Bordered', + items: [['No'], ['Yes']], + 'default': 'No', + commit: function (widget) { + widget.setData('bordered', this.getValue()); + } + }, + { + type: 'select', + id: 'spinning', + className: 'faSelect', + label: 'Spinning', + items: [['No'], ['Yes']], + 'default': 'No', + commit: function (widget) { + widget.setData('spinning', this.getValue()); + } + }, + { + type: 'select', + id: 'rotating', + className: 'faSelect', + label: 'Rotat', + items: [['No'], ['fa-rotate-90'], ['fa-rotate-180'], ['fa-rotate-270'], ['fa-flip-horizontal'], ['fa-flip-vertical'], ['fa-flip-both']], + 'default': 'No', + commit: function (widget) { + widget.setData('rotating', this.getValue()); + } + } + ] + }, + { + type: 'hbox', + widths: ['50%','50%'], + children: [ + { + type: 'text', + id: 'faSearch', + className: 'faSearch', + onKeyUp: function (e) { + searchIcon(e.sender.$.value); + }, + onLoad: function () { + this.getInputElement().$.placeholder = 'Search'; + TYPO3.jQuery('#' + this.domId).css({ + 'margin': 0 + }).find("label").remove(); + } + }, + { + type: 'text', + id: 'faicon', + className: 'fontawesomeClass', + style: 'display:none', + validate: CKEDITOR.dialog.validate.notEmpty("Select fontAwesome icon"), + onLoad: function () { + this.getInputElement().setAttribute('readOnly', true); + }, + setup: function (widget) { + this.setValue(widget.data.class != '' ? widget.data.class : ''); + }, + commit: function (widget) { + widget.setData('class', this.getValue()); + } + } + ] + }, + {type: 'html', html: '
' + faIcons(faLight, 'l') + '
'} + ] + }], + onOk: function () { + clear(); + var dialog = this, icon = editor.document.createElement('i'), cls = ''; + if (dialog.getValueOf('font-awesome', 'fixwidth') != "No") cls += ' fa-fw'; + if (dialog.getValueOf('font-awesome', 'bordered') != "No") cls += ' fa-border'; + if (dialog.getValueOf('font-awesome', 'spinning') != "No") cls += ' fa-spin'; + if (dialog.getValueOf('font-awesome', 'rotating') != "No") cls += ' ' + dialog.getValueOf('font-awesome', 'rotating'); + if (dialog.getValueOf('font-awesome', 'size') != "No") cls += ' ' + dialog.getValueOf('font-awesome', 'size'); + icon.setAttribute('class', dialog.getValueOf('font-awesome', 'faicon') + cls); + icon.setAttribute('aria-hidden', 'true'); + // https://github.com/DirkPersky/typo3-rte-ckeditor-fontawesome/issues/3 + icon.setText(' '); + // add icon to CKE + editor.insertElement(icon); + }, + onCancel: function () { + clear(); + } + }; + }); +})(TYPO3.jQuery); + diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/icons/fa32x32.png b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/icons/fa32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb805d3568be31a89caacd6e7e2bcc484954a5f GIT binary patch literal 3022 zcmV;<3o-PGP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O?QzmRl(dh5xgPUIGHdupGv7dI!Dy{`6dSDvm3s ze>{jquCS3cI{u}j={ z|8buQ&#U#o7#ZVj@o`=>LGjZI`7z3?bQDSm2#Uv+`*y4&chB(8Hk=5|Hi(Kcn>$oYEgO{)~2*QLn zuE*Uczx%utbj~yr3EJOn#l1o>7{sg??VDWyBInK{y$pPRo<9JKki;%Cb49`K$4$gg z`Npm2E}$bDl`-93F6%=8CgN=6G7>?+XNf9Vd4IToO4v4d4gnzBnJRXEf&YEsp#MXNULIp&l#=UlS+VlT0z zq9vD7YH6j{SX0%SYpJ!i+Fc7R;;Y(nE3LNHdgsuNFCL)oO;^n57aJH-FKM% zh}_RnlMmDY%w3ozHr-KUxs8Hj}>AYKds2ptSF{5hpy$T`Ezw}4k@;FfCO zEHT7DFl`BX3PZC$O0tno)hk z{n*q)<;VM99G!pj#h(k>nOVdvVa&b9h&|)Kc$Z4j@Ka&#Pu%7qD1ypq8pf`b$?Bu; z8rGblpXB>qc~pQLxg}7YI}$NY&dY#S^{aRUt+{*NGp|K-n4(37GCy7?mM?W{hY{dc zOCKxiDh=OYfXF)bk~xo*vRy3&RQrhw?ws8lb~>HyvU|}Xx+L@JVPgBn;@hwxF>ay+O&Y zb)P&uXwBS*7UCyY7}phwq#3t@?n2gk)4a?Lb8*0HvRaD0 z&4bX}c3mF7>`k%pO;~Rd=g!wPoxzbV6yf__Zii7R3RPKqCNz5t%5Y4z zPTyzhdlQaUj#z2=TGHO7!b_sxn6_L>iX?Bs$XZ15o!a*MKxi?33@%&p7+LfX!DOyL z=*0ubvyhkbb|!gZ6U?-{<`T(kb5N#)nCuk`a%O>5;=+mAq4J59IDIosPA~0znc2N% z=T(6*YFqZb8T*5f@*l^T3Gl~e!K#Jpc)xTPH-JZ(Fdm8xoR*9<9_ORi*Xn%M#{G^u zpKt4aL9K@=FI}Egac}GLq>6i6m#5Lat;>@t?rmM3RB>GJn04<=%;v%)=MkI6QE(uFkcA~`uc3`H z{l7u!e$&Ms>bo~wOj{w3+c!y{Ep=YLMiflM&+vTpyr~y?H&aj` zQx?UI(Dt%r9ctPbwC^Gc#SIhpKOS0=f;O3h^5#)l05)d&xc4lJYApwQdW(gd7ok3};Ak4B|t zv?8LWUg=xZ{(^w7Qf5OUTC-fwq0Y3wQ1oWy=@A%2)tNTE%Iw8l_JA6;?h_9rb<=!+ ztzb_hbF%74mhUltz)pwuRVjAdo3t_3d?(9&UGM$c_(Bj3*1#+KF{)PS%j(aaxHIJo zW)#Q|MX5z`{~i`KG@j}@{c6X}bFf~<`kK2*-snaCSX1-A3yOz!6T-WH0k&%xf&JNy zX#fBLglR)VP)S2WAaHVTW@&6?004NLeUUv#!$2IxUsFp(D-L!LQOHo8EQpFYY88r5 zA=C=3I+$GgAv9@7Qd}Gb*Mfr|i&X~~XI&j!1wrrw#L>w~(M3x9Us7lh+gyR`}v<6crE0fb&0=VKTM?*fgQ<9r`GPU8d! zJ_A>J%U`Jj)1Rc*T3YM~=-mb`u3MV22VCv|{ZEE$%B~coDHIC8`x$*x4(PiDx>mj3 zn)^6?05a57>IOJC1V)OKz2@`o&i3B^J=5&(2M;N7e@)c5zyJUM24YJ`L;wH)0002_ zL%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2j&F_4H-5CoJu4B00N>(L_t(o z!|j*LPZLoThrgN5bYNPbMG6!IN(~SR7$niekQgPRAu(~`#;r@^AK-$u|AQ-|d)Gb^ zg9#fWAvOj?c@~gIsoEC$pk+F9T?nX@w>&g(R+Bj=bH6j^-1ECv5<&=$&}5F-{w;vd zLu0&p-9t3GaA*M1Y7Y#LjC1wQ1B8I~RzFW3Jw#Cy05Z!Klk+KNzGX-(Wl?N0r7o4~ zG98c0zN3XQhQ-iSf`)1*n))kmW%XfXY=YHx?0!E^BpN4S*y$Zwu9Y2@2&n3fq|i=Hc|IPOh9n&@ zz}HxYu4mI5`kKo%I+|DHxIjf(C&#g5_U{3412f;T;H85#-F*>M?PP1WH799uE^0Xc01BM_j_ QlmGw#07*qoM6N<$f?w>bdH?_b literal 0 HcmV?d00001 diff --git a/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/plugin.js b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/plugin.js new file mode 100644 index 0000000..f77364d --- /dev/null +++ b/Resources/Public/JavaScript/Plugins/ckeditor_fa6pro/plugin.js @@ -0,0 +1,47 @@ +(function ($) { + var CKEDITOR_FA = { + version: '11.5.5' + }; + + CKEDITOR.dtd.$removeEmpty.span = 0; + CKEDITOR.dtd.$removeEmpty.em = 0; + CKEDITOR.dtd.$removeEmpty.i = 0; + + CKEDITOR.plugins.add('ckeditor_fa', { + icons: 'ckeditor-fa', + init: function (editor) { + editor.addCommand('ckeditor_fa', new CKEDITOR.dialogCommand('ckeditorFaDialog', { + allowedContent: 'i(!fa-*)', + })); + editor.ui.addButton('ckeditor_fa', { + label: 'Insert FontAwesome icon', + command: 'ckeditor_fa', + toolbar: 'insert', + icon: this.path + 'icons/fa32x32.png', + }); + CKEDITOR.dialog.add('ckeditorFaDialog', this.path + 'dialogs/ckeditor-fa.js?v=' + CKEDITOR_FA.version); + CKEDITOR.document.appendStyleSheet(this.path + 'css/ckeditor-fa.css?v=' + CKEDITOR_FA.version); + // add styles + if(typeof editor.config.fontAwesome != 'undefined'){ + editor.config.fontAwesome.map(function (css_file) { + editor.addContentsCss(css_file); + loadCSS(css_file); + }); + } + } + }); + + /** + * Load Fontawesome + * @param href + */ + function loadCSS(href) { + var headID = document.getElementsByTagName('head')[0]; + var cssLink = document.createElement("link"); + cssLink.rel = "stylesheet"; + cssLink.type = "text/css"; + cssLink.href = href; + // add to dom + headID.appendChild(cssLink); + } +})(TYPO3.jQuery); \ No newline at end of file diff --git a/ext_emconf.php b/ext_emconf.php index a4771ab..18caa76 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -9,7 +9,7 @@ 'clearCacheOnLoad' => 0, 'author' => 'Dirk Persky', 'author_email' => 'd.persky@gutenberghaus.de', - 'version' => '11.5.4', + 'version' => '11.5.5', 'constraints' => [ 'depends' => [ 'typo3' => '10.4.0-11.5.99', diff --git a/ext_localconf.php b/ext_localconf.php index 8bc4fc6..191be4e 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -15,5 +15,6 @@ $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['default'] = 'EXT:rte_ckeditor_fontawesome/Configuration/RTE/DefaultFA6.yaml'; $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['full'] = 'EXT:rte_ckeditor_fontawesome/Configuration/RTE/FullFA6.yaml'; $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['minimal'] = 'EXT:rte_ckeditor_fontawesome/Configuration/RTE/MinimalFA6.yaml'; + $GLOBALS['TYPO3_CONF_VARS']['RTE']['Presets']['fa6pro'] = 'EXT:rte_ckeditor_fontawesome/Configuration/RTE/PluginFa6Pro.yaml'; })(); From fcb8c9cd38300f63dad08998942754b1479afc0b Mon Sep 17 00:00:00 2001 From: aschmutt Date: Sat, 7 May 2022 17:55:10 +0200 Subject: [PATCH 3/3] Fontawesome 6 Pro --- README.md | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8ae60c1..92522eb 100644 --- a/README.md +++ b/README.md @@ -80,9 +80,10 @@ plugin.tx_ckeditor_fontawesome.css = "LINK TO FONTAWESOME PRO" ## Fontawesome 6 Pro -Usually you have a RTE config in your sitepacke, if not create a new file. +Usually you have a RTE config in your sitepackage, if not create a new file. * add PluginFA6Pro.yaml to imports -* add fontawesome URL or path to CSS (do not forget to add webfonts path as defined in css) +* add fontAwesome URL or path to CSS +* if icons are still missing: check webfonts path in the css and change if necessary ``` imports: @@ -97,6 +98,30 @@ editor: - "EXT:sitepackage/Resources/Public/Fonts/Css/fa6pro-all.css" ``` +## TCA Selector for Fontawesome Icons + +You can use the Fontawesome SVG folder as source for a TCA Select field. +Change "fileFolder" to the path where your SVGs are located: + +``` +'icon' => [ + 'exclude' => 1, + 'label' => 'Icon', + 'config' => [ + 'type' => 'select', + 'renderType' => 'selectMultipleSideBySide', + 'fileFolder' => 'EXT:sitepackage/Resources/Public/Icons/Fontawesome/', + 'fileFolder_extList' => 'svg', + 'fileFolder_recursions' => 0, + 'size' => 5, + 'minitems' => 0, + 'maxitems' => 1, + ], +], +``` + +With npm installation, the SVGs are located in `node_modules/@fortawesome/fontawesome-pro/svgs/light` + ## ToDo: - Add FA-Icon in Content Headline Definition.