jamespot-react-components 1.3.90 → 1.3.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jamespot-react-components.cjs +1050 -947
- package/dist/jamespot-react-components.js +50820 -50504
- package/dist/src/components/Editors/components/EditorInput.d.ts +5 -1
- package/dist/src/components/JRCIcon/JRCIconMigration.stories.d.ts +5 -0
- package/dist/src/components/JRCIconSelectionModal/JRCIconSelectionModal.stories.d.ts +6 -0
- package/dist/src/components/JRCIframeVideo/JRCIframeVideo.d.ts +62 -0
- package/dist/src/components/JRCIframeVideo/JRCIframeVideo.stories.d.ts +10 -0
- package/dist/src/components/Widgets/JRCWidgetYoutube/JRCWidgetYoutubeEditor.d.ts +12 -0
- package/dist/src/components/index.d.ts +2 -0
- package/dist/src/styles/theme.d.ts +7 -0
- package/dist/src/translation/lang.json.d.ts +8 -1
- package/dist/src/utils/index.d.ts +2 -0
- package/dist/src/utils/utils.icons.d.ts +2 -2
- package/dist/src/utils/utils.icons.generated.d.ts +1 -0
- package/dist/src/utils/utils.iframeVideo.d.ts +48 -0
- package/package.json +3 -3
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
import { RegisterOptions } from 'react-hook-form';
|
|
1
2
|
import { FormControls } from '../../Form/Input/Common/useFormControls';
|
|
2
|
-
export declare const EditorInput: ({ label, placeholder, initialValue, width, rules, description, isMultiline, onChange, }: {
|
|
3
|
+
export declare const EditorInput: ({ label, placeholder, initialValue, width, rules, rulesValidate, description, isMultiline, onChange, }: {
|
|
3
4
|
label: string;
|
|
4
5
|
placeholder?: string;
|
|
5
6
|
initialValue: string | undefined;
|
|
6
7
|
autoFocus?: boolean;
|
|
7
8
|
width?: string;
|
|
8
9
|
rules?: FormControls;
|
|
10
|
+
rulesValidate?: RegisterOptions<{
|
|
11
|
+
text: string;
|
|
12
|
+
}>["validate"];
|
|
9
13
|
description?: string;
|
|
10
14
|
isMultiline?: boolean;
|
|
11
15
|
onChange: (text: string) => void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { JRCIconSelectionModal } from './JRCIconSelectionModal';
|
|
3
|
+
declare const meta: Meta<typeof JRCIconSelectionModal>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof JRCIconSelectionModal>;
|
|
6
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { DataCy } from '../../types/dataAttributes';
|
|
2
|
+
/**
|
|
3
|
+
* Provider detection / URL transformation contract.
|
|
4
|
+
*
|
|
5
|
+
* The component is agnostic of which providers exist — the consumer wires the
|
|
6
|
+
* helpers it needs. This keeps `JRCIframeVideo` in `jamespot-react-components`
|
|
7
|
+
* free of any backend convention (e.g. Studio's widgetType vocabulary).
|
|
8
|
+
*/
|
|
9
|
+
export interface JRCIframeVideoHelpers {
|
|
10
|
+
parse: (url: string) => {
|
|
11
|
+
provider: string;
|
|
12
|
+
videoId: string;
|
|
13
|
+
} | null;
|
|
14
|
+
toEmbedUrl: (parsed: {
|
|
15
|
+
provider: string;
|
|
16
|
+
videoId: string;
|
|
17
|
+
}) => string;
|
|
18
|
+
getThumbnailUrl: (parsed: {
|
|
19
|
+
provider: string;
|
|
20
|
+
videoId: string;
|
|
21
|
+
}, publicUrl: string, options?: {
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
}) => Promise<string | null>;
|
|
24
|
+
}
|
|
25
|
+
export interface JRCIframeVideoProps extends DataCy {
|
|
26
|
+
/** Public video URL provided by the user. */
|
|
27
|
+
url: string;
|
|
28
|
+
/**
|
|
29
|
+
* - 'view' : thumbnail + click-to-load iframe inline (detail view)
|
|
30
|
+
* - 'compact' : thumbnail + click opens the source URL in a new tab
|
|
31
|
+
*/
|
|
32
|
+
mode: 'view' | 'compact';
|
|
33
|
+
/** Aria label / iframe title — should describe the video content. */
|
|
34
|
+
title?: string;
|
|
35
|
+
/** Provider helpers injected by the consumer. */
|
|
36
|
+
helpers: JRCIframeVideoHelpers;
|
|
37
|
+
/** Corner radius in px. Defaults: 8 in view mode, 6 in compact. Pass 0 for square corners. */
|
|
38
|
+
borderRadius?: number;
|
|
39
|
+
/**
|
|
40
|
+
* View mode only — load the iframe immediately instead of waiting for a user click
|
|
41
|
+
* on the thumbnail. Disables the RGPD-friendly two-step gate. No effect in compact mode.
|
|
42
|
+
*/
|
|
43
|
+
autoload?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Background color of the view container, visible while the iframe is loading. Defaults to the
|
|
46
|
+
* theme's `grey1`. Pass `'transparent'` to let the parent's background show through (useful
|
|
47
|
+
* when the parent already paints a black backdrop, matching the provider's player chrome).
|
|
48
|
+
*/
|
|
49
|
+
loadingBackground?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Renders an embedded video with a click-to-load thumbnail (RGPD-friendly: the
|
|
53
|
+
* iframe is mounted only when the user clicks, never automatically).
|
|
54
|
+
*
|
|
55
|
+
* - `mode='view'` : the iframe replaces the thumbnail in place
|
|
56
|
+
* - `mode='compact'` : the click opens the source URL in a new tab
|
|
57
|
+
*
|
|
58
|
+
* If the URL is unsafe (`javascript:` etc.) the component renders an error
|
|
59
|
+
* banner. If the URL is safe but no provider matches, it renders a degraded
|
|
60
|
+
* `<a target="_blank">` fallback.
|
|
61
|
+
*/
|
|
62
|
+
export declare const JRCIframeVideo: import('react').NamedExoticComponent<JRCIframeVideoProps>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { JRCIframeVideo } from './JRCIframeVideo';
|
|
3
|
+
declare const meta: Meta<typeof JRCIframeVideo>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof JRCIframeVideo>;
|
|
6
|
+
export declare const View: Story;
|
|
7
|
+
export declare const Compact: Story;
|
|
8
|
+
export declare const UnsupportedProvider: Story;
|
|
9
|
+
export declare const EmptyUrl: Story;
|
|
10
|
+
export declare const UnsafeUrl: Story;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WidgetYoutubeContent } from 'jamespot-user-api';
|
|
2
|
+
export interface JRCWidgetYoutubeEditorProps {
|
|
3
|
+
uniqid: string;
|
|
4
|
+
content: WidgetYoutubeContent;
|
|
5
|
+
onChangeContent: (uniqid: string, content: WidgetYoutubeContent) => void;
|
|
6
|
+
/**
|
|
7
|
+
* Optional URL validator. Returning false marks the field as invalid (empty values are not validated).
|
|
8
|
+
* Injected by the consumer so this component stays agnostic of provider detection logic.
|
|
9
|
+
*/
|
|
10
|
+
validateUrl?: (url: string) => boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const JRCWidgetYoutubeEditor: ({ uniqid, content, onChangeContent, validateUrl, }: JRCWidgetYoutubeEditorProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -98,6 +98,7 @@ export { JRCGrid } from './JRCGrid/JRCGrid';
|
|
|
98
98
|
export { JRCHtml } from './JRCHtml/JRCHtml';
|
|
99
99
|
export { JRCIcon } from './JRCIcon/JRCIcon';
|
|
100
100
|
export { JRCIconButton } from './JRCIconButton/JRCIconButton';
|
|
101
|
+
export { JRCIframeVideo } from './JRCIframeVideo/JRCIframeVideo';
|
|
101
102
|
export { JRCImg } from './JRCImg/JRCImg';
|
|
102
103
|
export { JRCList } from './JRCList/JRCList';
|
|
103
104
|
export { JRCLoader } from './JRCLoader/JRCLoader';
|
|
@@ -198,4 +199,5 @@ export { JRCWidgetUserProfile } from './Widgets/JRCWidgetUserProfile/JRCWidgetUs
|
|
|
198
199
|
export { JRCWidgetUserProfileEditor } from './Widgets/JRCWidgetUserProfile/JRCWidgetUserProfileEditor';
|
|
199
200
|
export { JRCWidgetWelcome } from './Widgets/JRCWidgetWelcome/JRCWidgetWelcome';
|
|
200
201
|
export { JRCWidgetWelcomeEditor } from './Widgets/JRCWidgetWelcome/JRCWidgetWelcomeEditor';
|
|
202
|
+
export { JRCWidgetYoutubeEditor } from './Widgets/JRCWidgetYoutube/JRCWidgetYoutubeEditor';
|
|
201
203
|
export { WidgetCalendarEditor } from './Widgets/WidgetCalendar/WidgetCalendarEditor';
|
|
@@ -55,6 +55,13 @@ export type ThemeType = {
|
|
|
55
55
|
xl: number;
|
|
56
56
|
};
|
|
57
57
|
size: ThemeSize;
|
|
58
|
+
iconSize: {
|
|
59
|
+
xs: number;
|
|
60
|
+
sm: number;
|
|
61
|
+
md: number;
|
|
62
|
+
lg: number;
|
|
63
|
+
xl: number;
|
|
64
|
+
};
|
|
58
65
|
};
|
|
59
66
|
export declare function getColor(theme: ThemeType, color: string): string;
|
|
60
67
|
declare const Theme: ITheme;
|
|
@@ -213,6 +213,9 @@ declare const _default: {
|
|
|
213
213
|
"GLOBAL_Form_SendAlert": "Send the alert email to those who have requested it",
|
|
214
214
|
"GLOBAL_Go_To_Content": "Go to content",
|
|
215
215
|
"GLOBAL_Groups": "Groups",
|
|
216
|
+
"GLOBAL_IframeVideo_InvalidUrl": "Invalid or unsafe URL",
|
|
217
|
+
"GLOBAL_IframeVideo_OpenInNewTab": "Open video in a new tab",
|
|
218
|
+
"GLOBAL_IframeVideo_Play": "Play video",
|
|
216
219
|
"GLOBAL_Image": "Image",
|
|
217
220
|
"GLOBAL_Import": "Import",
|
|
218
221
|
"GLOBAL_Insert": "Insert",
|
|
@@ -460,7 +463,11 @@ declare const _default: {
|
|
|
460
463
|
"WIDGET_User_Profil": "Profil utilisateur",
|
|
461
464
|
"WIDGET_Welcome_Default_Message": "Bienvenue",
|
|
462
465
|
"WIDGET_Welcome_Linebreak_Label": "Saut de ligne (après le message)",
|
|
463
|
-
"WIDGET_Welcome": "Message d'accueil"
|
|
466
|
+
"WIDGET_Welcome": "Message d'accueil",
|
|
467
|
+
"WIDGET_Youtube_Url": "Video URL",
|
|
468
|
+
"WIDGET_Youtube": "Video",
|
|
469
|
+
"WIDGET_Youtube_Text": "Embed a YouTube video",
|
|
470
|
+
"WIDGET_Youtube_InvalidUrl_FieldError": "Enter a valid YouTube URL"
|
|
464
471
|
}
|
|
465
472
|
}
|
|
466
473
|
;
|
|
@@ -4,6 +4,7 @@ import * as document from './utils.document';
|
|
|
4
4
|
import * as file from './utils.files';
|
|
5
5
|
import * as form from './utils.form';
|
|
6
6
|
import * as icons from './utils.icons';
|
|
7
|
+
import * as iframeVideo from './utils.iframeVideo';
|
|
7
8
|
import * as image from './utils.image';
|
|
8
9
|
import * as misc from './utils.misc';
|
|
9
10
|
import * as object from './utils.object';
|
|
@@ -17,6 +18,7 @@ export declare const Utils: {
|
|
|
17
18
|
file: typeof file;
|
|
18
19
|
form: typeof form;
|
|
19
20
|
icons: typeof icons;
|
|
21
|
+
iframeVideo: typeof iframeVideo;
|
|
20
22
|
image: typeof image;
|
|
21
23
|
misc: typeof misc;
|
|
22
24
|
object: typeof object;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const list: string[];
|
|
2
|
-
export declare
|
|
1
|
+
export declare const list: readonly ["2fa", "500px", "accessibility", "accessible-icon", "actionplan", "activities", "address-book", "address-book-o", "address-card", "address-card-o", "admin-advanced", "admin-cog", "adn", "affinity", "album-img", "alert", "align-center", "align-center-o", "align-justify", "align-justify-o", "align-left", "align-left-o", "align-right", "align-right-o", "amazon", "anchor", "android", "angellist", "angle-down", "angle-left", "angle-right", "angle-up", "angles-down", "angles-left", "angles-right", "angles-up", "animated-meeting", "animations", "appearin", "appel", "apple", "application", "applications", "approuved", "arrow-down", "arrow-down-1-9", "arrow-down-9-1", "arrow-down-a-z", "arrow-down-short-wide", "arrow-down-wide-short", "arrow-down-z-a", "arrow-left", "arrow-pointer", "arrow-right", "arrow-rotate-left", "arrow-rotate-right", "arrow-up", "arrow-up-right-and-arrow-down-left", "arrow-up-to-line", "arrows-rotate", "arrows-up-down", "arrows-up-down-left-right", "article", "articletranslation", "articlewidget", "asei", "assetreservation", "asterisk", "at", "at-o", "audio-description", "backward", "backward-fast", "backward-step", "badges", "bag-shopping", "ban", "bandcamp", "barcode", "bars", "bars-progress", "basket-shopping", "bath", "battery-empty", "battery-full", "battery-half", "battery-quarter", "battery-three-quarters", "bed", "beer-mug-empty", "behance", "bell", "bell-o", "bell-ring-o", "bell-slash", "bell-slash-o", "bicycle", "binoculars", "bitbucket", "black-tie", "block-question", "block-question-o", "bluetooth", "bluetooth-b", "board", "boardcard", "boardlist", "boardreport", "bold", "bold-o", "bolt", "bolt-o", "bomb", "book", "book-bookmark", "bookmark", "bookmark-o", "bookmarks", "books", "bot", "box-archive", "braille", "briefcase", "btc", "bug", "building", "building-columns", "building-o", "bullhorn", "bullhorn-o", "bullseye", "bullseye-arrow", "bullseye-arrow-o", "bus", "business-directory", "businessdirectory", "businessmanagement", "buysellads", "cake-candles", "calculator", "calendar", "calendar-check", "calendar-check-o", "calendar-circle-user", "calendar-circle-user-o", "calendar-days", "calendar-days-lines", "calendar-lines-o", "calendar-minus-o", "calendar-o", "calendar-plus-o", "calendar-range-o", "calendar-xmark-o", "call-for-tender", "camera", "camera-o", "camera-retro", "camera-web", "car", "caret-down", "caret-left", "caret-right", "caret-up", "cart-arrow-down", "cart-plus", "cart-shopping", "cas", "cc-amex", "cc-diners-club", "cc-discover", "cc-jcb", "cc-mastercard", "cc-paypal", "cc-stripe", "cc-visa", "certificate", "cgu", "chart-area", "chart-bar", "chart-column", "chart-kanban", "chart-line", "chart-pie", "check", "check-o", "chevron-down", "chevron-down-o", "chevron-left", "chevron-left-o", "chevron-left-thick", "chevron-right", "chevron-right-o", "chevron-up", "chevron-up-o", "child", "chrome", "cicle-play-filled", "circle", "circle-3-scale", "circle-3-uniform", "circle-arrow-down", "circle-arrow-left", "circle-arrow-right", "circle-arrow-up", "circle-check", "circle-check-o", "circle-chevron-down", "circle-chevron-left", "circle-chevron-right", "circle-chevron-up", "circle-dot-o", "circle-down-o", "circle-exclamation", "circle-half-stroke", "circle-info", "circle-left-o", "circle-minus", "circle-notch", "circle-o", "circle-pause", "circle-pause-o", "circle-play", "circle-play-o", "circle-plus", "circle-question", "circle-question-o", "circle-right-o", "circle-stop", "circle-stop-o", "circle-up-o", "circle-user", "circle-user-o", "circle-xmark", "circle-xmark-o", "client", "clipboard-question", "clock", "clock-o", "clock-rotate-left", "clone", "clone-o", "closed-captioning-o", "cloud", "cloud-arrow-down", "cloud-arrow-up", "cloud-o", "code", "code-branch", "code-o", "codepen", "codiepie", "cog", "cogs", "comment", "comment-bubble-lines", "comment-captions-o", "comment-dots", "comment-dots-o", "comment-o", "comments", "comments-o", "communication-campaign", "community", "community-hook", "compass", "compass-o", "congratulate", "connectdevelop", "contact", "contact-card", "contacts", "contao", "content-report", "copy", "copy-o", "copyright", "copyright-o", "countdown", "creation", "creative-commons", "credit-card-o", "crisis", "crop", "crosshairs", "css3", "cube", "cubes", "custom", "custom-cgu", "dashcube", "database", "date-poll", "delicious", "desk", "desktop", "detectup", "deviantart", "diagram-venn", "diffgroup", "digg", "discover", "discovery", "document", "dollar-sign", "down-left-and-up-right-to-center", "down-long", "download", "dpo-applications", "dpo-awaiting-attention", "dpo-compliance", "dpo-compliance-todo", "dpo-dpia", "dpo-material", "dpo-process", "dpo-process-book", "dpo-process-security", "dpo-request", "dpo-rgpd-data-breach", "dpo-sub-process", "dpo-subcontractor", "dpolaunch", "draftio", "dribbble", "dropbox", "droplet", "drupal", "dw", "e-reputation", "ear-deaf", "ear-listen", "earth-americas", "earth-europe", "earth-europe-o", "edge", "edit", "eject", "ellipsis", "ellipsis-vertical", "embed", "empire", "envelope", "envelope-o", "envelope-open-o", "envira", "eraser", "etsy", "eudonet", "euro-sign", "event", "exclamation", "expeditedssl", "external-apps", "extra-bot", "eye", "eye-dropper", "eye-low-vision", "eye-o", "eye-slash", "eye-slash-o", "face-confused-o", "face-downcast-sweat-o", "face-frown-o", "face-grimace-o", "face-grin-beam", "face-grin-beam-sweat", "face-grin-hearts-o", "face-grin-squint", "face-grin-squint-tears", "face-grin-squint-tears-o", "face-grin-stars-o", "face-grin-tears", "face-grin-tears-o", "face-grin-wink-o", "face-kiss-wink-heart-o", "face-laugh-wink-o", "face-meh-o", "face-party-o", "face-smile", "face-smile-hearts", "face-smile-o", "face-smile-wink", "face-surprise", "face-tongue-money", "face-weary", "facebook", "facebook-f", "facture", "faq", "faqitem", "favorite", "favs", "favs-o", "fax", "file", "file-arrow-down", "file-arrow-down-o", "file-audio-o", "file-code-o", "file-excel-o", "file-image-o", "file-integrity", "file-lines", "file-lines-o", "file-lock", "file-o", "file-pdf-o", "file-pen", "file-powerpoint-o", "file-sync", "file-user", "file-user-o", "file-video-o", "file-word-o", "file-zipper-o", "filebank", "film", "filter", "filter-list", "fire", "fire-extinguisher", "firefox", "first-order", "flag", "flag-checkered", "flag-o", "flash-widgets", "flask", "flask-o", "flickr", "floppy-disk-o", "flux", "folder", "folder-closed", "folder-o", "folder-open", "folder-open-o", "folders", "font", "font-awesome", "fonticons", "formquestion", "fort-awesome", "forumbee", "forward", "forward-fast", "forward-step", "foursquare", "franceconnect", "free-code-camp", "fs-intranet", "funding", "futbol-o", "gallery-thumbnails", "gamepad", "gauge-high", "gavel", "gear", "gears", "gem-o", "genderless", "get-pocket", "gg", "gg-circle", "gift", "git", "github", "github-alt", "gitlab", "glide", "glide-g", "goal", "google", "google-2", "google-drive", "google-play", "google-plus", "google-plus-g", "google-wallet", "graduation-cap", "gratipay", "grav", "grid-2", "grip-dots", "grip-dots-o", "grip-dots-vertical", "grip-dots-vertical-o", "group", "hacker-news", "hammer", "hand", "hand-back-fist-o", "hand-holding-heart-o", "hand-lizard-o", "hand-o", "hand-peace-o", "hand-point-down-o", "hand-point-left-o", "hand-point-right-o", "hand-point-up-o", "hand-pointer-o", "hand-scissors-o", "hand-spock-o", "hand-wave-o", "hands", "hands-asl-interpreting", "hands-clapping-o", "handshake-o", "handshake-simple-o", "hard-drive-o", "hashtag", "head-side-brain", "head-side-brain-o", "head-side-gear", "head-side-gear-o", "heading", "headphones", "headset", "headset-o", "heart", "heart-o", "heart-pulse", "helpcenter", "hospital-o", "hotel", "hourglass", "hourglass-clock", "hourglass-clock-o", "hourglass-end", "hourglass-half", "hourglass-start", "house", "house-o", "houzz", "html5", "html5-device", "https", "i-cursor", "iasa", "id-badge", "id-badge-o", "id-card", "id-card-o", "idea", "identity-injection", "iframe", "image-o", "images", "images-o", "imdb", "inbox", "inbox-enveloppe", "inbox-o", "indent", "indian-rupee-sign", "indicateurs", "indicator", "industry", "info", "info-bubble", "infusion", "innovation-lab", "instagram", "instant-messenger", "internet-explorer", "intranet", "intranet-manage", "intranet-page", "invitations", "iop-content", "iop-last-online", "iop-register", "iop-signin", "iop-title", "ioxhost", "italic", "italic-o", "iziconf", "j-jamespot", "j-table", "j-table-column-plus-after", "j-table-column-plus-before", "j-table-column-remove", "j-table-merge-cells", "j-table-remove", "j-table-row-plus-after", "j-table-row-plus-before", "j-table-row-remove", "j-table-split-cell", "j-tripadvisor", "jamesbot", "jamespot", "jamespot-point", "jet-fighter", "jitsi", "jland", "job", "job-board", "joomla", "jsfiddle", "key", "key-o", "keyboard-o", "km", "lab", "language", "laptop", "lastfm", "lasuite-docs", "lasuite-fichers", "lasuite-france-transferts", "lasuite-grist", "lasuite-messagerie", "lasuite-resana", "lasuite-tchap", "lasuite-visio", "layout-fluid", "ldap", "lead", "leaf", "leanpub", "lecko", "left-long", "left-right", "lemon-o", "libreoffice", "life-ring", "lightbulb-o", "like", "link", "link-o", "link-simple-diagonal", "link-slash", "linkedin", "linkedin-in", "linode", "linux", "list", "list-check", "list-ol", "list-ol-o", "list-ul", "list-ul-o", "list-ul-round", "location-arrow", "location-dot", "location-dot-round", "lock", "magic-pad", "magic-wand", "magicpad", "magnet", "magnifying-glass", "magnifying-glass-minus", "magnifying-glass-minus-o", "magnifying-glass-plus", "magnifying-glass-plus-o", "mail2rse", "map", "map-o", "map-pin", "markdown", "mars", "mars-and-venus", "mars-double", "mars-stroke", "mars-stroke-right", "mars-stroke-up", "martini-glass-empty", "maxcdn", "maximize", "media-library", "medium", "meeting", "meetup", "megaphone-o", "membogo", "memo-pad-o", "mention", "menu", "mercury", "message-exclamation", "message-exclamation-o", "messages", "messages-o", "microchip", "microphone", "microphone-slash", "minus", "minus-o", "mixcloud", "mobile-check", "mobile-screen-button", "modx", "money-bill-1", "moon-o", "motorcycle", "mug-saucer", "music", "music-o", "network-wired", "neuter", "news", "newsflash", "newspaper", "newspaper-o", "note-sticky", "note-sticky-o", "notification-center", "notifications", "oauth", "object-group", "object-group-o", "object-ungroup", "object-ungroup-o", "odisae", "odnoklassniki", "offer", "office365", "online-edit", "opencart", "openid", "opera", "optin-monster", "orgcharts", "outdent", "package", "pagelines", "paintbrush", "paper-plane", "paper-plane-o", "paperclip", "paperclip-o", "paragraph", "partner", "paste", "pause", "paw", "paypal", "pen", "pen-o", "pen-short-end", "pen-to-square-o", "pencil", "pencil-o", "percent", "perfsuser", "person", "person-dress", "person-walking", "person-walking-with-cane", "personal-data", "phone", "phone-volume", "picture", "pied-piper", "pied-piper-alt", "pied-piper-pp", "pinterest", "pinterest-p", "plane", "plateform", "play", "plug", "plus", "podcast", "poll", "power-off", "print", "print-o", "process", "product-hunt", "project", "proxem", "publication", "publish", "puzzle-piece", "puzzle-piece-left-top", "qq", "qrcode", "question", "question-double", "quizz", "quora", "quote-left", "quote-right", "radar", "radar-o", "ravelry", "rebel", "recommandation", "rectangle-list-o", "rectangle-vertical-history", "rectangle-vertical-history-o", "rectangle-xmark", "rectangle-xmark-o", "recycle", "reddit", "reddit-alien", "registered", "registered-o", "regular-image-user-circle-play", "renren", "reply", "reply-all", "report", "reporting", "reservation", "retweet", "rgpdapplication", "rgpdcompliance", "rgpdcompliancetodo", "rgpdcrisis", "rgpdmaterial", "rgpdprocess", "rgpdregistry", "rgpdrequest", "rgpdsecurity", "rgpdsubcontractor", "right-from-bracket", "right-left", "right-long", "right-to-bracket", "road", "rocket", "rss", "rss-thick", "ruble-sign", "rupee-sign", "safari", "sale-point", "saml", "saml2", "scale-balanced", "scissors", "scribd", "secure-document", "sellcast", "sellsy", "server", "share", "share-from-square", "share-nodes", "share-nodes-o", "shared-content", "shekel-sign", "shield", "shield-check", "shield-check-o", "shield-o", "shielded-lock", "ship", "shirtsinbulk", "shop-simple", "shortcut", "shower", "shuffle", "shuttle-space", "sign-post", "signal", "signs-post", "simplybuilt", "site", "sitemap", "skyatlas", "skype", "slack", "slider-content", "sliders", "slideshare", "smartpage-code", "smartpage-form", "smartpage-group", "smartpage-image", "smartpage-imagetext", "smartpage-inscription", "smartpage-lien", "smartpage-list", "smartpage-news", "smartpage-parameters", "smartpage-slider", "smartpage-soundcloud", "smartpage-texte", "smartpage-titre", "smartpage-user", "smartpage-youtube", "snapchat", "snowflake-o", "social", "sort", "sort-down", "sort-up", "soundcloud", "sparkles", "sparkles-o", "spinner", "spoon", "spotify", "square", "square-behance", "square-caret-down-o", "square-caret-left-o", "square-caret-right-o", "square-caret-up-o", "square-check", "square-check-o", "square-envelope", "square-facebook", "square-git", "square-github", "square-google-plus", "square-h", "square-lastfm", "square-list", "square-minus", "square-minus-o", "square-o", "square-odnoklassniki", "square-pen", "square-phone", "square-pinterest", "square-plus", "square-plus-o", "square-poll-vertical", "square-poll-vertical-o", "square-reddit", "square-rss", "square-share-nodes", "square-snapchat", "square-steam", "square-tumblr", "square-twitter", "square-up-right", "square-viadeo", "square-vimeo", "square-xing", "square-xmark", "square-youtube", "stack-exchange", "stack-overflow", "star", "star-half", "star-half-stroke", "star-half-stroke-o", "star-o", "steam", "sterling-sign", "stethoscope", "stop", "stopwatch-20", "stopwatch-20-o", "street-view", "strikethrough", "strikethrough-o", "studio", "stumbleupon", "stumbleupon-circle", "subscript", "suggest", "suitcase", "suitcase-medical", "sun-o", "superpowers", "superscript", "support", "survey-date", "surveydate", "table", "table-cells", "table-cells-large", "table-columns", "table-group", "table-list", "tablet-screen-button", "tag", "tags", "targetinfo", "task", "tasks", "taxi", "taxonomy", "teamwork", "telegram", "temperature-empty", "temperature-full", "temperature-half", "temperature-quarter", "temperature-three-quarters", "tencent-weibo", "tender", "terminal", "text", "text-height", "text-indicator", "text-width", "themeisle", "thumbs-down", "thumbs-down-o", "thumbs-up", "thumbs-up-o", "thumbs-up-o", "thumbs-up-on", "thumbs-up-round", "thumbtack", "ticket", "todo", "toggle-off", "toggle-on", "tour", "trademark", "train", "train-subway", "transgender", "trash", "trash-can", "trash-can-o", "tree", "trello", "triangle-exclamation", "trophy", "truck", "truck-medical", "trustelem", "tty", "tumblr", "turkish-lira-sign", "turn-down", "turn-up", "tv", "twitch", "twitter", "umbrella", "underline", "underline-o", "universal-access", "unlock", "up-down", "up-down-left-right", "up-long", "up-right-and-down-left-from-center", "up-right-from-square", "upload", "url", "usb", "user", "user-doctor", "user-group", "user-group-o", "user-group-simple-o", "user-minus", "user-o", "user-plus", "user-secret", "user-shield-o", "user-simple", "user-xmark", "users", "users-viewfinder", "utensils", "venus", "venus-double", "venus-mars", "verifier", "viacoin", "viadeo", "video", "video-simple", "video-simple-test", "vimeo", "vimeo-v", "vine", "visio-connect", "visioconference", "vk", "volume-high", "volume-low", "volume-off", "vulcain", "vulcain-customer", "vulcain-facturation", "vulcain-ptf", "vulcain-sales", "vulcain-technical", "w", "wand-magic-sparkles", "web-awesome-o", "webhooks", "wedoc", "weibo", "weixin", "whatsapp", "wheelchair", "wheelchair-move", "wifi", "wiki", "wikipedia-w", "window", "window-maximize", "window-maximize-o", "window-minimize", "window-restore", "window-restore-o", "windows", "won-sign", "wordpress", "workgroup", "wpbeginner", "wpexplorer", "wpforms", "wrench", "x-twitter", "xing", "xmark", "xmark-large", "xmark-large-o", "y-combinator", "yahoo", "yelp", "yen-sign", "yoast", "youtube", "zapier", "zoho"];
|
|
2
|
+
export declare function normalizeFontSpotIcon(name: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ICONS_LIST: readonly ["2fa", "500px", "accessibility", "accessible-icon", "actionplan", "activities", "address-book", "address-book-o", "address-card", "address-card-o", "admin-advanced", "admin-cog", "adn", "affinity", "album-img", "alert", "align-center", "align-center-o", "align-justify", "align-justify-o", "align-left", "align-left-o", "align-right", "align-right-o", "amazon", "anchor", "android", "angellist", "angle-down", "angle-left", "angle-right", "angle-up", "angles-down", "angles-left", "angles-right", "angles-up", "animated-meeting", "animations", "appearin", "appel", "apple", "application", "applications", "approuved", "arrow-down", "arrow-down-1-9", "arrow-down-9-1", "arrow-down-a-z", "arrow-down-short-wide", "arrow-down-wide-short", "arrow-down-z-a", "arrow-left", "arrow-pointer", "arrow-right", "arrow-rotate-left", "arrow-rotate-right", "arrow-up", "arrow-up-right-and-arrow-down-left", "arrow-up-to-line", "arrows-rotate", "arrows-up-down", "arrows-up-down-left-right", "article", "articletranslation", "articlewidget", "asei", "assetreservation", "asterisk", "at", "at-o", "audio-description", "backward", "backward-fast", "backward-step", "badges", "bag-shopping", "ban", "bandcamp", "barcode", "bars", "bars-progress", "basket-shopping", "bath", "battery-empty", "battery-full", "battery-half", "battery-quarter", "battery-three-quarters", "bed", "beer-mug-empty", "behance", "bell", "bell-o", "bell-ring-o", "bell-slash", "bell-slash-o", "bicycle", "binoculars", "bitbucket", "black-tie", "block-question", "block-question-o", "bluetooth", "bluetooth-b", "board", "boardcard", "boardlist", "boardreport", "bold", "bold-o", "bolt", "bolt-o", "bomb", "book", "book-bookmark", "bookmark", "bookmark-o", "bookmarks", "books", "bot", "box-archive", "braille", "briefcase", "btc", "bug", "building", "building-columns", "building-o", "bullhorn", "bullhorn-o", "bullseye", "bullseye-arrow", "bullseye-arrow-o", "bus", "business-directory", "businessdirectory", "businessmanagement", "buysellads", "cake-candles", "calculator", "calendar", "calendar-check", "calendar-check-o", "calendar-circle-user", "calendar-circle-user-o", "calendar-days", "calendar-days-lines", "calendar-lines-o", "calendar-minus-o", "calendar-o", "calendar-plus-o", "calendar-range-o", "calendar-xmark-o", "call-for-tender", "camera", "camera-o", "camera-retro", "camera-web", "car", "caret-down", "caret-left", "caret-right", "caret-up", "cart-arrow-down", "cart-plus", "cart-shopping", "cas", "cc-amex", "cc-diners-club", "cc-discover", "cc-jcb", "cc-mastercard", "cc-paypal", "cc-stripe", "cc-visa", "certificate", "cgu", "chart-area", "chart-bar", "chart-column", "chart-kanban", "chart-line", "chart-pie", "check", "check-o", "chevron-down", "chevron-down-o", "chevron-left", "chevron-left-o", "chevron-left-thick", "chevron-right", "chevron-right-o", "chevron-up", "chevron-up-o", "child", "chrome", "cicle-play-filled", "circle", "circle-3-scale", "circle-3-uniform", "circle-arrow-down", "circle-arrow-left", "circle-arrow-right", "circle-arrow-up", "circle-check", "circle-check-o", "circle-chevron-down", "circle-chevron-left", "circle-chevron-right", "circle-chevron-up", "circle-dot-o", "circle-down-o", "circle-exclamation", "circle-half-stroke", "circle-info", "circle-left-o", "circle-minus", "circle-notch", "circle-o", "circle-pause", "circle-pause-o", "circle-play", "circle-play-o", "circle-plus", "circle-question", "circle-question-o", "circle-right-o", "circle-stop", "circle-stop-o", "circle-up-o", "circle-user", "circle-user-o", "circle-xmark", "circle-xmark-o", "client", "clipboard-question", "clock", "clock-o", "clock-rotate-left", "clone", "clone-o", "closed-captioning-o", "cloud", "cloud-arrow-down", "cloud-arrow-up", "cloud-o", "code", "code-branch", "code-o", "codepen", "codiepie", "cog", "cogs", "comment", "comment-bubble-lines", "comment-captions-o", "comment-dots", "comment-dots-o", "comment-o", "comments", "comments-o", "communication-campaign", "community", "community-hook", "compass", "compass-o", "congratulate", "connectdevelop", "contact", "contact-card", "contacts", "contao", "content-report", "copy", "copy-o", "copyright", "copyright-o", "countdown", "creation", "creative-commons", "credit-card-o", "crisis", "crop", "crosshairs", "css3", "cube", "cubes", "custom", "custom-cgu", "dashcube", "database", "date-poll", "delicious", "desk", "desktop", "detectup", "deviantart", "diagram-venn", "diffgroup", "digg", "discover", "discovery", "document", "dollar-sign", "down-left-and-up-right-to-center", "down-long", "download", "dpo-applications", "dpo-awaiting-attention", "dpo-compliance", "dpo-compliance-todo", "dpo-dpia", "dpo-material", "dpo-process", "dpo-process-book", "dpo-process-security", "dpo-request", "dpo-rgpd-data-breach", "dpo-sub-process", "dpo-subcontractor", "dpolaunch", "draftio", "dribbble", "dropbox", "droplet", "drupal", "dw", "e-reputation", "ear-deaf", "ear-listen", "earth-americas", "earth-europe", "earth-europe-o", "edge", "edit", "eject", "ellipsis", "ellipsis-vertical", "embed", "empire", "envelope", "envelope-o", "envelope-open-o", "envira", "eraser", "etsy", "eudonet", "euro-sign", "event", "exclamation", "expeditedssl", "external-apps", "extra-bot", "eye", "eye-dropper", "eye-low-vision", "eye-o", "eye-slash", "eye-slash-o", "face-confused-o", "face-downcast-sweat-o", "face-frown-o", "face-grimace-o", "face-grin-beam", "face-grin-beam-sweat", "face-grin-hearts-o", "face-grin-squint", "face-grin-squint-tears", "face-grin-squint-tears-o", "face-grin-stars-o", "face-grin-tears", "face-grin-tears-o", "face-grin-wink-o", "face-kiss-wink-heart-o", "face-laugh-wink-o", "face-meh-o", "face-party-o", "face-smile", "face-smile-hearts", "face-smile-o", "face-smile-wink", "face-surprise", "face-tongue-money", "face-weary", "facebook", "facebook-f", "facture", "faq", "faqitem", "favorite", "favs", "favs-o", "fax", "file", "file-arrow-down", "file-arrow-down-o", "file-audio-o", "file-code-o", "file-excel-o", "file-image-o", "file-integrity", "file-lines", "file-lines-o", "file-lock", "file-o", "file-pdf-o", "file-pen", "file-powerpoint-o", "file-sync", "file-user", "file-user-o", "file-video-o", "file-word-o", "file-zipper-o", "filebank", "film", "filter", "filter-list", "fire", "fire-extinguisher", "firefox", "first-order", "flag", "flag-checkered", "flag-o", "flash-widgets", "flask", "flask-o", "flickr", "floppy-disk-o", "flux", "folder", "folder-closed", "folder-o", "folder-open", "folder-open-o", "folders", "font", "font-awesome", "fonticons", "formquestion", "fort-awesome", "forumbee", "forward", "forward-fast", "forward-step", "foursquare", "franceconnect", "free-code-camp", "fs-intranet", "funding", "futbol-o", "gallery-thumbnails", "gamepad", "gauge-high", "gavel", "gear", "gears", "gem-o", "genderless", "get-pocket", "gg", "gg-circle", "gift", "git", "github", "github-alt", "gitlab", "glide", "glide-g", "goal", "google", "google-2", "google-drive", "google-play", "google-plus", "google-plus-g", "google-wallet", "graduation-cap", "gratipay", "grav", "grid-2", "grip-dots", "grip-dots-o", "grip-dots-vertical", "grip-dots-vertical-o", "group", "hacker-news", "hammer", "hand", "hand-back-fist-o", "hand-holding-heart-o", "hand-lizard-o", "hand-o", "hand-peace-o", "hand-point-down-o", "hand-point-left-o", "hand-point-right-o", "hand-point-up-o", "hand-pointer-o", "hand-scissors-o", "hand-spock-o", "hand-wave-o", "hands", "hands-asl-interpreting", "hands-clapping-o", "handshake-o", "handshake-simple-o", "hard-drive-o", "hashtag", "head-side-brain", "head-side-brain-o", "head-side-gear", "head-side-gear-o", "heading", "headphones", "headset", "headset-o", "heart", "heart-o", "heart-pulse", "helpcenter", "hospital-o", "hotel", "hourglass", "hourglass-clock", "hourglass-clock-o", "hourglass-end", "hourglass-half", "hourglass-start", "house", "house-o", "houzz", "html5", "html5-device", "https", "i-cursor", "iasa", "id-badge", "id-badge-o", "id-card", "id-card-o", "idea", "identity-injection", "iframe", "image-o", "images", "images-o", "imdb", "inbox", "inbox-enveloppe", "inbox-o", "indent", "indian-rupee-sign", "indicateurs", "indicator", "industry", "info", "info-bubble", "infusion", "innovation-lab", "instagram", "instant-messenger", "internet-explorer", "intranet", "intranet-manage", "intranet-page", "invitations", "iop-content", "iop-last-online", "iop-register", "iop-signin", "iop-title", "ioxhost", "italic", "italic-o", "iziconf", "j-jamespot", "j-table", "j-table-column-plus-after", "j-table-column-plus-before", "j-table-column-remove", "j-table-merge-cells", "j-table-remove", "j-table-row-plus-after", "j-table-row-plus-before", "j-table-row-remove", "j-table-split-cell", "j-tripadvisor", "jamesbot", "jamespot", "jamespot-point", "jet-fighter", "jitsi", "jland", "job", "job-board", "joomla", "jsfiddle", "key", "key-o", "keyboard-o", "km", "lab", "language", "laptop", "lastfm", "lasuite-docs", "lasuite-fichers", "lasuite-france-transferts", "lasuite-grist", "lasuite-messagerie", "lasuite-resana", "lasuite-tchap", "lasuite-visio", "layout-fluid", "ldap", "lead", "leaf", "leanpub", "lecko", "left-long", "left-right", "lemon-o", "libreoffice", "life-ring", "lightbulb-o", "like", "link", "link-o", "link-simple-diagonal", "link-slash", "linkedin", "linkedin-in", "linode", "linux", "list", "list-check", "list-ol", "list-ol-o", "list-ul", "list-ul-o", "list-ul-round", "location-arrow", "location-dot", "location-dot-round", "lock", "magic-pad", "magic-wand", "magicpad", "magnet", "magnifying-glass", "magnifying-glass-minus", "magnifying-glass-minus-o", "magnifying-glass-plus", "magnifying-glass-plus-o", "mail2rse", "map", "map-o", "map-pin", "markdown", "mars", "mars-and-venus", "mars-double", "mars-stroke", "mars-stroke-right", "mars-stroke-up", "martini-glass-empty", "maxcdn", "maximize", "media-library", "medium", "meeting", "meetup", "megaphone-o", "membogo", "memo-pad-o", "mention", "menu", "mercury", "message-exclamation", "message-exclamation-o", "messages", "messages-o", "microchip", "microphone", "microphone-slash", "minus", "minus-o", "mixcloud", "mobile-check", "mobile-screen-button", "modx", "money-bill-1", "moon-o", "motorcycle", "mug-saucer", "music", "music-o", "network-wired", "neuter", "news", "newsflash", "newspaper", "newspaper-o", "note-sticky", "note-sticky-o", "notification-center", "notifications", "oauth", "object-group", "object-group-o", "object-ungroup", "object-ungroup-o", "odisae", "odnoklassniki", "offer", "office365", "online-edit", "opencart", "openid", "opera", "optin-monster", "orgcharts", "outdent", "package", "pagelines", "paintbrush", "paper-plane", "paper-plane-o", "paperclip", "paperclip-o", "paragraph", "partner", "paste", "pause", "paw", "paypal", "pen", "pen-o", "pen-short-end", "pen-to-square-o", "pencil", "pencil-o", "percent", "perfsuser", "person", "person-dress", "person-walking", "person-walking-with-cane", "personal-data", "phone", "phone-volume", "picture", "pied-piper", "pied-piper-alt", "pied-piper-pp", "pinterest", "pinterest-p", "plane", "plateform", "play", "plug", "plus", "podcast", "poll", "power-off", "print", "print-o", "process", "product-hunt", "project", "proxem", "publication", "publish", "puzzle-piece", "puzzle-piece-left-top", "qq", "qrcode", "question", "question-double", "quizz", "quora", "quote-left", "quote-right", "radar", "radar-o", "ravelry", "rebel", "recommandation", "rectangle-list-o", "rectangle-vertical-history", "rectangle-vertical-history-o", "rectangle-xmark", "rectangle-xmark-o", "recycle", "reddit", "reddit-alien", "registered", "registered-o", "regular-image-user-circle-play", "renren", "reply", "reply-all", "report", "reporting", "reservation", "retweet", "rgpdapplication", "rgpdcompliance", "rgpdcompliancetodo", "rgpdcrisis", "rgpdmaterial", "rgpdprocess", "rgpdregistry", "rgpdrequest", "rgpdsecurity", "rgpdsubcontractor", "right-from-bracket", "right-left", "right-long", "right-to-bracket", "road", "rocket", "rss", "rss-thick", "ruble-sign", "rupee-sign", "safari", "sale-point", "saml", "saml2", "scale-balanced", "scissors", "scribd", "secure-document", "sellcast", "sellsy", "server", "share", "share-from-square", "share-nodes", "share-nodes-o", "shared-content", "shekel-sign", "shield", "shield-check", "shield-check-o", "shield-o", "shielded-lock", "ship", "shirtsinbulk", "shop-simple", "shortcut", "shower", "shuffle", "shuttle-space", "sign-post", "signal", "signs-post", "simplybuilt", "site", "sitemap", "skyatlas", "skype", "slack", "slider-content", "sliders", "slideshare", "smartpage-code", "smartpage-form", "smartpage-group", "smartpage-image", "smartpage-imagetext", "smartpage-inscription", "smartpage-lien", "smartpage-list", "smartpage-news", "smartpage-parameters", "smartpage-slider", "smartpage-soundcloud", "smartpage-texte", "smartpage-titre", "smartpage-user", "smartpage-youtube", "snapchat", "snowflake-o", "social", "sort", "sort-down", "sort-up", "soundcloud", "sparkles", "sparkles-o", "spinner", "spoon", "spotify", "square", "square-behance", "square-caret-down-o", "square-caret-left-o", "square-caret-right-o", "square-caret-up-o", "square-check", "square-check-o", "square-envelope", "square-facebook", "square-git", "square-github", "square-google-plus", "square-h", "square-lastfm", "square-list", "square-minus", "square-minus-o", "square-o", "square-odnoklassniki", "square-pen", "square-phone", "square-pinterest", "square-plus", "square-plus-o", "square-poll-vertical", "square-poll-vertical-o", "square-reddit", "square-rss", "square-share-nodes", "square-snapchat", "square-steam", "square-tumblr", "square-twitter", "square-up-right", "square-viadeo", "square-vimeo", "square-xing", "square-xmark", "square-youtube", "stack-exchange", "stack-overflow", "star", "star-half", "star-half-stroke", "star-half-stroke-o", "star-o", "steam", "sterling-sign", "stethoscope", "stop", "stopwatch-20", "stopwatch-20-o", "street-view", "strikethrough", "strikethrough-o", "studio", "stumbleupon", "stumbleupon-circle", "subscript", "suggest", "suitcase", "suitcase-medical", "sun-o", "superpowers", "superscript", "support", "survey-date", "surveydate", "table", "table-cells", "table-cells-large", "table-columns", "table-group", "table-list", "tablet-screen-button", "tag", "tags", "targetinfo", "task", "tasks", "taxi", "taxonomy", "teamwork", "telegram", "temperature-empty", "temperature-full", "temperature-half", "temperature-quarter", "temperature-three-quarters", "tencent-weibo", "tender", "terminal", "text", "text-height", "text-indicator", "text-width", "themeisle", "thumbs-down", "thumbs-down-o", "thumbs-up", "thumbs-up-o", "thumbs-up-o", "thumbs-up-on", "thumbs-up-round", "thumbtack", "ticket", "todo", "toggle-off", "toggle-on", "tour", "trademark", "train", "train-subway", "transgender", "trash", "trash-can", "trash-can-o", "tree", "trello", "triangle-exclamation", "trophy", "truck", "truck-medical", "trustelem", "tty", "tumblr", "turkish-lira-sign", "turn-down", "turn-up", "tv", "twitch", "twitter", "umbrella", "underline", "underline-o", "universal-access", "unlock", "up-down", "up-down-left-right", "up-long", "up-right-and-down-left-from-center", "up-right-from-square", "upload", "url", "usb", "user", "user-doctor", "user-group", "user-group-o", "user-group-simple-o", "user-minus", "user-o", "user-plus", "user-secret", "user-shield-o", "user-simple", "user-xmark", "users", "users-viewfinder", "utensils", "venus", "venus-double", "venus-mars", "verifier", "viacoin", "viadeo", "video", "video-simple", "video-simple-test", "vimeo", "vimeo-v", "vine", "visio-connect", "visioconference", "vk", "volume-high", "volume-low", "volume-off", "vulcain", "vulcain-customer", "vulcain-facturation", "vulcain-ptf", "vulcain-sales", "vulcain-technical", "w", "wand-magic-sparkles", "web-awesome-o", "webhooks", "wedoc", "weibo", "weixin", "whatsapp", "wheelchair", "wheelchair-move", "wifi", "wiki", "wikipedia-w", "window", "window-maximize", "window-maximize-o", "window-minimize", "window-restore", "window-restore-o", "windows", "won-sign", "wordpress", "workgroup", "wpbeginner", "wpexplorer", "wpforms", "wrench", "x-twitter", "xing", "xmark", "xmark-large", "xmark-large-o", "y-combinator", "yahoo", "yelp", "yen-sign", "yoast", "youtube", "zapier", "zoho"];
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iframeVideo — provider detection and URL transformation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Centralises the regex / embed URL / thumbnail logic for the supported video
|
|
5
|
+
* providers. Pure functions, no React, no side effects beyond the thumbnail
|
|
6
|
+
* fetch (which calls public oEmbed endpoints from the providers themselves —
|
|
7
|
+
* no Jamespot backend involvement).
|
|
8
|
+
*
|
|
9
|
+
* Currently consumed: YouTube only (widget-youtube). The Vimeo / Dailymotion /
|
|
10
|
+
* Loom branches are intentional infra for upcoming widgets — do not remove
|
|
11
|
+
* without checking the corresponding ticket in the tracker.
|
|
12
|
+
*/
|
|
13
|
+
export type Provider = 'youtube' | 'vimeo' | 'dailymotion' | 'loom';
|
|
14
|
+
export interface ParsedProvider {
|
|
15
|
+
provider: Provider;
|
|
16
|
+
videoId: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Type guard used by consumers to narrow a string-typed provider (e.g. coming
|
|
20
|
+
* from `JRCIframeVideoHelpers.toEmbedUrl` whose param is intentionally wide)
|
|
21
|
+
* back to the narrow `Provider` union before calling `toEmbedUrl` / `getThumbnailUrl`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isKnownProvider(value: string): value is Provider;
|
|
24
|
+
/**
|
|
25
|
+
* Validate that the given string is an http/https URL with no dangerous scheme.
|
|
26
|
+
* Used as a defense-in-depth check before rendering anything iframe-related.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isSafeUrl(input: unknown): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Detect the video provider for an URL and extract the video id.
|
|
31
|
+
* Returns null if no supported provider matches.
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseProvider(url: string): ParsedProvider | null;
|
|
34
|
+
/**
|
|
35
|
+
* Build the embed iframe URL for a given provider + videoId.
|
|
36
|
+
* Always returns an https URL.
|
|
37
|
+
*/
|
|
38
|
+
export declare function toEmbedUrl(parsed: ParsedProvider): string;
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a thumbnail URL for a given provider + videoId.
|
|
41
|
+
*
|
|
42
|
+
* - YouTube: predictable static URL (no fetch needed).
|
|
43
|
+
* - Vimeo / Dailymotion: public oEmbed endpoint (no auth, cacheable by browser).
|
|
44
|
+
* - Loom: no public thumbnail API known — returns null, caller falls back.
|
|
45
|
+
*/
|
|
46
|
+
export declare function getThumbnailUrl(parsed: ParsedProvider, publicUrl: string, options?: {
|
|
47
|
+
signal?: AbortSignal;
|
|
48
|
+
}): Promise<string | null>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamespot-react-components",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.92",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/jamespot-react-components.cjs",
|
|
6
6
|
"module": "dist/jamespot-react-components.js",
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"eslint-plugin-storybook": "10.3.6",
|
|
60
60
|
"globals": "^16.5.0",
|
|
61
61
|
"html2canvas": "^1.4.1",
|
|
62
|
-
"jamespot-front-business": "^1.3.
|
|
63
|
-
"jamespot-user-api": "^1.3.
|
|
62
|
+
"jamespot-front-business": "^1.3.92",
|
|
63
|
+
"jamespot-user-api": "^1.3.92",
|
|
64
64
|
"jsdom": "^26.1.0",
|
|
65
65
|
"knip": "^5.88.1",
|
|
66
66
|
"lint-staged": "^16.4.0",
|