@fluencypassdevs/cycle 1.2.0 → 1.3.0
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/{chunk-NDAABHM5.js → chunk-C4C5MWPO.js} +5 -5
- package/dist/{chunk-NDAABHM5.js.map → chunk-C4C5MWPO.js.map} +1 -1
- package/dist/{chunk-D4QCYBCD.js → chunk-JPEDYOV7.js} +10 -3
- package/dist/chunk-JPEDYOV7.js.map +1 -0
- package/dist/icons/index.d.ts +11 -1
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/ui/alert.js +1 -1
- package/dist/ui/audio-player.js +1 -1
- package/dist/ui/like-dislike.js +1 -1
- package/dist/ui/sonner.js +1 -1
- package/dist/ui/spinner.js +1 -1
- package/dist/ui/video-player.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-D4QCYBCD.js.map +0 -1
|
@@ -43,7 +43,7 @@ function MuteControl() {
|
|
|
43
43
|
return /* @__PURE__ */ jsx(ControlTooltip, { label, children: /* @__PURE__ */ jsx(MuteButton, { className: controlBtnClass, children: /* @__PURE__ */ jsx(CycleIcon, { icon: Icon, size: "sm", decorative: true, className: filledIconClass }) }) });
|
|
44
44
|
}
|
|
45
45
|
function VolumeControl() {
|
|
46
|
-
return /* @__PURE__ */ jsxs(VolumeSlider.Root, { className: "group relative
|
|
46
|
+
return /* @__PURE__ */ jsxs(VolumeSlider.Root, { className: "group relative hidden h-9 w-20 shrink-0 cursor-pointer touch-none select-none items-center outline-none @[480px]:inline-flex", children: [
|
|
47
47
|
/* @__PURE__ */ jsx(VolumeSlider.Track, { className: "relative h-[4px] w-full rounded-full bg-white/30", children: /* @__PURE__ */ jsx(VolumeSlider.TrackFill, { className: "absolute h-full w-[var(--slider-fill)] rounded-full bg-white" }) }),
|
|
48
48
|
/* @__PURE__ */ jsx(VolumeSlider.Thumb, { className: "absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100" })
|
|
49
49
|
] });
|
|
@@ -89,7 +89,7 @@ function SeekBar({ thumbnails, chapters }) {
|
|
|
89
89
|
] });
|
|
90
90
|
}
|
|
91
91
|
function TimeDisplay() {
|
|
92
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-xs font-mono text-white/80 tabular-nums", children: [
|
|
92
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1 text-xs font-mono text-white/80 tabular-nums whitespace-nowrap", children: [
|
|
93
93
|
/* @__PURE__ */ jsx(Time, { type: "current" }),
|
|
94
94
|
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
95
95
|
/* @__PURE__ */ jsx(Time, { type: "duration" })
|
|
@@ -502,7 +502,7 @@ var VideoPlayer = React.forwardRef(
|
|
|
502
502
|
/* @__PURE__ */ jsxs(Controls.Root, { className: "absolute inset-0 z-20 flex h-full w-full flex-col bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 transition-opacity duration-200 group-data-[started]:group-hover:opacity-100 group-data-[paused]:opacity-100", children: [
|
|
503
503
|
/* @__PURE__ */ jsx("div", { className: "flex-1" }),
|
|
504
504
|
/* @__PURE__ */ jsx(Controls.Group, { className: "flex w-full items-center px-3", children: /* @__PURE__ */ jsx(SeekBar, { thumbnails, chapters: !!chapters }) }),
|
|
505
|
-
/* @__PURE__ */ jsxs(Controls.Group, { className: "flex w-full items-center gap-1 px-2 pb-2", children: [
|
|
505
|
+
/* @__PURE__ */ jsxs(Controls.Group, { className: "@container flex w-full items-center gap-1 px-2 pb-2", children: [
|
|
506
506
|
/* @__PURE__ */ jsx(PlayControl, {}),
|
|
507
507
|
/* @__PURE__ */ jsx(SeekBackwardControl, {}),
|
|
508
508
|
/* @__PURE__ */ jsx(SeekForwardControl, {}),
|
|
@@ -526,5 +526,5 @@ var VideoPlayer = React.forwardRef(
|
|
|
526
526
|
);
|
|
527
527
|
|
|
528
528
|
export { VideoPlayer };
|
|
529
|
-
//# sourceMappingURL=chunk-
|
|
530
|
-
//# sourceMappingURL=chunk-
|
|
529
|
+
//# sourceMappingURL=chunk-C4C5MWPO.js.map
|
|
530
|
+
//# sourceMappingURL=chunk-C4C5MWPO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/video-player.tsx"],"names":["forwardRef","CaptionsIcon","VideoPlayer","_a"],"mappings":"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","file":"chunk-NDAABHM5.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n MediaPlayer,\n MediaProvider,\n Poster,\n Controls,\n Gesture,\n TimeSlider,\n VolumeSlider,\n Time,\n PlayButton,\n MuteButton,\n FullscreenButton,\n CaptionButton,\n PIPButton,\n SeekButton,\n Captions,\n Spinner,\n Track,\n Tooltip,\n Menu,\n LiveButton,\n MediaAnnouncer,\n useMediaState,\n useMediaRemote,\n useVideoQualityOptions,\n useCaptionOptions,\n type MediaPlayerInstance,\n} from \"@vidstack/react\"\n// Desktop-only controls use the above. Mobile uses DefaultVideoLayout below.\nimport {\n DefaultVideoLayout,\n defaultLayoutIcons,\n} from \"@vidstack/react/player/layouts/default\"\nimport \"@vidstack/react/player/styles/base.css\"\nimport \"@vidstack/react/player/styles/default/theme.css\"\nimport \"@vidstack/react/player/styles/default/layouts/video.css\"\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Volume1,\n Maximize,\n Minimize,\n Captions as CaptionsIcon,\n CaptionsOff,\n PictureInPicture2,\n RotateCcw,\n RotateCw,\n Gauge,\n Settings,\n Check,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Types ─── */\n\nexport interface CaptionTrack {\n /** URL do arquivo VTT de legenda */\n src: string\n /** Codigo do idioma (BCP 47, ex: \"pt-BR\", \"en\", \"es\") */\n language: string\n /** Label exibido no seletor de legendas (ex: \"Portugues\", \"English\") */\n label: string\n /** Se true, esta faixa sera ativada por padrao */\n default?: boolean\n}\n\nexport interface VideoPlayerRef {\n play(): void\n pause(): void\n readonly currentTime: number\n readonly duration: number\n}\n\nexport interface VideoPlayerProps {\n /** URL do video (mp4, webm, m3u8 para HLS) */\n src: string\n /** URL da imagem de poster */\n poster?: string\n /** Alt text do poster */\n posterAlt?: string\n /** URL do arquivo de thumbnails (VTT sprite sheet) */\n thumbnails?: string\n /** URL do arquivo VTT de chapters (marcadores de seção no timeline) */\n chapters?: string\n /** Faixas de legenda/subtitles (VTT). Suporta multiplos idiomas. */\n captions?: CaptionTrack[]\n /** Exibir spinner durante buffering (default: true) */\n showBuffering?: boolean\n /** Habilitar anuncios de acessibilidade para screen readers (default: true) */\n announcer?: boolean\n /** Iniciar automaticamente */\n autoPlay?: boolean\n /** Iniciar mutado */\n muted?: boolean\n /** Repetir ao terminar */\n loop?: boolean\n /** Tempo inicial em segundos — usado para retomar de onde o usuario parou (resume position) */\n startTime?: number\n /** Callback com progresso do video (currentTime em segundos, duration em segundos) */\n onTimeUpdate?: (currentTime: number, duration: number) => void\n /** Callback disparado quando o video termina */\n onEnded?: () => void\n className?: string\n}\n\n/* ─── Shared styles ─── */\n\nconst controlBtnClass =\n \"group inline-flex size-9 cursor-pointer items-center justify-center rounded-md text-white outline-none transition-colors hover:bg-white/20 focus-visible:ring-2 focus-visible:ring-white/50\"\n\nconst tooltipClass =\n \"z-50 rounded bg-black/90 px-2 py-1 text-xs font-medium text-white shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\"\n\n/** Wraps a control button with a Vidstack tooltip. Desktop only (no hover on mobile). */\nfunction ControlTooltip({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content className={tooltipClass} placement=\"top\">\n {label}\n </Tooltip.Content>\n </Tooltip.Root>\n )\n}\n\n/** Play, Pause e Volume usam icones filled (solid) no player — igual YouTube */\nconst filledIconClass = \"text-white fill-current !stroke-transparent\"\n\n/* ─── Sub-components (controles customizados) ─── */\n\nfunction PlayOverlay() {\n const isPaused = useMediaState(\"paused\")\n const hasStarted = useMediaState(\"started\")\n\n if (!isPaused && hasStarted) return null\n\n return (\n <PlayButton className=\"absolute inset-0 z-10 flex cursor-pointer items-center justify-center bg-black/30 transition-opacity\">\n <div className=\"flex size-16 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition-transform hover:scale-110\">\n <CycleIcon icon={Play} size=\"lg\" decorative className={cn(filledIconClass, \"ml-1\")} />\n </div>\n </PlayButton>\n )\n}\n\nfunction PlayControl() {\n const isPaused = useMediaState(\"paused\")\n return (\n <ControlTooltip label={isPaused ? \"Reproduzir\" : \"Pausar\"}>\n <PlayButton className={controlBtnClass}>\n {isPaused ? (\n <CycleIcon icon={Play} size=\"sm\" decorative className={filledIconClass} />\n ) : (\n <CycleIcon icon={Pause} size=\"sm\" decorative className={filledIconClass} />\n )}\n </PlayButton>\n </ControlTooltip>\n )\n}\n\nfunction SeekBackwardControl() {\n return (\n <ControlTooltip label=\"Retroceder 10s\">\n <SeekButton className={controlBtnClass} seconds={-10}>\n <CycleIcon icon={RotateCcw} size=\"sm\" decorative className=\"text-white\" />\n </SeekButton>\n </ControlTooltip>\n )\n}\n\nfunction SeekForwardControl() {\n return (\n <ControlTooltip label=\"Avançar 10s\">\n <SeekButton className={controlBtnClass} seconds={10}>\n <CycleIcon icon={RotateCw} size=\"sm\" decorative className=\"text-white\" />\n </SeekButton>\n </ControlTooltip>\n )\n}\n\nfunction MuteControl() {\n const volume = useMediaState(\"volume\")\n const isMuted = useMediaState(\"muted\")\n\n const Icon = isMuted || volume === 0 ? VolumeX : volume < 0.5 ? Volume1 : Volume2\n const label = isMuted || volume === 0 ? \"Ativar som\" : \"Silenciar\"\n\n return (\n <ControlTooltip label={label}>\n <MuteButton className={controlBtnClass}>\n <CycleIcon icon={Icon} size=\"sm\" decorative className={filledIconClass} />\n </MuteButton>\n </ControlTooltip>\n )\n}\n\nfunction VolumeControl() {\n return (\n <VolumeSlider.Root className=\"group relative inline-flex h-9 w-20 cursor-pointer touch-none select-none items-center outline-none\">\n <VolumeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-white/30\">\n <VolumeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-white\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100\" />\n </VolumeSlider.Root>\n )\n}\n\nfunction BufferingIndicator() {\n return (\n <div className=\"pointer-events-none absolute inset-0 z-[35] flex items-center justify-center media-buffering:opacity-100 media-can-play:opacity-0 opacity-0 transition-opacity duration-300\">\n <Spinner.Root className=\"size-16 text-white\" size={64}>\n <Spinner.Track className=\"opacity-25\" width={4} />\n <Spinner.TrackFill className=\"opacity-75\" width={4} />\n </Spinner.Root>\n </div>\n )\n}\n\nfunction SeekBar({ thumbnails, chapters }: { thumbnails?: string; chapters?: boolean }) {\n const trackContent = (\n <>\n <TimeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-white/30\">\n <TimeSlider.Progress className=\"absolute h-full w-[var(--slider-progress)] rounded-full bg-white/50\" />\n <TimeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-white\" />\n </TimeSlider.Track>\n </>\n )\n\n return (\n <TimeSlider.Root className=\"group relative inline-flex h-9 w-full cursor-pointer touch-none select-none items-center outline-none\">\n {chapters ? (\n <TimeSlider.Chapters className=\"relative flex w-full items-center\">\n {(cues, forwardRef) =>\n cues.map((cue) => (\n <div\n className=\"relative flex h-full w-full items-center last:mr-0 mr-0.5\"\n key={cue.startTime}\n ref={forwardRef}\n >\n {trackContent}\n </div>\n ))\n }\n </TimeSlider.Chapters>\n ) : (\n trackContent\n )}\n\n <TimeSlider.Thumb className=\"absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100\" />\n\n {/* Thumbnail preview on hover */}\n {thumbnails && (\n <TimeSlider.Preview className=\"pointer-events-none flex flex-col items-center gap-1 opacity-0 transition-opacity duration-200 data-[visible]:opacity-100\">\n <TimeSlider.Thumbnail.Root\n src={thumbnails}\n className=\"block h-[var(--thumbnail-height)] max-h-[160px] min-h-[80px] w-[var(--thumbnail-width)] min-w-[120px] max-w-[200px] overflow-hidden rounded-md border-2 border-white bg-black\"\n >\n <TimeSlider.Thumbnail.Img />\n </TimeSlider.Thumbnail.Root>\n {chapters && <TimeSlider.ChapterTitle className=\"text-[11px] text-white/80\" />}\n <TimeSlider.Value className=\"rounded bg-black/80 px-1.5 py-0.5 text-[11px] font-mono text-white\" />\n </TimeSlider.Preview>\n )}\n\n {/* Time preview (no thumbnails) */}\n {!thumbnails && (\n <TimeSlider.Preview className=\"pointer-events-none flex flex-col items-center opacity-0 transition-opacity duration-200 data-[visible]:opacity-100\">\n {chapters && <TimeSlider.ChapterTitle className=\"text-[11px] text-white/80 mb-0.5\" />}\n <TimeSlider.Value className=\"rounded bg-black/80 px-1.5 py-0.5 text-[11px] font-mono text-white\" />\n </TimeSlider.Preview>\n )}\n </TimeSlider.Root>\n )\n}\n\nfunction TimeDisplay() {\n return (\n <div className=\"flex items-center gap-1 text-xs font-mono text-white/80 tabular-nums\">\n <Time type=\"current\" />\n <span>/</span>\n <Time type=\"duration\" />\n </div>\n )\n}\n\nfunction CaptionControl() {\n const track = useMediaState(\"textTrack\")\n const hasCaptions = useMediaState(\"hasCaptions\")\n const options = useCaptionOptions()\n\n // Single track or none: simple toggle button (native CaptionButton behavior)\n if (options.length <= 2) {\n return (\n <ControlTooltip label={track ? \"Desativar legendas\" : \"Ativar legendas\"}>\n <CaptionButton className={cn(controlBtnClass, !hasCaptions && \"opacity-50 pointer-events-none\")}>\n {track ? (\n <CycleIcon icon={CaptionsIcon} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <CycleIcon icon={CaptionsOff} size=\"sm\" decorative className=\"text-white\" />\n )}\n </CaptionButton>\n </ControlTooltip>\n )\n }\n\n // Multiple tracks: menu with language selection (native Vidstack Menu behavior)\n return (\n <Menu.Root>\n <ControlTooltip label=\"Legendas\">\n <Menu.Button className={controlBtnClass}>\n {track ? (\n <CycleIcon icon={CaptionsIcon} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <CycleIcon icon={CaptionsOff} size=\"sm\" decorative className=\"text-white\" />\n )}\n </Menu.Button>\n </ControlTooltip>\n\n <Menu.Content\n className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[140px] rounded-lg border border-white/10 bg-black/90 backdrop-blur-md p-1 shadow-xl\"\n placement=\"top\"\n >\n <p className=\"px-3 py-1 text-[11px] font-semibold uppercase tracking-wider text-white/50\">\n Legendas\n </p>\n <Menu.RadioGroup value={options.selectedValue}>\n {options.map((option) => (\n <Menu.Radio\n key={option.value}\n value={option.value}\n onSelect={option.select}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-white/80 transition-colors hover:bg-white/10 hover:text-white cursor-pointer\",\n option.selected && \"text-white font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {option.selected && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-white\" />}\n </span>\n <span>{option.label}</span>\n </Menu.Radio>\n ))}\n </Menu.RadioGroup>\n </Menu.Content>\n </Menu.Root>\n )\n}\n\nfunction PIPControl() {\n const isPIP = useMediaState(\"pictureInPicture\")\n const canPIP = useMediaState(\"canPictureInPicture\")\n\n if (!canPIP) return null\n\n return (\n <ControlTooltip label={isPIP ? \"Sair do PiP\" : \"Picture-in-Picture\"}>\n <PIPButton className={controlBtnClass}>\n <CycleIcon icon={PictureInPicture2} size=\"sm\" decorative className={cn(\"text-white\", isPIP && \"text-white/100\")} />\n </PIPButton>\n </ControlTooltip>\n )\n}\n\nfunction SpeedControl() {\n const playbackRate = useMediaState(\"playbackRate\")\n const remote = useMediaRemote()\n const [open, setOpen] = React.useState(false)\n\n const rates = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]\n\n return (\n <div className=\"relative\">\n <ControlTooltip label=\"Velocidade\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={controlBtnClass}\n >\n {playbackRate === 1 ? (\n <CycleIcon icon={Gauge} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <span className=\"text-xs font-mono font-semibold text-white\">{playbackRate}x</span>\n )}\n </button>\n </ControlTooltip>\n\n {open && (\n <>\n {/* Backdrop to close */}\n <div className=\"fixed inset-0 z-40\" onClick={() => setOpen(false)} />\n\n <div className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[120px] rounded-lg border border-white/10 bg-black/90 backdrop-blur-md p-1 shadow-xl\">\n {rates.map((rate) => (\n <button\n key={rate}\n type=\"button\"\n onClick={() => {\n remote.changePlaybackRate(rate)\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-white/80 transition-colors hover:bg-white/10 hover:text-white\",\n playbackRate === rate && \"text-white font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {playbackRate === rate && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-white\" />}\n </span>\n <span className=\"font-mono\">{rate === 1 ? \"Normal\" : `${rate}x`}</span>\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n )\n}\n\nfunction QualityControl() {\n const options = useVideoQualityOptions({ auto: true, sort: \"descending\" })\n const [open, setOpen] = React.useState(false)\n\n const currentLabel = options.selectedValue === \"auto\"\n ? `Auto${options.selectedQuality ? ` (${options.selectedQuality.height}p)` : \"\"}`\n : options.selectedQuality\n ? `${options.selectedQuality.height}p`\n : \"Auto\"\n\n if (options.disabled) return null\n\n return (\n <div className=\"relative\">\n <ControlTooltip label=\"Qualidade\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={controlBtnClass}\n >\n <CycleIcon icon={Settings} size=\"sm\" decorative className=\"text-white\" />\n </button>\n </ControlTooltip>\n\n {open && (\n <>\n <div className=\"fixed inset-0 z-40\" onClick={() => setOpen(false)} />\n\n <div className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[140px] rounded-lg border border-white/10 bg-black/90 backdrop-blur-md p-1 shadow-xl\">\n <p className=\"px-3 py-1 text-[11px] font-semibold uppercase tracking-wider text-white/50\">\n Qualidade\n </p>\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => {\n option.select()\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-white/80 transition-colors hover:bg-white/10 hover:text-white\",\n option.selected && \"text-white font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {option.selected && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-white\" />}\n </span>\n <span className=\"font-mono\">{option.label}</span>\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n )\n}\n\nfunction FullscreenControl() {\n const isFullscreen = useMediaState(\"fullscreen\")\n return (\n <ControlTooltip label={isFullscreen ? \"Sair da tela cheia\" : \"Tela cheia\"}>\n <FullscreenButton className={controlBtnClass}>\n {isFullscreen ? (\n <CycleIcon icon={Minimize} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <CycleIcon icon={Maximize} size=\"sm\" decorative className=\"text-white\" />\n )}\n </FullscreenButton>\n </ControlTooltip>\n )\n}\n\nfunction LiveIndicator() {\n const isLive = useMediaState(\"live\")\n const isLiveEdge = useMediaState(\"liveEdge\")\n\n if (!isLive) return null\n\n return (\n <LiveButton\n className={cn(\n \"inline-flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs font-semibold uppercase tracking-wider transition-colors\",\n isLiveEdge\n ? \"text-destructive\"\n : \"text-white/60 hover:text-white\"\n )}\n >\n <span\n className={cn(\n \"size-2 rounded-full\",\n isLiveEdge ? \"bg-destructive animate-pulse\" : \"bg-white/40\"\n )}\n />\n Live\n </LiveButton>\n )\n}\n\n\n/* ─── Gesture helpers ─── */\n\ntype SeekDirection = \"backward\" | \"forward\"\n\nconst DOUBLE_TAP_THRESHOLD = 300\n\n/** Double-tap left/right edges to seek ±10s. z-10 so it doesn't block controls (z-20). */\nfunction SeekGestureZone({\n side,\n onSeekFeedback,\n}: {\n side: \"left\" | \"right\"\n onSeekFeedback: (direction: SeekDirection) => void\n}) {\n const remote = useMediaRemote()\n const currentTime = useMediaState(\"currentTime\")\n const lastTapRef = React.useRef(0)\n\n const handlePointerUp = React.useCallback(\n (e: React.PointerEvent) => {\n const now = Date.now()\n const delta = now - lastTapRef.current\n lastTapRef.current = now\n\n if (delta < DOUBLE_TAP_THRESHOLD) {\n e.stopPropagation()\n const seconds = side === \"left\" ? -10 : 10\n remote.seek(currentTime + seconds)\n onSeekFeedback(side === \"left\" ? \"backward\" : \"forward\")\n }\n },\n [remote, currentTime, side, onSeekFeedback]\n )\n\n return (\n <div\n className={cn(\n \"absolute top-0 z-10 block h-full w-1/5\",\n side === \"left\" ? \"left-0\" : \"right-0\"\n )}\n onPointerUp={handlePointerUp}\n />\n )\n}\n\nfunction SeekFeedbackOverlay({\n direction,\n visible,\n seconds,\n}: {\n direction: SeekDirection\n visible: boolean\n seconds: number\n}) {\n const isBackward = direction === \"backward\"\n\n return (\n <div\n className={cn(\n \"pointer-events-none absolute top-0 z-[35] flex h-full w-2/5 items-center transition-opacity duration-200\",\n isBackward ? \"left-0 justify-center\" : \"right-0 justify-center\",\n visible ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n <div\n className={cn(\n \"flex flex-col items-center gap-1 transition-transform duration-300\",\n visible ? \"scale-100\" : \"scale-75\"\n )}\n >\n <div className=\"flex size-12 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm\">\n <CycleIcon\n icon={isBackward ? RotateCcw : RotateCw}\n size=\"sm\"\n decorative\n className=\"text-white\"\n />\n </div>\n <span className=\"text-xs font-semibold text-white drop-shadow-md\">\n {seconds}s\n </span>\n </div>\n </div>\n )\n}\n\n\n/* ─── Hook: detect desktop via pointer capability ─── */\n/* Uses pointer: fine (mouse/trackpad) instead of viewport width.\n This way mobile devices keep the touch-optimized DefaultVideoLayout\n even when fullscreen in landscape exceeds the sm breakpoint. */\n\nfunction useIsDesktop() {\n const [isDesktop, setIsDesktop] = React.useState(false)\n\n React.useEffect(() => {\n const mq = window.matchMedia(\"(pointer: fine)\")\n setIsDesktop(mq.matches)\n const handler = (e: MediaQueryListEvent) => setIsDesktop(e.matches)\n mq.addEventListener(\"change\", handler)\n return () => mq.removeEventListener(\"change\", handler)\n }, [])\n\n return isDesktop\n}\n\n/* ─── Main component ─── */\n\nexport const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(\n function VideoPlayer(\n {\n src,\n poster,\n posterAlt = \"\",\n thumbnails,\n chapters,\n captions,\n showBuffering = true,\n announcer = true,\n autoPlay = false,\n muted = false,\n loop = false,\n startTime,\n onTimeUpdate,\n onEnded,\n className,\n },\n ref\n ) {\n const player = React.useRef<MediaPlayerInstance>(null)\n\n React.useImperativeHandle(ref, () => ({\n play() {\n player.current?.play()\n },\n pause() {\n player.current?.pause()\n },\n get currentTime() {\n return player.current?.currentTime ?? 0\n },\n get duration() {\n return player.current?.duration ?? 0\n },\n }))\n\n const handleTimeUpdate = React.useCallback(\n (detail: { currentTime: number }) => {\n if (onTimeUpdate && player.current) {\n onTimeUpdate(detail.currentTime, player.current.duration)\n }\n },\n [onTimeUpdate]\n )\n\n const handleEnded = React.useCallback(() => {\n onEnded?.()\n }, [onEnded])\n\n // Resume position: seek to startTime once the player is ready\n const hasAppliedStartTime = React.useRef(false)\n const handleCanPlay = React.useCallback(() => {\n if (startTime && startTime > 0 && !hasAppliedStartTime.current && player.current) {\n player.current.currentTime = startTime\n hasAppliedStartTime.current = true\n }\n }, [startTime])\n\n const playerEvents = {\n onCanPlay: handleCanPlay,\n ...(onTimeUpdate ? { onTimeUpdate: handleTimeUpdate } : {}),\n ...(onEnded ? { onEnded: handleEnded } : {}),\n }\n const isDesktop = useIsDesktop()\n\n // Seek feedback state with accumulation (like YouTube)\n const [seekFeedback, setSeekFeedback] = React.useState<SeekDirection | null>(null)\n const [seekAccumulated, setSeekAccumulated] = React.useState(0)\n const feedbackTimeout = React.useRef<ReturnType<typeof setTimeout>>(undefined)\n\n const handleSeekFeedback = React.useCallback((direction: SeekDirection) => {\n clearTimeout(feedbackTimeout.current)\n\n setSeekFeedback((prev) => {\n if (prev === direction) {\n setSeekAccumulated((s) => s + 10)\n } else {\n setSeekAccumulated(10)\n }\n return direction\n })\n\n feedbackTimeout.current = setTimeout(() => {\n setSeekFeedback(null)\n setSeekAccumulated(0)\n }, 700)\n }, [])\n\n // Mobile: listen for seek requests from DefaultVideoLayout gestures\n React.useEffect(() => {\n const el = player.current?.el\n if (!el || isDesktop) return\n\n const handler = (e: Event) => {\n const seekTo = (e as CustomEvent<number>).detail\n const current = player.current?.currentTime ?? 0\n const delta = seekTo - current\n // Only show feedback for gesture seeks (~±10s), not slider scrubs\n if (Math.abs(Math.abs(delta) - 10) < 2) {\n handleSeekFeedback(delta < 0 ? \"backward\" : \"forward\")\n }\n }\n\n el.addEventListener(\"media-seek-request\", handler)\n return () => el.removeEventListener(\"media-seek-request\", handler)\n }, [isDesktop, handleSeekFeedback])\n\n React.useEffect(() => {\n return () => clearTimeout(feedbackTimeout.current)\n }, [])\n\n return (\n <MediaPlayer\n ref={player}\n src={src}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n playsInline\n crossOrigin=\"\"\n className={cn(\n \"group relative aspect-video w-full overflow-hidden bg-black text-white\",\n isDesktop ? \"rounded-[16px]\" : \"rounded-none\",\n className\n )}\n {...playerEvents}\n >\n <MediaProvider>\n {poster && (\n <Poster\n className={cn(\"absolute inset-0 block h-full w-full object-cover opacity-0 transition-opacity data-[visible]:opacity-100\", isDesktop && \"rounded-[16px]\")}\n src={poster}\n alt={posterAlt}\n />\n )}\n\n {/* ─── Chapters track (VTT) ─── */}\n {chapters && (\n <Track\n src={chapters}\n kind=\"chapters\"\n language=\"en\"\n default\n />\n )}\n\n {/* ─── Caption/subtitle tracks (VTT) ─── */}\n {captions?.map((track) => (\n <Track\n key={track.language}\n src={track.src}\n kind=\"subtitles\"\n language={track.language}\n label={track.label}\n default={track.default}\n />\n ))}\n </MediaProvider>\n\n {/* ─── Accessibility: screen reader announcements ─── */}\n {announcer && <MediaAnnouncer />}\n\n {/* ─── Buffering spinner ─── */}\n {showBuffering && <BufferingIndicator />}\n\n {/* ─── Seek feedback indicators (both mobile & desktop) ─── */}\n <SeekFeedbackOverlay direction=\"backward\" visible={seekFeedback === \"backward\"} seconds={seekAccumulated} />\n <SeekFeedbackOverlay direction=\"forward\" visible={seekFeedback === \"forward\"} seconds={seekAccumulated} />\n\n {/* ─── MOBILE: Vidstack DefaultVideoLayout (touch, gestos, menus nativos) ─── */}\n {!isDesktop && (\n <DefaultVideoLayout\n icons={defaultLayoutIcons}\n thumbnails={thumbnails}\n colorScheme=\"dark\"\n />\n )}\n\n {/* ─── DESKTOP: Controles customizados do Cycle Design ─── */}\n {isDesktop && (\n <>\n {/* Captions overlay */}\n <Captions className=\"absolute inset-x-0 bottom-8 z-10 flex flex-col items-center select-none break-words text-center transition-[bottom] duration-200 ease-in-out group-data-[started]:group-hover:bottom-[72px] group-data-[paused]:bottom-[72px] media-preview:opacity-0 [&>[data-part=cue]]:inline [&>[data-part=cue]]:rounded-md [&>[data-part=cue]]:bg-black/95 [&>[data-part=cue]]:px-4 [&>[data-part=cue]]:py-1.5 [&>[data-part=cue]]:text-[15px] [&>[data-part=cue]]:leading-snug [&>[data-part=cue]]:text-white [&>[data-part=cue]]:drop-shadow-[0_1px_3px_rgba(0,0,0,0.8)]\" />\n\n {/* Play overlay (paused state — big play button) */}\n <PlayOverlay />\n\n {/* Gestures: click to pause, double-click fullscreen */}\n <Gesture className=\"absolute inset-0 z-0 block h-full w-full\" event=\"pointerup\" action=\"toggle:paused\" />\n <Gesture className=\"absolute inset-0 z-0 block h-full w-full\" event=\"dblpointerup\" action=\"toggle:fullscreen\" />\n\n {/* Double-tap seek zones on edges */}\n <SeekGestureZone side=\"left\" onSeekFeedback={handleSeekFeedback} />\n <SeekGestureZone side=\"right\" onSeekFeedback={handleSeekFeedback} />\n\n {/* Controls overlay (hover to show) */}\n <Controls.Root className=\"absolute inset-0 z-20 flex h-full w-full flex-col bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 transition-opacity duration-200 group-data-[started]:group-hover:opacity-100 group-data-[paused]:opacity-100\">\n <div className=\"flex-1\" />\n\n {/* Seek bar */}\n <Controls.Group className=\"flex w-full items-center px-3\">\n <SeekBar thumbnails={thumbnails} chapters={!!chapters} />\n </Controls.Group>\n\n {/* Bottom bar */}\n <Controls.Group className=\"flex w-full items-center gap-1 px-2 pb-2\">\n <PlayControl />\n <SeekBackwardControl />\n <SeekForwardControl />\n <MuteControl />\n <VolumeControl />\n <TimeDisplay />\n <LiveIndicator />\n\n <div className=\"flex-1\" />\n\n <CaptionControl />\n <SpeedControl />\n <QualityControl />\n <PIPControl />\n <FullscreenControl />\n </Controls.Group>\n </Controls.Root>\n </>\n )}\n </MediaPlayer>\n )\n }\n)\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/video-player.tsx"],"names":["forwardRef","CaptionsIcon","VideoPlayer","_a"],"mappings":"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","file":"chunk-C4C5MWPO.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n MediaPlayer,\n MediaProvider,\n Poster,\n Controls,\n Gesture,\n TimeSlider,\n VolumeSlider,\n Time,\n PlayButton,\n MuteButton,\n FullscreenButton,\n CaptionButton,\n PIPButton,\n SeekButton,\n Captions,\n Spinner,\n Track,\n Tooltip,\n Menu,\n LiveButton,\n MediaAnnouncer,\n useMediaState,\n useMediaRemote,\n useVideoQualityOptions,\n useCaptionOptions,\n type MediaPlayerInstance,\n} from \"@vidstack/react\"\n// Desktop-only controls use the above. Mobile uses DefaultVideoLayout below.\nimport {\n DefaultVideoLayout,\n defaultLayoutIcons,\n} from \"@vidstack/react/player/layouts/default\"\nimport \"@vidstack/react/player/styles/base.css\"\nimport \"@vidstack/react/player/styles/default/theme.css\"\nimport \"@vidstack/react/player/styles/default/layouts/video.css\"\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Volume1,\n Maximize,\n Minimize,\n Captions as CaptionsIcon,\n CaptionsOff,\n PictureInPicture2,\n RotateCcw,\n RotateCw,\n Gauge,\n Settings,\n Check,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Types ─── */\n\nexport interface CaptionTrack {\n /** URL do arquivo VTT de legenda */\n src: string\n /** Codigo do idioma (BCP 47, ex: \"pt-BR\", \"en\", \"es\") */\n language: string\n /** Label exibido no seletor de legendas (ex: \"Portugues\", \"English\") */\n label: string\n /** Se true, esta faixa sera ativada por padrao */\n default?: boolean\n}\n\nexport interface VideoPlayerRef {\n play(): void\n pause(): void\n readonly currentTime: number\n readonly duration: number\n}\n\nexport interface VideoPlayerProps {\n /** URL do video (mp4, webm, m3u8 para HLS) */\n src: string\n /** URL da imagem de poster */\n poster?: string\n /** Alt text do poster */\n posterAlt?: string\n /** URL do arquivo de thumbnails (VTT sprite sheet) */\n thumbnails?: string\n /** URL do arquivo VTT de chapters (marcadores de seção no timeline) */\n chapters?: string\n /** Faixas de legenda/subtitles (VTT). Suporta multiplos idiomas. */\n captions?: CaptionTrack[]\n /** Exibir spinner durante buffering (default: true) */\n showBuffering?: boolean\n /** Habilitar anuncios de acessibilidade para screen readers (default: true) */\n announcer?: boolean\n /** Iniciar automaticamente */\n autoPlay?: boolean\n /** Iniciar mutado */\n muted?: boolean\n /** Repetir ao terminar */\n loop?: boolean\n /** Tempo inicial em segundos — usado para retomar de onde o usuario parou (resume position) */\n startTime?: number\n /** Callback com progresso do video (currentTime em segundos, duration em segundos) */\n onTimeUpdate?: (currentTime: number, duration: number) => void\n /** Callback disparado quando o video termina */\n onEnded?: () => void\n className?: string\n}\n\n/* ─── Shared styles ─── */\n\nconst controlBtnClass =\n \"group inline-flex size-9 cursor-pointer items-center justify-center rounded-md text-white outline-none transition-colors hover:bg-white/20 focus-visible:ring-2 focus-visible:ring-white/50\"\n\nconst tooltipClass =\n \"z-50 rounded bg-black/90 px-2 py-1 text-xs font-medium text-white shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0\"\n\n/** Wraps a control button with a Vidstack tooltip. Desktop only (no hover on mobile). */\nfunction ControlTooltip({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content className={tooltipClass} placement=\"top\">\n {label}\n </Tooltip.Content>\n </Tooltip.Root>\n )\n}\n\n/** Play, Pause e Volume usam icones filled (solid) no player — igual YouTube */\nconst filledIconClass = \"text-white fill-current !stroke-transparent\"\n\n/* ─── Sub-components (controles customizados) ─── */\n\nfunction PlayOverlay() {\n const isPaused = useMediaState(\"paused\")\n const hasStarted = useMediaState(\"started\")\n\n if (!isPaused && hasStarted) return null\n\n return (\n <PlayButton className=\"absolute inset-0 z-10 flex cursor-pointer items-center justify-center bg-black/30 transition-opacity\">\n <div className=\"flex size-16 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm transition-transform hover:scale-110\">\n <CycleIcon icon={Play} size=\"lg\" decorative className={cn(filledIconClass, \"ml-1\")} />\n </div>\n </PlayButton>\n )\n}\n\nfunction PlayControl() {\n const isPaused = useMediaState(\"paused\")\n return (\n <ControlTooltip label={isPaused ? \"Reproduzir\" : \"Pausar\"}>\n <PlayButton className={controlBtnClass}>\n {isPaused ? (\n <CycleIcon icon={Play} size=\"sm\" decorative className={filledIconClass} />\n ) : (\n <CycleIcon icon={Pause} size=\"sm\" decorative className={filledIconClass} />\n )}\n </PlayButton>\n </ControlTooltip>\n )\n}\n\nfunction SeekBackwardControl() {\n return (\n <ControlTooltip label=\"Retroceder 10s\">\n <SeekButton className={controlBtnClass} seconds={-10}>\n <CycleIcon icon={RotateCcw} size=\"sm\" decorative className=\"text-white\" />\n </SeekButton>\n </ControlTooltip>\n )\n}\n\nfunction SeekForwardControl() {\n return (\n <ControlTooltip label=\"Avançar 10s\">\n <SeekButton className={controlBtnClass} seconds={10}>\n <CycleIcon icon={RotateCw} size=\"sm\" decorative className=\"text-white\" />\n </SeekButton>\n </ControlTooltip>\n )\n}\n\nfunction MuteControl() {\n const volume = useMediaState(\"volume\")\n const isMuted = useMediaState(\"muted\")\n\n const Icon = isMuted || volume === 0 ? VolumeX : volume < 0.5 ? Volume1 : Volume2\n const label = isMuted || volume === 0 ? \"Ativar som\" : \"Silenciar\"\n\n return (\n <ControlTooltip label={label}>\n <MuteButton className={controlBtnClass}>\n <CycleIcon icon={Icon} size=\"sm\" decorative className={filledIconClass} />\n </MuteButton>\n </ControlTooltip>\n )\n}\n\nfunction VolumeControl() {\n return (\n <VolumeSlider.Root className=\"group relative hidden h-9 w-20 shrink-0 cursor-pointer touch-none select-none items-center outline-none @[480px]:inline-flex\">\n <VolumeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-white/30\">\n <VolumeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-white\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100\" />\n </VolumeSlider.Root>\n )\n}\n\nfunction BufferingIndicator() {\n return (\n <div className=\"pointer-events-none absolute inset-0 z-[35] flex items-center justify-center media-buffering:opacity-100 media-can-play:opacity-0 opacity-0 transition-opacity duration-300\">\n <Spinner.Root className=\"size-16 text-white\" size={64}>\n <Spinner.Track className=\"opacity-25\" width={4} />\n <Spinner.TrackFill className=\"opacity-75\" width={4} />\n </Spinner.Root>\n </div>\n )\n}\n\nfunction SeekBar({ thumbnails, chapters }: { thumbnails?: string; chapters?: boolean }) {\n const trackContent = (\n <>\n <TimeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-white/30\">\n <TimeSlider.Progress className=\"absolute h-full w-[var(--slider-progress)] rounded-full bg-white/50\" />\n <TimeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-white\" />\n </TimeSlider.Track>\n </>\n )\n\n return (\n <TimeSlider.Root className=\"group relative inline-flex h-9 w-full cursor-pointer touch-none select-none items-center outline-none\">\n {chapters ? (\n <TimeSlider.Chapters className=\"relative flex w-full items-center\">\n {(cues, forwardRef) =>\n cues.map((cue) => (\n <div\n className=\"relative flex h-full w-full items-center last:mr-0 mr-0.5\"\n key={cue.startTime}\n ref={forwardRef}\n >\n {trackContent}\n </div>\n ))\n }\n </TimeSlider.Chapters>\n ) : (\n trackContent\n )}\n\n <TimeSlider.Thumb className=\"absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-white opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100\" />\n\n {/* Thumbnail preview on hover */}\n {thumbnails && (\n <TimeSlider.Preview className=\"pointer-events-none flex flex-col items-center gap-1 opacity-0 transition-opacity duration-200 data-[visible]:opacity-100\">\n <TimeSlider.Thumbnail.Root\n src={thumbnails}\n className=\"block h-[var(--thumbnail-height)] max-h-[160px] min-h-[80px] w-[var(--thumbnail-width)] min-w-[120px] max-w-[200px] overflow-hidden rounded-md border-2 border-white bg-black\"\n >\n <TimeSlider.Thumbnail.Img />\n </TimeSlider.Thumbnail.Root>\n {chapters && <TimeSlider.ChapterTitle className=\"text-[11px] text-white/80\" />}\n <TimeSlider.Value className=\"rounded bg-black/80 px-1.5 py-0.5 text-[11px] font-mono text-white\" />\n </TimeSlider.Preview>\n )}\n\n {/* Time preview (no thumbnails) */}\n {!thumbnails && (\n <TimeSlider.Preview className=\"pointer-events-none flex flex-col items-center opacity-0 transition-opacity duration-200 data-[visible]:opacity-100\">\n {chapters && <TimeSlider.ChapterTitle className=\"text-[11px] text-white/80 mb-0.5\" />}\n <TimeSlider.Value className=\"rounded bg-black/80 px-1.5 py-0.5 text-[11px] font-mono text-white\" />\n </TimeSlider.Preview>\n )}\n </TimeSlider.Root>\n )\n}\n\nfunction TimeDisplay() {\n return (\n <div className=\"flex shrink-0 items-center gap-1 text-xs font-mono text-white/80 tabular-nums whitespace-nowrap\">\n <Time type=\"current\" />\n <span>/</span>\n <Time type=\"duration\" />\n </div>\n )\n}\n\nfunction CaptionControl() {\n const track = useMediaState(\"textTrack\")\n const hasCaptions = useMediaState(\"hasCaptions\")\n const options = useCaptionOptions()\n\n // Single track or none: simple toggle button (native CaptionButton behavior)\n if (options.length <= 2) {\n return (\n <ControlTooltip label={track ? \"Desativar legendas\" : \"Ativar legendas\"}>\n <CaptionButton className={cn(controlBtnClass, !hasCaptions && \"opacity-50 pointer-events-none\")}>\n {track ? (\n <CycleIcon icon={CaptionsIcon} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <CycleIcon icon={CaptionsOff} size=\"sm\" decorative className=\"text-white\" />\n )}\n </CaptionButton>\n </ControlTooltip>\n )\n }\n\n // Multiple tracks: menu with language selection (native Vidstack Menu behavior)\n return (\n <Menu.Root>\n <ControlTooltip label=\"Legendas\">\n <Menu.Button className={controlBtnClass}>\n {track ? (\n <CycleIcon icon={CaptionsIcon} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <CycleIcon icon={CaptionsOff} size=\"sm\" decorative className=\"text-white\" />\n )}\n </Menu.Button>\n </ControlTooltip>\n\n <Menu.Content\n className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[140px] rounded-lg border border-white/10 bg-black/90 backdrop-blur-md p-1 shadow-xl\"\n placement=\"top\"\n >\n <p className=\"px-3 py-1 text-[11px] font-semibold uppercase tracking-wider text-white/50\">\n Legendas\n </p>\n <Menu.RadioGroup value={options.selectedValue}>\n {options.map((option) => (\n <Menu.Radio\n key={option.value}\n value={option.value}\n onSelect={option.select}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-white/80 transition-colors hover:bg-white/10 hover:text-white cursor-pointer\",\n option.selected && \"text-white font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {option.selected && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-white\" />}\n </span>\n <span>{option.label}</span>\n </Menu.Radio>\n ))}\n </Menu.RadioGroup>\n </Menu.Content>\n </Menu.Root>\n )\n}\n\nfunction PIPControl() {\n const isPIP = useMediaState(\"pictureInPicture\")\n const canPIP = useMediaState(\"canPictureInPicture\")\n\n if (!canPIP) return null\n\n return (\n <ControlTooltip label={isPIP ? \"Sair do PiP\" : \"Picture-in-Picture\"}>\n <PIPButton className={controlBtnClass}>\n <CycleIcon icon={PictureInPicture2} size=\"sm\" decorative className={cn(\"text-white\", isPIP && \"text-white/100\")} />\n </PIPButton>\n </ControlTooltip>\n )\n}\n\nfunction SpeedControl() {\n const playbackRate = useMediaState(\"playbackRate\")\n const remote = useMediaRemote()\n const [open, setOpen] = React.useState(false)\n\n const rates = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]\n\n return (\n <div className=\"relative\">\n <ControlTooltip label=\"Velocidade\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={controlBtnClass}\n >\n {playbackRate === 1 ? (\n <CycleIcon icon={Gauge} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <span className=\"text-xs font-mono font-semibold text-white\">{playbackRate}x</span>\n )}\n </button>\n </ControlTooltip>\n\n {open && (\n <>\n {/* Backdrop to close */}\n <div className=\"fixed inset-0 z-40\" onClick={() => setOpen(false)} />\n\n <div className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[120px] rounded-lg border border-white/10 bg-black/90 backdrop-blur-md p-1 shadow-xl\">\n {rates.map((rate) => (\n <button\n key={rate}\n type=\"button\"\n onClick={() => {\n remote.changePlaybackRate(rate)\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-white/80 transition-colors hover:bg-white/10 hover:text-white\",\n playbackRate === rate && \"text-white font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {playbackRate === rate && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-white\" />}\n </span>\n <span className=\"font-mono\">{rate === 1 ? \"Normal\" : `${rate}x`}</span>\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n )\n}\n\nfunction QualityControl() {\n const options = useVideoQualityOptions({ auto: true, sort: \"descending\" })\n const [open, setOpen] = React.useState(false)\n\n const currentLabel = options.selectedValue === \"auto\"\n ? `Auto${options.selectedQuality ? ` (${options.selectedQuality.height}p)` : \"\"}`\n : options.selectedQuality\n ? `${options.selectedQuality.height}p`\n : \"Auto\"\n\n if (options.disabled) return null\n\n return (\n <div className=\"relative\">\n <ControlTooltip label=\"Qualidade\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={controlBtnClass}\n >\n <CycleIcon icon={Settings} size=\"sm\" decorative className=\"text-white\" />\n </button>\n </ControlTooltip>\n\n {open && (\n <>\n <div className=\"fixed inset-0 z-40\" onClick={() => setOpen(false)} />\n\n <div className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[140px] rounded-lg border border-white/10 bg-black/90 backdrop-blur-md p-1 shadow-xl\">\n <p className=\"px-3 py-1 text-[11px] font-semibold uppercase tracking-wider text-white/50\">\n Qualidade\n </p>\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => {\n option.select()\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-white/80 transition-colors hover:bg-white/10 hover:text-white\",\n option.selected && \"text-white font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {option.selected && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-white\" />}\n </span>\n <span className=\"font-mono\">{option.label}</span>\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n )\n}\n\nfunction FullscreenControl() {\n const isFullscreen = useMediaState(\"fullscreen\")\n return (\n <ControlTooltip label={isFullscreen ? \"Sair da tela cheia\" : \"Tela cheia\"}>\n <FullscreenButton className={controlBtnClass}>\n {isFullscreen ? (\n <CycleIcon icon={Minimize} size=\"sm\" decorative className=\"text-white\" />\n ) : (\n <CycleIcon icon={Maximize} size=\"sm\" decorative className=\"text-white\" />\n )}\n </FullscreenButton>\n </ControlTooltip>\n )\n}\n\nfunction LiveIndicator() {\n const isLive = useMediaState(\"live\")\n const isLiveEdge = useMediaState(\"liveEdge\")\n\n if (!isLive) return null\n\n return (\n <LiveButton\n className={cn(\n \"inline-flex cursor-pointer items-center gap-1.5 rounded-md px-2 py-1 text-xs font-semibold uppercase tracking-wider transition-colors\",\n isLiveEdge\n ? \"text-destructive\"\n : \"text-white/60 hover:text-white\"\n )}\n >\n <span\n className={cn(\n \"size-2 rounded-full\",\n isLiveEdge ? \"bg-destructive animate-pulse\" : \"bg-white/40\"\n )}\n />\n Live\n </LiveButton>\n )\n}\n\n\n/* ─── Gesture helpers ─── */\n\ntype SeekDirection = \"backward\" | \"forward\"\n\nconst DOUBLE_TAP_THRESHOLD = 300\n\n/** Double-tap left/right edges to seek ±10s. z-10 so it doesn't block controls (z-20). */\nfunction SeekGestureZone({\n side,\n onSeekFeedback,\n}: {\n side: \"left\" | \"right\"\n onSeekFeedback: (direction: SeekDirection) => void\n}) {\n const remote = useMediaRemote()\n const currentTime = useMediaState(\"currentTime\")\n const lastTapRef = React.useRef(0)\n\n const handlePointerUp = React.useCallback(\n (e: React.PointerEvent) => {\n const now = Date.now()\n const delta = now - lastTapRef.current\n lastTapRef.current = now\n\n if (delta < DOUBLE_TAP_THRESHOLD) {\n e.stopPropagation()\n const seconds = side === \"left\" ? -10 : 10\n remote.seek(currentTime + seconds)\n onSeekFeedback(side === \"left\" ? \"backward\" : \"forward\")\n }\n },\n [remote, currentTime, side, onSeekFeedback]\n )\n\n return (\n <div\n className={cn(\n \"absolute top-0 z-10 block h-full w-1/5\",\n side === \"left\" ? \"left-0\" : \"right-0\"\n )}\n onPointerUp={handlePointerUp}\n />\n )\n}\n\nfunction SeekFeedbackOverlay({\n direction,\n visible,\n seconds,\n}: {\n direction: SeekDirection\n visible: boolean\n seconds: number\n}) {\n const isBackward = direction === \"backward\"\n\n return (\n <div\n className={cn(\n \"pointer-events-none absolute top-0 z-[35] flex h-full w-2/5 items-center transition-opacity duration-200\",\n isBackward ? \"left-0 justify-center\" : \"right-0 justify-center\",\n visible ? \"opacity-100\" : \"opacity-0\"\n )}\n >\n <div\n className={cn(\n \"flex flex-col items-center gap-1 transition-transform duration-300\",\n visible ? \"scale-100\" : \"scale-75\"\n )}\n >\n <div className=\"flex size-12 items-center justify-center rounded-full bg-white/20 backdrop-blur-sm\">\n <CycleIcon\n icon={isBackward ? RotateCcw : RotateCw}\n size=\"sm\"\n decorative\n className=\"text-white\"\n />\n </div>\n <span className=\"text-xs font-semibold text-white drop-shadow-md\">\n {seconds}s\n </span>\n </div>\n </div>\n )\n}\n\n\n/* ─── Hook: detect desktop via pointer capability ─── */\n/* Uses pointer: fine (mouse/trackpad) instead of viewport width.\n This way mobile devices keep the touch-optimized DefaultVideoLayout\n even when fullscreen in landscape exceeds the sm breakpoint. */\n\nfunction useIsDesktop() {\n const [isDesktop, setIsDesktop] = React.useState(false)\n\n React.useEffect(() => {\n const mq = window.matchMedia(\"(pointer: fine)\")\n setIsDesktop(mq.matches)\n const handler = (e: MediaQueryListEvent) => setIsDesktop(e.matches)\n mq.addEventListener(\"change\", handler)\n return () => mq.removeEventListener(\"change\", handler)\n }, [])\n\n return isDesktop\n}\n\n/* ─── Main component ─── */\n\nexport const VideoPlayer = React.forwardRef<VideoPlayerRef, VideoPlayerProps>(\n function VideoPlayer(\n {\n src,\n poster,\n posterAlt = \"\",\n thumbnails,\n chapters,\n captions,\n showBuffering = true,\n announcer = true,\n autoPlay = false,\n muted = false,\n loop = false,\n startTime,\n onTimeUpdate,\n onEnded,\n className,\n },\n ref\n ) {\n const player = React.useRef<MediaPlayerInstance>(null)\n\n React.useImperativeHandle(ref, () => ({\n play() {\n player.current?.play()\n },\n pause() {\n player.current?.pause()\n },\n get currentTime() {\n return player.current?.currentTime ?? 0\n },\n get duration() {\n return player.current?.duration ?? 0\n },\n }))\n\n const handleTimeUpdate = React.useCallback(\n (detail: { currentTime: number }) => {\n if (onTimeUpdate && player.current) {\n onTimeUpdate(detail.currentTime, player.current.duration)\n }\n },\n [onTimeUpdate]\n )\n\n const handleEnded = React.useCallback(() => {\n onEnded?.()\n }, [onEnded])\n\n // Resume position: seek to startTime once the player is ready\n const hasAppliedStartTime = React.useRef(false)\n const handleCanPlay = React.useCallback(() => {\n if (startTime && startTime > 0 && !hasAppliedStartTime.current && player.current) {\n player.current.currentTime = startTime\n hasAppliedStartTime.current = true\n }\n }, [startTime])\n\n const playerEvents = {\n onCanPlay: handleCanPlay,\n ...(onTimeUpdate ? { onTimeUpdate: handleTimeUpdate } : {}),\n ...(onEnded ? { onEnded: handleEnded } : {}),\n }\n const isDesktop = useIsDesktop()\n\n // Seek feedback state with accumulation (like YouTube)\n const [seekFeedback, setSeekFeedback] = React.useState<SeekDirection | null>(null)\n const [seekAccumulated, setSeekAccumulated] = React.useState(0)\n const feedbackTimeout = React.useRef<ReturnType<typeof setTimeout>>(undefined)\n\n const handleSeekFeedback = React.useCallback((direction: SeekDirection) => {\n clearTimeout(feedbackTimeout.current)\n\n setSeekFeedback((prev) => {\n if (prev === direction) {\n setSeekAccumulated((s) => s + 10)\n } else {\n setSeekAccumulated(10)\n }\n return direction\n })\n\n feedbackTimeout.current = setTimeout(() => {\n setSeekFeedback(null)\n setSeekAccumulated(0)\n }, 700)\n }, [])\n\n // Mobile: listen for seek requests from DefaultVideoLayout gestures\n React.useEffect(() => {\n const el = player.current?.el\n if (!el || isDesktop) return\n\n const handler = (e: Event) => {\n const seekTo = (e as CustomEvent<number>).detail\n const current = player.current?.currentTime ?? 0\n const delta = seekTo - current\n // Only show feedback for gesture seeks (~±10s), not slider scrubs\n if (Math.abs(Math.abs(delta) - 10) < 2) {\n handleSeekFeedback(delta < 0 ? \"backward\" : \"forward\")\n }\n }\n\n el.addEventListener(\"media-seek-request\", handler)\n return () => el.removeEventListener(\"media-seek-request\", handler)\n }, [isDesktop, handleSeekFeedback])\n\n React.useEffect(() => {\n return () => clearTimeout(feedbackTimeout.current)\n }, [])\n\n return (\n <MediaPlayer\n ref={player}\n src={src}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n playsInline\n crossOrigin=\"\"\n className={cn(\n \"group relative aspect-video w-full overflow-hidden bg-black text-white\",\n isDesktop ? \"rounded-[16px]\" : \"rounded-none\",\n className\n )}\n {...playerEvents}\n >\n <MediaProvider>\n {poster && (\n <Poster\n className={cn(\"absolute inset-0 block h-full w-full object-cover opacity-0 transition-opacity data-[visible]:opacity-100\", isDesktop && \"rounded-[16px]\")}\n src={poster}\n alt={posterAlt}\n />\n )}\n\n {/* ─── Chapters track (VTT) ─── */}\n {chapters && (\n <Track\n src={chapters}\n kind=\"chapters\"\n language=\"en\"\n default\n />\n )}\n\n {/* ─── Caption/subtitle tracks (VTT) ─── */}\n {captions?.map((track) => (\n <Track\n key={track.language}\n src={track.src}\n kind=\"subtitles\"\n language={track.language}\n label={track.label}\n default={track.default}\n />\n ))}\n </MediaProvider>\n\n {/* ─── Accessibility: screen reader announcements ─── */}\n {announcer && <MediaAnnouncer />}\n\n {/* ─── Buffering spinner ─── */}\n {showBuffering && <BufferingIndicator />}\n\n {/* ─── Seek feedback indicators (both mobile & desktop) ─── */}\n <SeekFeedbackOverlay direction=\"backward\" visible={seekFeedback === \"backward\"} seconds={seekAccumulated} />\n <SeekFeedbackOverlay direction=\"forward\" visible={seekFeedback === \"forward\"} seconds={seekAccumulated} />\n\n {/* ─── MOBILE: Vidstack DefaultVideoLayout (touch, gestos, menus nativos) ─── */}\n {!isDesktop && (\n <DefaultVideoLayout\n icons={defaultLayoutIcons}\n thumbnails={thumbnails}\n colorScheme=\"dark\"\n />\n )}\n\n {/* ─── DESKTOP: Controles customizados do Cycle Design ─── */}\n {isDesktop && (\n <>\n {/* Captions overlay */}\n <Captions className=\"absolute inset-x-0 bottom-8 z-10 flex flex-col items-center select-none break-words text-center transition-[bottom] duration-200 ease-in-out group-data-[started]:group-hover:bottom-[72px] group-data-[paused]:bottom-[72px] media-preview:opacity-0 [&>[data-part=cue]]:inline [&>[data-part=cue]]:rounded-md [&>[data-part=cue]]:bg-black/95 [&>[data-part=cue]]:px-4 [&>[data-part=cue]]:py-1.5 [&>[data-part=cue]]:text-[15px] [&>[data-part=cue]]:leading-snug [&>[data-part=cue]]:text-white [&>[data-part=cue]]:drop-shadow-[0_1px_3px_rgba(0,0,0,0.8)]\" />\n\n {/* Play overlay (paused state — big play button) */}\n <PlayOverlay />\n\n {/* Gestures: click to pause, double-click fullscreen */}\n <Gesture className=\"absolute inset-0 z-0 block h-full w-full\" event=\"pointerup\" action=\"toggle:paused\" />\n <Gesture className=\"absolute inset-0 z-0 block h-full w-full\" event=\"dblpointerup\" action=\"toggle:fullscreen\" />\n\n {/* Double-tap seek zones on edges */}\n <SeekGestureZone side=\"left\" onSeekFeedback={handleSeekFeedback} />\n <SeekGestureZone side=\"right\" onSeekFeedback={handleSeekFeedback} />\n\n {/* Controls overlay (hover to show) */}\n <Controls.Root className=\"absolute inset-0 z-20 flex h-full w-full flex-col bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 transition-opacity duration-200 group-data-[started]:group-hover:opacity-100 group-data-[paused]:opacity-100\">\n <div className=\"flex-1\" />\n\n {/* Seek bar */}\n <Controls.Group className=\"flex w-full items-center px-3\">\n <SeekBar thumbnails={thumbnails} chapters={!!chapters} />\n </Controls.Group>\n\n {/* Bottom bar */}\n <Controls.Group className=\"@container flex w-full items-center gap-1 px-2 pb-2\">\n <PlayControl />\n <SeekBackwardControl />\n <SeekForwardControl />\n <MuteControl />\n <VolumeControl />\n <TimeDisplay />\n <LiveIndicator />\n\n <div className=\"flex-1\" />\n\n <CaptionControl />\n <SpeedControl />\n <QualityControl />\n <PIPControl />\n <FullscreenControl />\n </Controls.Group>\n </Controls.Root>\n </>\n )}\n </MediaPlayer>\n )\n }\n)\n"]}
|
|
@@ -338,10 +338,17 @@ function Required(props) {
|
|
|
338
338
|
/* @__PURE__ */ jsx("path", { fill: "currentColor", d: "M12 17a1 1 0 1 0 0-2 1 1 0 0 0 0 2", stroke: "none" })
|
|
339
339
|
] }));
|
|
340
340
|
}
|
|
341
|
+
function Ai(props) {
|
|
342
|
+
return /* @__PURE__ */ jsxs(BaseIcon, __spreadProps(__spreadValues({}, props), { children: [
|
|
343
|
+
/* @__PURE__ */ jsx("path", { d: "M10.142 15.15C10.061 14.839 9.899 14.554 9.672 14.327C9.444 14.099 9.16 13.937 8.849 13.857L3.327 12.433C3.233 12.406 3.15 12.349 3.091 12.271C3.032 12.193 3 12.098 3 12C3 11.902 3.032 11.807 3.091 11.729C3.15 11.651 3.233 11.594 3.327 11.567L8.849 10.142C9.16 10.062 9.444 9.9 9.671 9.673C9.899 9.445 10.061 9.161 10.142 8.85L11.566 3.329C11.592 3.234 11.649 3.151 11.727 3.091C11.805 3.032 11.901 3 11.999 3C12.097 3 12.193 3.032 12.271 3.091C12.349 3.151 12.406 3.234 12.432 3.329L13.855 8.85C13.936 9.162 14.098 9.446 14.325 9.673C14.553 9.901 14.837 10.063 15.148 10.143L20.67 11.566C20.765 11.592 20.848 11.649 20.908 11.727C20.968 11.806 21 11.902 21 12C21 12.099 20.968 12.194 20.908 12.273C20.848 12.351 20.765 12.408 20.67 12.434L15.148 13.857C14.837 13.937 14.553 14.099 14.325 14.327C14.098 14.554 13.936 14.839 13.855 15.15L12.431 20.671C12.405 20.766 12.348 20.849 12.27 20.909C12.192 20.968 12.096 21 11.998 21C11.9 21 11.804 20.968 11.726 20.909C11.648 20.849 11.591 20.766 11.565 20.671L10.142 15.15Z" }),
|
|
344
|
+
/* @__PURE__ */ jsx("path", { d: "M19.2 3.9V7.5M21 5.7H17.4" }),
|
|
345
|
+
/* @__PURE__ */ jsx("path", { d: "M4.8 16.5V18.3M5.7 17.4H3.9" })
|
|
346
|
+
] }));
|
|
347
|
+
}
|
|
341
348
|
function Ray(props) {
|
|
342
349
|
return /* @__PURE__ */ jsx(BaseIcon, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx("path", { d: "M13 2 9 13h3.5L10 22 20 9h-5l2.5-7z" }) }));
|
|
343
350
|
}
|
|
344
351
|
|
|
345
|
-
export { Achievement, Answer, Badge, Certificate, Chat, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard };
|
|
346
|
-
//# sourceMappingURL=chunk-
|
|
347
|
-
//# sourceMappingURL=chunk-
|
|
352
|
+
export { Achievement, Ai, Answer, Badge, Certificate, Chat, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard };
|
|
353
|
+
//# sourceMappingURL=chunk-JPEDYOV7.js.map
|
|
354
|
+
//# sourceMappingURL=chunk-JPEDYOV7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/icons/BaseIcon.tsx","../src/components/icons/_generated/Achievement.tsx","../src/components/icons/_generated/Answer.tsx","../src/components/icons/_generated/Badge.tsx","../src/components/icons/_generated/Certificate.tsx","../src/components/icons/_generated/Checkpoint.tsx","../src/components/icons/_generated/Completion.tsx","../src/components/icons/_generated/Course.tsx","../src/components/icons/_generated/Diploma.tsx","../src/components/icons/_generated/Exercise.tsx","../src/components/icons/_generated/Flashcard.tsx","../src/components/icons/_generated/Goal.tsx","../src/components/icons/_generated/Highlight.tsx","../src/components/icons/_generated/Lesson.tsx","../src/components/icons/_generated/Milestone.tsx","../src/components/icons/_generated/Module.tsx","../src/components/icons/_generated/Progress.tsx","../src/components/icons/_generated/Question.tsx","../src/components/icons/_generated/Quiz.tsx","../src/components/icons/_generated/Recap.tsx","../src/components/icons/_generated/Streak.tsx","../src/components/icons/_generated/Task.tsx","../src/components/icons/_generated/Unit.tsx","../src/components/icons/_generated/Chat.tsx","../src/components/icons/_generated/Conversation.tsx","../src/components/icons/_generated/Dialogue.tsx","../src/components/icons/_generated/Dictionary.tsx","../src/components/icons/_generated/Feedback.tsx","../src/components/icons/_generated/Fluency.tsx","../src/components/icons/_generated/Grammar.tsx","../src/components/icons/_generated/Language.tsx","../src/components/icons/_generated/Listening.tsx","../src/components/icons/_generated/MemoryCard.tsx","../src/components/icons/_generated/Reading.tsx","../src/components/icons/_generated/Repetition.tsx","../src/components/icons/_generated/Sentence.tsx","../src/components/icons/_generated/Translate.tsx","../src/components/icons/_generated/Vocabulary.tsx","../src/components/icons/_generated/GroupClass.tsx","../src/components/icons/_generated/Live.tsx","../src/components/icons/_generated/Presentation.tsx","../src/components/icons/_generated/PrivateClass.tsx","../src/components/icons/_generated/RecordedClass.tsx","../src/components/icons/_generated/Whiteboard.tsx","../src/components/icons/_generated/Deadline.tsx","../src/components/icons/_generated/Recurring.tsx","../src/components/icons/_generated/Schedule.tsx","../src/components/icons/_generated/DotLive.tsx","../src/components/icons/_generated/Required.tsx","../src/components/icons/_generated/Ai.tsx","../src/components/icons/_generated/Ray.tsx"],"names":["BaseIcon","jsx","jsxs"],"mappings":"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","file":"chunk-JPEDYOV7.js","sourcesContent":["import { forwardRef } from 'react'\nimport type { Ref } from 'react'\nimport { ICON_SIZES } from './sizes'\nimport type { IconProps } from './types'\n\n/**\n * BaseIcon — wrapper SVG base de todos os ícones do Cycle Design.\n *\n * Responsabilidades:\n * - Aplicar width, height e strokeWidth corretos por size\n * - Garantir fill=\"none\" e stroke=\"currentColor\"\n * - Gerenciar acessibilidade (aria-hidden vs aria-label + role)\n * - Aceitar ref para casos avançados\n *\n * NÃO use BaseIcon diretamente — use os ícones nomeados:\n * import { HomeIcon } from 'cycle-design/icons'\n */\nexport const BaseIcon = forwardRef<SVGSVGElement, IconProps>(function BaseIcon(\n props,\n ref: Ref<SVGSVGElement>\n) {\n const { size = 'sm', decorative, children, className, ...rest } = props\n\n const { size: px, stroke } = ICON_SIZES[size]\n\n // Os valores de stroke do Figma são pixels visuais no tamanho renderizado.\n // Como o viewBox é sempre 24×24, o SVG escala o strokeWidth junto com o ícone.\n // Precisamos normalizar para coordenadas do viewBox:\n // strokeWidth no viewBox = visualStroke × (24 / displaySize)\n // Assim o stroke visual final sempre corresponde ao valor do Design System.\n const VIEWBOX_SIZE = 24\n const normalizedStroke = stroke * (VIEWBOX_SIZE / px)\n\n const svgProps = {\n ref,\n width: px,\n height: px,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: normalizedStroke,\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n className,\n ...rest,\n }\n\n if (decorative) {\n return (\n <svg aria-hidden=\"true\" focusable=\"false\" {...svgProps}>\n {children}\n </svg>\n )\n }\n\n // Semântico: aria-label vem de rest (garantido pelo tipo IconProps)\n return (\n <svg role=\"img\" {...svgProps}>\n {children}\n </svg>\n )\n})\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Achievement size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Achievement size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Achievement(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M8 21h8m-4-3v3\"/><path d=\"M5 3h14v8c0 3.9-3.1 7-7 7s-7-3.1-7-7z\"/><path d=\"M5 7H2v4c0 1.7 1.3 3 3 3M19 7h3v4c0 1.7-1.3 3-3 3\"/><path fill=\"currentColor\" d=\"m12 7 .8 2.4h2.5l-2 1.5.7 2.4-2-1.5-2 1.5.7-2.4-2-1.5h2.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Answer size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Answer size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Answer(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Z\"/><path d=\"m8 10 3 3 5-6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Badge size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Badge size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Badge(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m12 2 3.5 3H20v4.5l3 2.5-3 2.5V19h-4.5L12 22l-3.5-3H4v-4.5L1 12l3-2.5V5h4.5z\"/><path d=\"m9 12 2 2 4-4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Certificate size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Certificate size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Certificate(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"M7 8h10M7 12h6\"/><path d=\"m9 21 3-2 3 2v-4H9z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Checkpoint size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Checkpoint size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Checkpoint(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M5 3v18\"/><path d=\"M5 4h13l-4 5 4 5H5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Completion size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Completion size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Completion(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M22 12c0 5.5-4.5 10-10 10S2 17.5 2 12 6.5 2 12 2M16 2.3c2.3.8 4.2 2.5 5.3 4.7\"/><path d=\"m8 12 3 3 5-6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Course size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Course size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Course(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 6h16\"/><path d=\"M19 8H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2Z\"/><path d=\"M8 12h8m-8 3.5h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Diploma size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Diploma size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Diploma(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 4c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2v16c0 1.1-.9 2-2 2H6c-1.1 0-2-.9-2-2z\"/><path d=\"M9 7h6m-6 4h6m-6 4h3\"/><path d=\"M4 18h16\"/><path fill=\"currentColor\" d=\"M12 21a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Exercise size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Exercise size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Exercise(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M6 8H4c-.6 0-1 .4-1 1v6c0 .6.4 1 1 1h2M18 8h2c.6 0 1 .4 1 1v6c0 .6-.4 1-1 1h-2\"/><path d=\"M9 7.5a1.5 1.5 0 1 0-3 0v9a1.5 1.5 0 0 0 3 0zM18 7.5a1.5 1.5 0 0 0-3 0v9a1.5 1.5 0 0 0 3 0z\"/><path d=\"M9 12h6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Flashcard size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Flashcard size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Flashcard(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 5H5a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V8a3 3 0 0 0-3-3Z\"/><path fill=\"currentColor\" d=\"m12.3 9 .8 2.4h2.5l-2 1.5.7 2.4-2-1.5-2 1.5.7-2.4-2-1.5h2.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Goal size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Goal size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Goal(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z\"/><path d=\"M12 17a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z\"/><path fill=\"currentColor\" d=\"M12 13.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Highlight size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Highlight size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Highlight(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m15 3 6 6-11 11H4v-6z\"/><path d=\"M4 20h17M13 5l6 6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Lesson size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Lesson size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Lesson(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 3H5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"m10 7.5 5 2.5-5 2.5z\"/><path d=\"M8 21h8m-4-4v4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Milestone size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Milestone size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Milestone(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m12 3 9 9-9 9-9-9z\"/><path d=\"M12 8v8m-4-4h8\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Module size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Module size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Module(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4.5 3.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75ZM14.5 3.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75ZM4.5 13.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75ZM14.5 13.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75Z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Progress size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Progress size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Progress(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M3 21h18\"/><path d=\"m5 16 4-5 4 3 3-6 5-3\"/><path d=\"M3 3v18\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Question size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Question size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Question(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Z\"/><path d=\"M9.5 9c0-1.4 1.1-2.5 2.5-2.5s2.5 1.1 2.5 2.5c0 1.1-.7 2-1.7 2.4-.5.2-.8.7-.8 1.2v.4\"/><path fill=\"currentColor\" d=\"M12 16.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Quiz size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Quiz size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Quiz(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M18 3H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3Z\"/><path d=\"M9 9c0-1.7 1.3-3 3-3s3 1.3 3 3c0 1.4-.9 2.6-2.1 3-.5.2-.9.6-.9 1.1v.9\"/><path fill=\"currentColor\" d=\"M12 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Recap size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Recap size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Recap(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M2 12C2 6.5 6.5 2 12 2c3.5 0 6.6 1.8 8.4 4.5M22 12c0 5.5-4.5 10-10 10-3.5 0-6.6-1.8-8.4-4.5\"/><path d=\"M20 2v5h-5M4 22v-5h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Streak size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Streak size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Streak(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M8.5 13.5A2.5 2.5 0 0 0 11 11c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a7.001 7.001 0 0 1-11.95 4.95A7 7 0 0 1 5 14c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Task size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Task size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Task(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8z\"/><path d=\"M14 2v6h6\"/><path d=\"m8 13 3 3 5-5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Unit size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Unit size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Unit(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M18 3H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3Z\"/><path d=\"M9 8h6m-6 4h6m-6 4h3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Chat size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Chat size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Chat(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 15c0 .6-.4 1-1 1H7l-4 4V5c0-.6.4-1 1-1h15c.6 0 1 .4 1 1z\"/><path d=\"M8 9h8m-8 3h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Conversation size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Conversation size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Conversation(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 3h12c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2H9l-4 3v-3c-1.1 0-2-.9-2-2V5c0-1.1.9-2 1-2Z\"/><path d=\"M18 8h2c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2h-1v3l-4-3h-3c-1.1 0-2-.9-2-2v-2\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Dialogue size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Dialogue size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Dialogue(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M3 5h10c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2H7l-4 3v-3c-1.1 0-2-.9-2-2V7c0-1.1.9-2 2-2Z\"/><path d=\"M15 8h5c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2h-3v3l-4-3h-3c-1.1 0-2-.9-2-2v-1\"/><path fill=\"currentColor\" d=\"M5 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2M8 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2M11 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Dictionary size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Dictionary size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Dictionary(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 4.5C4 3.1 5.1 2 6.5 2H19v20H6.5C5.1 22 4 20.9 4 19.5z\"/><path d=\"M4 19.5C4 18.1 5.1 17 6.5 17H19M8 7h7m-7 4h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Feedback size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Feedback size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Feedback(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Z\"/><path fill=\"currentColor\" d=\"m12 5 1.2 3.4h3.5l-2.8 2 1 3.4-2.9-2-2.9 2 1-3.4-2.8-2h3.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Fluency size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Fluency size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Fluency(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M2 16c2 0 2-4 4-4s2 4 4 4 2-4 4-4 2 4 4 4 2-4 4-4M16 6l3 3 3-3\"/><path d=\"M19 9V4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Grammar size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Grammar size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Grammar(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 6h16M4 10h12M4 14h8\"/><path d=\"m15 16 2 2 4-4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Language size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Language size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Language(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z\"/><path d=\"M3 12h18M12 3c-2 3-3.5 6-3.5 9s1.5 6 3.5 9M12 3c2 3 3.5 6 3.5 9S14 18 12 21\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Listening size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Listening size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Listening(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M5 10c0-3.9 3.1-7 7-7s7 3.1 7 7\"/><path d=\"M7 12a2 2 0 1 0-4 0v2a2 2 0 1 0 4 0zM21 12a2 2 0 1 0-4 0v2a2 2 0 1 0 4 0z\"/><path d=\"M19 16v2c0 1.1-.9 2-2 2h-3\"/><path d=\"M15 19h-2a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1Z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <MemoryCard size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <MemoryCard size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function MemoryCard(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M16 9V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h4\"/><path d=\"M6 8.5h6m-6 3h2\"/><path d=\"M20 9H10a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2Z\"/><path fill=\"currentColor\" d=\"m15.3 10.6.8 2.4h2.5l-2 1.5.7 2.4-2-1.5-2 1.5.7-2.4-2-1.5h2.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Reading size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Reading size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Reading(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 5.25c3.09 0 5.459.95 7.055 1.896.798.473 1.403.945 1.803 1.294l.066.06-.066.06c-.4.35-1.005.821-1.803 1.294C17.459 10.8 15.09 11.75 12 11.75s-5.459-.95-7.055-1.896A12.3 12.3 0 0 1 3.142 8.56l-.067-.06.067-.06c.4-.35 1.005-.821 1.803-1.294C6.541 6.2 8.91 5.25 12 5.25Z\"/><path d=\"M12 11a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\"/><path d=\"M5 15.5h14m-14 3h9\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Repetition size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Repetition size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Repetition(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m17 2 4 4-4 4\"/><path d=\"M3 11V9c0-1.7 1.3-3 3-3h15\"/><path d=\"m7 22-4-4 4-4\"/><path d=\"M21 13v2c0 1.7-1.3 3-3 3H3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Sentence size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Sentence size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Sentence(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 7h16M4 12h12M4 17h8\"/><path d=\"M19 14v6m0 0-2-2m2 2 2-2\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Translate size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Translate size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Translate(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M3 6h10M8 3v3M5 9c0 2.8 2.7 5 6 5\"/><path d=\"M11 6c-2 3-4 6-6 8\"/><path d=\"m14 13 3 8m0 0 3-8m-3 8h-2.5 5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Vocabulary size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Vocabulary size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Vocabulary(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m4 16 3-8 3 8m-4.5-3h3M14 8h6l-6 8h6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <GroupClass size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <GroupClass size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function GroupClass(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"/><path d=\"M6 21c0-3 2.7-5 6-5s6 2 6 5\"/><path d=\"M5 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"/><path d=\"M2 20c0-2 1.3-3.5 3-3.5 1 0 1.9.5 2.5 1.3\"/><path d=\"M19 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"/><path d=\"M22 20c0-2-1.3-3.5-3-3.5-1 0-1.9.5-2.5 1.3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Live size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Live size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Live(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M5 7c-2 1.8-3 3.3-3 5s1 3.2 3 5M19 7c2 1.8 3 3.3 3 5s-1 3.2-3 5M8.5 10c-1 .7-1.5 1.3-1.5 2s.5 1.3 1.5 2M15.5 10c1 .7 1.5 1.3 1.5 2s-.5 1.3-1.5 2\"/><path fill=\"currentColor\" d=\"M12 13.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3\" stroke=\"none\"/><path d=\"M12 13.5V20\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Presentation size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Presentation size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Presentation(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 3H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"M12 16v6m-4 0h8M7 9h10M7 12h6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <PrivateClass size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <PrivateClass size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function PrivateClass(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M9 10.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z\"/><path d=\"M2 20c0-3.3 3.1-6 7-6\"/><path d=\"M20.5 14h-6a1.5 1.5 0 0 0-1.5 1.5v4a1.5 1.5 0 0 0 1.5 1.5h6a1.5 1.5 0 0 0 1.5-1.5v-4a1.5 1.5 0 0 0-1.5-1.5Z\"/><path d=\"M15 14v-2c0-1.1.9-2 2-2h.5c1.1 0 2 .9 2 2v2\"/><path fill=\"currentColor\" d=\"M17.5 18.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <RecordedClass size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <RecordedClass size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function RecordedClass(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 4H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2Z\"/><path fill=\"currentColor\" stroke=\"none\" d=\"m11 10 3 1.5-3 1.5z\"/><path fill=\"currentColor\" d=\"M18 8.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3\" stroke=\"none\"/><path d=\"M8 21h8m-4-3v3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Whiteboard size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Whiteboard size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Whiteboard(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"m8 11 3-3 3 3 3-3\"/><path d=\"M8 21h8m-4-4v4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Deadline size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Deadline size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Deadline(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 4H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2Z\"/><path d=\"M16 2v4M8 2v4M3 9h18M12 13v3\"/><path fill=\"currentColor\" d=\"M12 20a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Recurring size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Recurring size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Recurring(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m17 2 4 4-4 4\"/><path d=\"M3 10V8c0-1.1.9-2 2-2h16\"/><path d=\"m7 22-4-4 4-4\"/><path d=\"M21 14v2c0 1.1-.9 2-2 2H3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Schedule size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Schedule size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Schedule(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 4H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2Z\"/><path d=\"M16 2v4M8 2v4M3 9h18M7 13h4m-4 3.5h10M13 13h4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <DotLive size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <DotLive size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function DotLive(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path fill=\"currentColor\" stroke=\"none\" d=\"M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Required size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Required size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Required(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z\"/><path d=\"M12 7v5\"/><path fill=\"currentColor\" d=\"M12 17a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Ai size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Ai size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Ai(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M10.142 15.15C10.061 14.839 9.899 14.554 9.672 14.327C9.444 14.099 9.16 13.937 8.849 13.857L3.327 12.433C3.233 12.406 3.15 12.349 3.091 12.271C3.032 12.193 3 12.098 3 12C3 11.902 3.032 11.807 3.091 11.729C3.15 11.651 3.233 11.594 3.327 11.567L8.849 10.142C9.16 10.062 9.444 9.9 9.671 9.673C9.899 9.445 10.061 9.161 10.142 8.85L11.566 3.329C11.592 3.234 11.649 3.151 11.727 3.091C11.805 3.032 11.901 3 11.999 3C12.097 3 12.193 3.032 12.271 3.091C12.349 3.151 12.406 3.234 12.432 3.329L13.855 8.85C13.936 9.162 14.098 9.446 14.325 9.673C14.553 9.901 14.837 10.063 15.148 10.143L20.67 11.566C20.765 11.592 20.848 11.649 20.908 11.727C20.968 11.806 21 11.902 21 12C21 12.099 20.968 12.194 20.908 12.273C20.848 12.351 20.765 12.408 20.67 12.434L15.148 13.857C14.837 13.937 14.553 14.099 14.325 14.327C14.098 14.554 13.936 14.839 13.855 15.15L12.431 20.671C12.405 20.766 12.348 20.849 12.27 20.909C12.192 20.968 12.096 21 11.998 21C11.9 21 11.804 20.968 11.726 20.909C11.648 20.849 11.591 20.766 11.565 20.671L10.142 15.15Z\"/><path d=\"M19.2 3.9V7.5M21 5.7H17.4\"/><path d=\"M4.8 16.5V18.3M5.7 17.4H3.9\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Ray size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Ray size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Ray(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M13 2 9 13h3.5L10 22 20 9h-5l2.5-7z\"/>\n </BaseIcon>\n )\n}\n"]}
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -569,6 +569,16 @@ declare function DotLive(props: IconProps): React__default.JSX.Element;
|
|
|
569
569
|
*/
|
|
570
570
|
declare function Required(props: IconProps): React__default.JSX.Element;
|
|
571
571
|
|
|
572
|
+
/**
|
|
573
|
+
* @example
|
|
574
|
+
* // Decorativo (ícone puramente visual)
|
|
575
|
+
* <Ai size="sm" decorative />
|
|
576
|
+
*
|
|
577
|
+
* // Semântico (requer aria-label)
|
|
578
|
+
* <Ai size="sm" aria-label="descrição do ícone" />
|
|
579
|
+
*/
|
|
580
|
+
declare function Ai(props: IconProps): React__default.JSX.Element;
|
|
581
|
+
|
|
572
582
|
/**
|
|
573
583
|
* @example
|
|
574
584
|
* // Decorativo (ícone puramente visual)
|
|
@@ -579,4 +589,4 @@ declare function Required(props: IconProps): React__default.JSX.Element;
|
|
|
579
589
|
*/
|
|
580
590
|
declare function Ray(props: IconProps): React__default.JSX.Element;
|
|
581
591
|
|
|
582
|
-
export { Achievement, Answer, Badge, Certificate, Chat, Checkpoint, Completion, Conversation, Course, CycleIcon, type CycleIconProps, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, type IconCategory, type IconProps, IconSize, type IconStatus, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard };
|
|
592
|
+
export { Achievement, Ai, Answer, Badge, Certificate, Chat, Checkpoint, Completion, Conversation, Course, CycleIcon, type CycleIconProps, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, type IconCategory, type IconProps, IconSize, type IconStatus, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard };
|
package/dist/icons/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Achievement, Answer, Badge, Certificate, Chat, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from '../chunk-
|
|
1
|
+
export { Achievement, Ai, Answer, Badge, Certificate, Chat, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from '../chunk-JPEDYOV7.js';
|
|
2
2
|
export { CycleIcon, ICON_SIZES } from '../chunk-V7M2NHUO.js';
|
|
3
3
|
import '../chunk-YINJ5YZ5.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cn } from './lib/utils.js';
|
|
2
|
-
export { Achievement, Answer, Badge as BadgeIcon, Certificate, Chat as ChatIcon, Checkpoint, Completion, Conversation, Course, CycleIcon, CycleIconProps, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, IconCategory, IconProps, IconStatus, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress as ProgressIcon, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from './icons/index.js';
|
|
2
|
+
export { Achievement, Ai, Answer, Badge as BadgeIcon, Certificate, Chat as ChatIcon, Checkpoint, Completion, Conversation, Course, CycleIcon, CycleIconProps, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, IconCategory, IconProps, IconStatus, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress as ProgressIcon, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from './icons/index.js';
|
|
3
3
|
export { I as ICON_SIZES, a as IconSize } from './sizes-BZ5ZUk8g.js';
|
|
4
4
|
export { FluencypassIcon, FluencypassLogo, FluencypassLogoProps } from './logos/fluencypass.js';
|
|
5
5
|
export { ClassLogo, GroupTalkLogo, PrivateTalkLogo, ProductLogo } from './logos/product.js';
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { Fab, fabVariants } from './chunk-7NFHHOAE.js';
|
|
|
9
9
|
export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger } from './chunk-YJ4U7ISM.js';
|
|
10
10
|
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './chunk-NOMLQHZS.js';
|
|
11
11
|
export { AudioPlayer } from './chunk-VSRZM7CU.js';
|
|
12
|
-
export { VideoPlayer } from './chunk-
|
|
12
|
+
export { VideoPlayer } from './chunk-C4C5MWPO.js';
|
|
13
13
|
export { Toaster, cycleToast } from './chunk-ELZCZ6ZH.js';
|
|
14
14
|
export { Alert, AlertAction, AlertClose, AlertDescription, AlertTitle, alertVariants } from './chunk-7ZXAU2CD.js';
|
|
15
15
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from './chunk-3EFI7PYC.js';
|
|
@@ -22,7 +22,7 @@ export { FileCard, fileCardVariants } from './chunk-JMNMW54C.js';
|
|
|
22
22
|
export { ChatPanel } from './chunk-L32AMI4K.js';
|
|
23
23
|
export { ChatBubble, chatBubbleVariants } from './chunk-HZJRM5EK.js';
|
|
24
24
|
export { LikeDislike, likeDislikeVariants } from './chunk-F2XA2Z75.js';
|
|
25
|
-
export { Achievement, Answer, Badge as BadgeIcon, Certificate, Chat as ChatIcon, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress as ProgressIcon, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from './chunk-
|
|
25
|
+
export { Achievement, Ai, Answer, Badge as BadgeIcon, Certificate, Chat as ChatIcon, Checkpoint, Completion, Conversation, Course, Deadline, Dialogue, Dictionary, Diploma, DotLive, Exercise, Feedback, Flashcard, Fluency, Goal, Grammar, GroupClass, Highlight, Language, Lesson, Listening, Live, MemoryCard, Milestone, Module, Presentation, PrivateClass, Progress as ProgressIcon, Question, Quiz, Ray, Reading, Recap, RecordedClass, Recurring, Repetition, Required, Schedule, Sentence, Streak, Task, Translate, Unit, Vocabulary, Whiteboard } from './chunk-JPEDYOV7.js';
|
|
26
26
|
export { LiveWaiting } from './chunk-PCLVQPIG.js';
|
|
27
27
|
export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage } from './chunk-MSLQRGSP.js';
|
|
28
28
|
export { CycleIcon, ICON_SIZES } from './chunk-V7M2NHUO.js';
|
package/dist/ui/alert.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Alert, AlertAction, AlertClose, AlertDescription, AlertTitle, alertVariants } from '../chunk-7ZXAU2CD.js';
|
|
2
|
-
import '../chunk-
|
|
2
|
+
import '../chunk-JPEDYOV7.js';
|
|
3
3
|
import '../chunk-V7M2NHUO.js';
|
|
4
4
|
import '../chunk-TYCPXAXF.js';
|
|
5
5
|
import '../chunk-YINJ5YZ5.js';
|
package/dist/ui/audio-player.js
CHANGED
package/dist/ui/like-dislike.js
CHANGED
package/dist/ui/sonner.js
CHANGED
package/dist/ui/spinner.js
CHANGED
package/dist/ui/video-player.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { VideoPlayer } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { VideoPlayer } from '../chunk-C4C5MWPO.js';
|
|
2
|
+
import '../chunk-JPEDYOV7.js';
|
|
3
3
|
import '../chunk-V7M2NHUO.js';
|
|
4
4
|
import '../chunk-TYCPXAXF.js';
|
|
5
5
|
import '../chunk-YINJ5YZ5.js';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/icons/BaseIcon.tsx","../src/components/icons/_generated/Achievement.tsx","../src/components/icons/_generated/Answer.tsx","../src/components/icons/_generated/Badge.tsx","../src/components/icons/_generated/Certificate.tsx","../src/components/icons/_generated/Checkpoint.tsx","../src/components/icons/_generated/Completion.tsx","../src/components/icons/_generated/Course.tsx","../src/components/icons/_generated/Diploma.tsx","../src/components/icons/_generated/Exercise.tsx","../src/components/icons/_generated/Flashcard.tsx","../src/components/icons/_generated/Goal.tsx","../src/components/icons/_generated/Highlight.tsx","../src/components/icons/_generated/Lesson.tsx","../src/components/icons/_generated/Milestone.tsx","../src/components/icons/_generated/Module.tsx","../src/components/icons/_generated/Progress.tsx","../src/components/icons/_generated/Question.tsx","../src/components/icons/_generated/Quiz.tsx","../src/components/icons/_generated/Recap.tsx","../src/components/icons/_generated/Streak.tsx","../src/components/icons/_generated/Task.tsx","../src/components/icons/_generated/Unit.tsx","../src/components/icons/_generated/Chat.tsx","../src/components/icons/_generated/Conversation.tsx","../src/components/icons/_generated/Dialogue.tsx","../src/components/icons/_generated/Dictionary.tsx","../src/components/icons/_generated/Feedback.tsx","../src/components/icons/_generated/Fluency.tsx","../src/components/icons/_generated/Grammar.tsx","../src/components/icons/_generated/Language.tsx","../src/components/icons/_generated/Listening.tsx","../src/components/icons/_generated/MemoryCard.tsx","../src/components/icons/_generated/Reading.tsx","../src/components/icons/_generated/Repetition.tsx","../src/components/icons/_generated/Sentence.tsx","../src/components/icons/_generated/Translate.tsx","../src/components/icons/_generated/Vocabulary.tsx","../src/components/icons/_generated/GroupClass.tsx","../src/components/icons/_generated/Live.tsx","../src/components/icons/_generated/Presentation.tsx","../src/components/icons/_generated/PrivateClass.tsx","../src/components/icons/_generated/RecordedClass.tsx","../src/components/icons/_generated/Whiteboard.tsx","../src/components/icons/_generated/Deadline.tsx","../src/components/icons/_generated/Recurring.tsx","../src/components/icons/_generated/Schedule.tsx","../src/components/icons/_generated/DotLive.tsx","../src/components/icons/_generated/Required.tsx","../src/components/icons/_generated/Ray.tsx"],"names":["BaseIcon","jsx","jsxs"],"mappings":"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","file":"chunk-D4QCYBCD.js","sourcesContent":["import { forwardRef } from 'react'\nimport type { Ref } from 'react'\nimport { ICON_SIZES } from './sizes'\nimport type { IconProps } from './types'\n\n/**\n * BaseIcon — wrapper SVG base de todos os ícones do Cycle Design.\n *\n * Responsabilidades:\n * - Aplicar width, height e strokeWidth corretos por size\n * - Garantir fill=\"none\" e stroke=\"currentColor\"\n * - Gerenciar acessibilidade (aria-hidden vs aria-label + role)\n * - Aceitar ref para casos avançados\n *\n * NÃO use BaseIcon diretamente — use os ícones nomeados:\n * import { HomeIcon } from 'cycle-design/icons'\n */\nexport const BaseIcon = forwardRef<SVGSVGElement, IconProps>(function BaseIcon(\n props,\n ref: Ref<SVGSVGElement>\n) {\n const { size = 'sm', decorative, children, className, ...rest } = props\n\n const { size: px, stroke } = ICON_SIZES[size]\n\n // Os valores de stroke do Figma são pixels visuais no tamanho renderizado.\n // Como o viewBox é sempre 24×24, o SVG escala o strokeWidth junto com o ícone.\n // Precisamos normalizar para coordenadas do viewBox:\n // strokeWidth no viewBox = visualStroke × (24 / displaySize)\n // Assim o stroke visual final sempre corresponde ao valor do Design System.\n const VIEWBOX_SIZE = 24\n const normalizedStroke = stroke * (VIEWBOX_SIZE / px)\n\n const svgProps = {\n ref,\n width: px,\n height: px,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: normalizedStroke,\n strokeLinecap: 'round' as const,\n strokeLinejoin: 'round' as const,\n className,\n ...rest,\n }\n\n if (decorative) {\n return (\n <svg aria-hidden=\"true\" focusable=\"false\" {...svgProps}>\n {children}\n </svg>\n )\n }\n\n // Semântico: aria-label vem de rest (garantido pelo tipo IconProps)\n return (\n <svg role=\"img\" {...svgProps}>\n {children}\n </svg>\n )\n})\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Achievement size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Achievement size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Achievement(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M8 21h8m-4-3v3\"/><path d=\"M5 3h14v8c0 3.9-3.1 7-7 7s-7-3.1-7-7z\"/><path d=\"M5 7H2v4c0 1.7 1.3 3 3 3M19 7h3v4c0 1.7-1.3 3-3 3\"/><path fill=\"currentColor\" d=\"m12 7 .8 2.4h2.5l-2 1.5.7 2.4-2-1.5-2 1.5.7-2.4-2-1.5h2.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Answer size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Answer size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Answer(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Z\"/><path d=\"m8 10 3 3 5-6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Badge size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Badge size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Badge(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m12 2 3.5 3H20v4.5l3 2.5-3 2.5V19h-4.5L12 22l-3.5-3H4v-4.5L1 12l3-2.5V5h4.5z\"/><path d=\"m9 12 2 2 4-4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Certificate size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Certificate size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Certificate(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"M7 8h10M7 12h6\"/><path d=\"m9 21 3-2 3 2v-4H9z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Checkpoint size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Checkpoint size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Checkpoint(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M5 3v18\"/><path d=\"M5 4h13l-4 5 4 5H5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Completion size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Completion size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Completion(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M22 12c0 5.5-4.5 10-10 10S2 17.5 2 12 6.5 2 12 2M16 2.3c2.3.8 4.2 2.5 5.3 4.7\"/><path d=\"m8 12 3 3 5-6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Course size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Course size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Course(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 6h16\"/><path d=\"M19 8H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2Z\"/><path d=\"M8 12h8m-8 3.5h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Diploma size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Diploma size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Diploma(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 4c0-1.1.9-2 2-2h12c1.1 0 2 .9 2 2v16c0 1.1-.9 2-2 2H6c-1.1 0-2-.9-2-2z\"/><path d=\"M9 7h6m-6 4h6m-6 4h3\"/><path d=\"M4 18h16\"/><path fill=\"currentColor\" d=\"M12 21a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Exercise size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Exercise size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Exercise(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M6 8H4c-.6 0-1 .4-1 1v6c0 .6.4 1 1 1h2M18 8h2c.6 0 1 .4 1 1v6c0 .6-.4 1-1 1h-2\"/><path d=\"M9 7.5a1.5 1.5 0 1 0-3 0v9a1.5 1.5 0 0 0 3 0zM18 7.5a1.5 1.5 0 0 0-3 0v9a1.5 1.5 0 0 0 3 0z\"/><path d=\"M9 12h6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Flashcard size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Flashcard size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Flashcard(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 5H5a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3V8a3 3 0 0 0-3-3Z\"/><path fill=\"currentColor\" d=\"m12.3 9 .8 2.4h2.5l-2 1.5.7 2.4-2-1.5-2 1.5.7-2.4-2-1.5h2.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Goal size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Goal size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Goal(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z\"/><path d=\"M12 17a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z\"/><path fill=\"currentColor\" d=\"M12 13.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Highlight size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Highlight size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Highlight(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m15 3 6 6-11 11H4v-6z\"/><path d=\"M4 20h17M13 5l6 6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Lesson size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Lesson size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Lesson(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 3H5a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"m10 7.5 5 2.5-5 2.5z\"/><path d=\"M8 21h8m-4-4v4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Milestone size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Milestone size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Milestone(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m12 3 9 9-9 9-9-9z\"/><path d=\"M12 8v8m-4-4h8\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Module size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Module size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Module(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4.5 3.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75ZM14.5 3.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75ZM4.5 13.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75ZM14.5 13.751h5a.75.75 0 0 1 .75.75v5a.75.75 0 0 1-.75.75h-5a.75.75 0 0 1-.75-.75v-5a.75.75 0 0 1 .75-.75Z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Progress size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Progress size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Progress(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M3 21h18\"/><path d=\"m5 16 4-5 4 3 3-6 5-3\"/><path d=\"M3 3v18\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Question size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Question size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Question(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Z\"/><path d=\"M9.5 9c0-1.4 1.1-2.5 2.5-2.5s2.5 1.1 2.5 2.5c0 1.1-.7 2-1.7 2.4-.5.2-.8.7-.8 1.2v.4\"/><path fill=\"currentColor\" d=\"M12 16.25a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Quiz size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Quiz size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Quiz(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M18 3H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3Z\"/><path d=\"M9 9c0-1.7 1.3-3 3-3s3 1.3 3 3c0 1.4-.9 2.6-2.1 3-.5.2-.9.6-.9 1.1v.9\"/><path fill=\"currentColor\" d=\"M12 18a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Recap size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Recap size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Recap(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M2 12C2 6.5 6.5 2 12 2c3.5 0 6.6 1.8 8.4 4.5M22 12c0 5.5-4.5 10-10 10-3.5 0-6.6-1.8-8.4-4.5\"/><path d=\"M20 2v5h-5M4 22v-5h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Streak size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Streak size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Streak(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M8.5 13.5A2.5 2.5 0 0 0 11 11c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a7.001 7.001 0 0 1-11.95 4.95A7 7 0 0 1 5 14c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Task size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Task size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Task(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8z\"/><path d=\"M14 2v6h6\"/><path d=\"m8 13 3 3 5-5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Unit size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Unit size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Unit(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M18 3H6a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3Z\"/><path d=\"M9 8h6m-6 4h6m-6 4h3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Chat size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Chat size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Chat(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 15c0 .6-.4 1-1 1H7l-4 4V5c0-.6.4-1 1-1h15c.6 0 1 .4 1 1z\"/><path d=\"M8 9h8m-8 3h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Conversation size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Conversation size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Conversation(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 3h12c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2H9l-4 3v-3c-1.1 0-2-.9-2-2V5c0-1.1.9-2 1-2Z\"/><path d=\"M18 8h2c1.1 0 2 .9 2 2v5c0 1.1-.9 2-2 2h-1v3l-4-3h-3c-1.1 0-2-.9-2-2v-2\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Dialogue size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Dialogue size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Dialogue(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M3 5h10c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2H7l-4 3v-3c-1.1 0-2-.9-2-2V7c0-1.1.9-2 2-2Z\"/><path d=\"M15 8h5c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2h-3v3l-4-3h-3c-1.1 0-2-.9-2-2v-1\"/><path fill=\"currentColor\" d=\"M5 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2M8 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2M11 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Dictionary size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Dictionary size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Dictionary(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 4.5C4 3.1 5.1 2 6.5 2H19v20H6.5C5.1 22 4 20.9 4 19.5z\"/><path d=\"M4 19.5C4 18.1 5.1 17 6.5 17H19M8 7h7m-7 4h5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Feedback size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Feedback size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Feedback(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2Z\"/><path fill=\"currentColor\" d=\"m12 5 1.2 3.4h3.5l-2.8 2 1 3.4-2.9-2-2.9 2 1-3.4-2.8-2h3.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Fluency size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Fluency size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Fluency(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M2 16c2 0 2-4 4-4s2 4 4 4 2-4 4-4 2 4 4 4 2-4 4-4M16 6l3 3 3-3\"/><path d=\"M19 9V4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Grammar size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Grammar size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Grammar(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 6h16M4 10h12M4 14h8\"/><path d=\"m15 16 2 2 4-4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Language size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Language size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Language(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z\"/><path d=\"M3 12h18M12 3c-2 3-3.5 6-3.5 9s1.5 6 3.5 9M12 3c2 3 3.5 6 3.5 9S14 18 12 21\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Listening size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Listening size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Listening(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M5 10c0-3.9 3.1-7 7-7s7 3.1 7 7\"/><path d=\"M7 12a2 2 0 1 0-4 0v2a2 2 0 1 0 4 0zM21 12a2 2 0 1 0-4 0v2a2 2 0 1 0 4 0z\"/><path d=\"M19 16v2c0 1.1-.9 2-2 2h-3\"/><path d=\"M15 19h-2a1 1 0 0 0-1 1v1a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1Z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <MemoryCard size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <MemoryCard size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function MemoryCard(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M16 9V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h4\"/><path d=\"M6 8.5h6m-6 3h2\"/><path d=\"M20 9H10a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2Z\"/><path fill=\"currentColor\" d=\"m15.3 10.6.8 2.4h2.5l-2 1.5.7 2.4-2-1.5-2 1.5.7-2.4-2-1.5h2.5z\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Reading size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Reading size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Reading(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 5.25c3.09 0 5.459.95 7.055 1.896.798.473 1.403.945 1.803 1.294l.066.06-.066.06c-.4.35-1.005.821-1.803 1.294C17.459 10.8 15.09 11.75 12 11.75s-5.459-.95-7.055-1.896A12.3 12.3 0 0 1 3.142 8.56l-.067-.06.067-.06c.4-.35 1.005-.821 1.803-1.294C6.541 6.2 8.91 5.25 12 5.25Z\"/><path d=\"M12 11a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\"/><path d=\"M5 15.5h14m-14 3h9\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Repetition size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Repetition size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Repetition(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m17 2 4 4-4 4\"/><path d=\"M3 11V9c0-1.7 1.3-3 3-3h15\"/><path d=\"m7 22-4-4 4-4\"/><path d=\"M21 13v2c0 1.7-1.3 3-3 3H3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Sentence size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Sentence size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Sentence(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M4 7h16M4 12h12M4 17h8\"/><path d=\"M19 14v6m0 0-2-2m2 2 2-2\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Translate size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Translate size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Translate(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M3 6h10M8 3v3M5 9c0 2.8 2.7 5 6 5\"/><path d=\"M11 6c-2 3-4 6-6 8\"/><path d=\"m14 13 3 8m0 0 3-8m-3 8h-2.5 5\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Vocabulary size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Vocabulary size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Vocabulary(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m4 16 3-8 3 8m-4.5-3h3M14 8h6l-6 8h6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <GroupClass size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <GroupClass size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function GroupClass(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\"/><path d=\"M6 21c0-3 2.7-5 6-5s6 2 6 5\"/><path d=\"M5 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"/><path d=\"M2 20c0-2 1.3-3.5 3-3.5 1 0 1.9.5 2.5 1.3\"/><path d=\"M19 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\"/><path d=\"M22 20c0-2-1.3-3.5-3-3.5-1 0-1.9.5-2.5 1.3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Live size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Live size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Live(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M5 7c-2 1.8-3 3.3-3 5s1 3.2 3 5M19 7c2 1.8 3 3.3 3 5s-1 3.2-3 5M8.5 10c-1 .7-1.5 1.3-1.5 2s.5 1.3 1.5 2M15.5 10c1 .7 1.5 1.3 1.5 2s-.5 1.3-1.5 2\"/><path fill=\"currentColor\" d=\"M12 13.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3\" stroke=\"none\"/><path d=\"M12 13.5V20\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Presentation size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Presentation size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Presentation(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 3H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"M12 16v6m-4 0h8M7 9h10M7 12h6\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <PrivateClass size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <PrivateClass size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function PrivateClass(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M9 10.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z\"/><path d=\"M2 20c0-3.3 3.1-6 7-6\"/><path d=\"M20.5 14h-6a1.5 1.5 0 0 0-1.5 1.5v4a1.5 1.5 0 0 0 1.5 1.5h6a1.5 1.5 0 0 0 1.5-1.5v-4a1.5 1.5 0 0 0-1.5-1.5Z\"/><path d=\"M15 14v-2c0-1.1.9-2 2-2h.5c1.1 0 2 .9 2 2v2\"/><path fill=\"currentColor\" d=\"M17.5 18.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <RecordedClass size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <RecordedClass size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function RecordedClass(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 4H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2Z\"/><path fill=\"currentColor\" stroke=\"none\" d=\"m11 10 3 1.5-3 1.5z\"/><path fill=\"currentColor\" d=\"M18 8.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3\" stroke=\"none\"/><path d=\"M8 21h8m-4-3v3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Whiteboard size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Whiteboard size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Whiteboard(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M20 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2Z\"/><path d=\"m8 11 3-3 3 3 3-3\"/><path d=\"M8 21h8m-4-4v4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Deadline size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Deadline size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Deadline(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 4H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2Z\"/><path d=\"M16 2v4M8 2v4M3 9h18M12 13v3\"/><path fill=\"currentColor\" d=\"M12 20a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Recurring size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Recurring size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Recurring(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"m17 2 4 4-4 4\"/><path d=\"M3 10V8c0-1.1.9-2 2-2h16\"/><path d=\"m7 22-4-4 4-4\"/><path d=\"M21 14v2c0 1.1-.9 2-2 2H3\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Schedule size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Schedule size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Schedule(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M19 4H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2Z\"/><path d=\"M16 2v4M8 2v4M3 9h18M7 13h4m-4 3.5h10M13 13h4\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <DotLive size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <DotLive size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function DotLive(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path fill=\"currentColor\" stroke=\"none\" d=\"M12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12Z\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Required size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Required size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Required(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z\"/><path d=\"M12 7v5\"/><path fill=\"currentColor\" d=\"M12 17a1 1 0 1 0 0-2 1 1 0 0 0 0 2\" stroke=\"none\"/>\n </BaseIcon>\n )\n}\n","// AUTO-GENERATED — não edite manualmente\n// Fonte: src/icons/_source → npm run build:icons\nimport React from \"react\"\nimport { BaseIcon } from '../BaseIcon'\nimport type { IconProps } from '../types'\n\n/**\n * @example\n * // Decorativo (ícone puramente visual)\n * <Ray size=\"sm\" decorative />\n *\n * // Semântico (requer aria-label)\n * <Ray size=\"sm\" aria-label=\"descrição do ícone\" />\n */\nexport function Ray(props: IconProps): React.JSX.Element {\n return (\n <BaseIcon {...props}>\n <path d=\"M13 2 9 13h3.5L10 22 20 9h-5l2.5-7z\"/>\n </BaseIcon>\n )\n}\n"]}
|