@fluencypassdevs/cycle 1.2.0 → 1.4.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/bin/mcp.mjs CHANGED
@@ -340,7 +340,7 @@ const COMPONENTS = [
340
340
  {
341
341
  name: "AudioPlayer",
342
342
  import: `import { AudioPlayer } from "@fluencypassdevs/cycle"\nimport type { AudioPlayerRef } from "@fluencypassdevs/cycle"`,
343
- description: "Player de audio (Vidstack). 2 variantes (default, card). Suporta MP3, OGG, HLS. showSpeed=true por padrao. Expoe ref imperativo (play/pause) e callbacks onTimeUpdate/onEnded.",
343
+ description: "Player de audio (Vidstack). 2 variantes (default, card). Suporta MP3, OGG, HLS. showSpeed=true por padrao. Expoe ref imperativo (play/pause), callbacks onTimeUpdate/onEnded e labels para i18n.",
344
344
  props: [
345
345
  { name: "src", type: "string", default: "-" },
346
346
  { name: "variant", type: '"default" | "card"', default: '"default"' },
@@ -348,6 +348,7 @@ const COMPONENTS = [
348
348
  { name: "description", type: "string", default: "-" },
349
349
  { name: "showSpeed", type: "boolean", default: "true" },
350
350
  { name: "startTime", type: "number", default: "-" },
351
+ { name: "labels", type: "AudioPlayerLabels", default: "pt-BR defaults" },
351
352
  { name: "onTimeUpdate", type: "(currentTime: number, duration: number) => void", default: "-" },
352
353
  { name: "onEnded", type: "() => void", default: "-" },
353
354
  { name: "ref", type: "React.Ref<AudioPlayerRef>", default: "-" },
@@ -370,7 +371,7 @@ const ref = useRef<AudioPlayerRef>(null)
370
371
  {
371
372
  name: "VideoPlayer",
372
373
  import: `import { VideoPlayer } from "@fluencypassdevs/cycle"\nimport type { VideoPlayerRef, CaptionTrack } from "@fluencypassdevs/cycle"`,
373
- description: "Player de video (Vidstack). Suporta MP4, WebM, HLS. Chapters, captions/subtitles (multiplos idiomas via CaptionTrack[]), buffering spinner, live indicator, tooltips. Expoe ref imperativo (play/pause) e callbacks onTimeUpdate/onEnded.",
374
+ description: "Player de video (Vidstack). Suporta MP4, WebM, HLS. Chapters, captions/subtitles (multiplos idiomas via CaptionTrack[]), buffering spinner, live indicator, tooltips. Expoe ref imperativo (play/pause), callbacks onTimeUpdate/onEnded e labels para i18n de todos os textos dos controles.",
374
375
  props: [
375
376
  { name: "src", type: "string", default: "-" },
376
377
  { name: "title", type: "string", default: "-" },
@@ -378,6 +379,7 @@ const ref = useRef<AudioPlayerRef>(null)
378
379
  { name: "captions", type: "CaptionTrack[]", default: "-" },
379
380
  { name: "showBuffering", type: "boolean", default: "true" },
380
381
  { name: "startTime", type: "number", default: "-" },
382
+ { name: "labels", type: "VideoPlayerLabels", default: "pt-BR defaults" },
381
383
  { name: "onTimeUpdate", type: "(currentTime: number, duration: number) => void", default: "-" },
382
384
  { name: "onEnded", type: "() => void", default: "-" },
383
385
  { name: "ref", type: "React.Ref<VideoPlayerRef>", default: "-" },
@@ -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-D4QCYBCD.js.map
347
- //# sourceMappingURL=chunk-D4QCYBCD.js.map
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"]}
@@ -5,8 +5,15 @@ import * as React from 'react';
5
5
  import { MediaPlayer, MediaProvider, Time, TimeSlider, SeekButton, useMediaState, PlayButton, useMediaRemote, MuteButton, VolumeSlider } from '@vidstack/react';
6
6
  import '@vidstack/react/player/styles/base.css';
7
7
  import { RotateCcw, Play, Pause, RotateCw, Gauge, Check, VolumeX, Volume1, Volume2 } from 'lucide-react';
8
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
8
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
 
10
+ var defaultAudioLabels = {
11
+ speedNormal: "Normal"
12
+ };
13
+ var AudioLabelsContext = React.createContext(defaultAudioLabels);
14
+ function useAudioLabels() {
15
+ return React.useContext(AudioLabelsContext);
16
+ }
10
17
  var controlBtnClass = "group/btn inline-flex size-9 cursor-pointer items-center justify-center rounded-md text-foreground outline-none transition-colors hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring group-data-[filled]:text-primary-foreground group-data-[filled]:hover:bg-primary-foreground/10";
11
18
  var filledIconClass = "fill-current !stroke-transparent text-foreground group-data-[filled]:text-primary-foreground";
12
19
  var outlineIconClass = "text-foreground group-data-[filled]:text-primary-foreground";
@@ -53,6 +60,7 @@ function AudioSpeedControl() {
53
60
  const playbackRate = useMediaState("playbackRate");
54
61
  const remote = useMediaRemote();
55
62
  const [open, setOpen] = React.useState(false);
63
+ const l = useAudioLabels();
56
64
  const rates = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];
57
65
  return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
58
66
  /* @__PURE__ */ jsx(
@@ -83,7 +91,7 @@ function AudioSpeedControl() {
83
91
  ),
84
92
  children: [
85
93
  /* @__PURE__ */ jsx("span", { className: "size-4 flex items-center justify-center", children: playbackRate === rate && /* @__PURE__ */ jsx(CycleIcon, { icon: Check, size: "2xs", decorative: true, className: "text-popover-foreground" }) }),
86
- /* @__PURE__ */ jsx("span", { className: "font-mono", children: rate === 1 ? "Normal" : `${rate}x` })
94
+ /* @__PURE__ */ jsx("span", { className: "font-mono", children: rate === 1 ? l.speedNormal : `${rate}x` })
87
95
  ]
88
96
  },
89
97
  rate
@@ -105,10 +113,15 @@ var AudioPlayer = React.forwardRef(
105
113
  loop = false,
106
114
  showSpeed = true,
107
115
  startTime,
116
+ labels,
108
117
  onTimeUpdate,
109
118
  onEnded,
110
119
  className
111
120
  }, ref) {
121
+ const resolvedLabels = React.useMemo(
122
+ () => __spreadValues(__spreadValues({}, defaultAudioLabels), labels),
123
+ [labels]
124
+ );
112
125
  const player = React.useRef(null);
113
126
  React.useImperativeHandle(ref, () => ({
114
127
  play() {
@@ -150,7 +163,7 @@ var AudioPlayer = React.forwardRef(
150
163
  onCanPlay: handleCanPlay
151
164
  }, onTimeUpdate ? { onTimeUpdate: handleTimeUpdate } : {}), onEnded ? { onEnded: handleEnded } : {});
152
165
  if (variant === "card") {
153
- return /* @__PURE__ */ jsxs(
166
+ return /* @__PURE__ */ jsx(AudioLabelsContext.Provider, { value: resolvedLabels, children: /* @__PURE__ */ jsxs(
154
167
  MediaPlayer,
155
168
  __spreadProps(__spreadValues({
156
169
  ref: player,
@@ -210,9 +223,9 @@ var AudioPlayer = React.forwardRef(
210
223
  ] })
211
224
  ]
212
225
  })
213
- );
226
+ ) });
214
227
  }
215
- return /* @__PURE__ */ jsxs(
228
+ return /* @__PURE__ */ jsx(AudioLabelsContext.Provider, { value: resolvedLabels, children: /* @__PURE__ */ jsxs(
216
229
  MediaPlayer,
217
230
  __spreadProps(__spreadValues({
218
231
  ref: player,
@@ -240,10 +253,10 @@ var AudioPlayer = React.forwardRef(
240
253
  /* @__PURE__ */ jsx(AudioVolumeControl, {})
241
254
  ]
242
255
  })
243
- );
256
+ ) });
244
257
  }
245
258
  );
246
259
 
247
260
  export { AudioPlayer };
248
- //# sourceMappingURL=chunk-VSRZM7CU.js.map
249
- //# sourceMappingURL=chunk-VSRZM7CU.js.map
261
+ //# sourceMappingURL=chunk-QVOHJ6UN.js.map
262
+ //# sourceMappingURL=chunk-QVOHJ6UN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/audio-player.tsx"],"names":["AudioPlayer"],"mappings":"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","file":"chunk-QVOHJ6UN.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n MediaPlayer,\n MediaProvider,\n TimeSlider,\n VolumeSlider,\n Time,\n PlayButton,\n MuteButton,\n SeekButton,\n useMediaState,\n useMediaRemote,\n type MediaPlayerInstance,\n} from \"@vidstack/react\"\nimport \"@vidstack/react/player/styles/base.css\"\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Volume1,\n RotateCcw,\n RotateCw,\n Gauge,\n Check,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\n\n/* ─── Types ─── */\n\nexport interface AudioPlayerRef {\n play(): void\n pause(): void\n readonly currentTime: number\n readonly duration: number\n}\n\nexport interface AudioPlayerLabels {\n /** Label da velocidade normal no menu (default: \"Normal\") */\n speedNormal?: string\n}\n\nconst defaultAudioLabels: Required<AudioPlayerLabels> = {\n speedNormal: \"Normal\",\n}\n\nexport interface AudioPlayerProps {\n /** URL do audio (mp3, ogg, m3u8) */\n src: string\n /** Nome da track/aula */\n title: string\n /** Subtitulo / nome do curso */\n subtitle?: string\n /** URL da imagem de capa (variante card) */\n coverArt?: string\n /** Alt text da imagem de capa */\n coverArtAlt?: string\n /** Variante de layout */\n variant?: \"default\" | \"card\"\n /** Icones, textos e sliders em primary-foreground — usar com .theme-* */\n filled?: boolean\n /** Iniciar automaticamente */\n autoPlay?: boolean\n /** Iniciar mutado */\n muted?: boolean\n /** Repetir ao terminar */\n loop?: boolean\n /** Exibir controle de velocidade (default: true — EdTech) */\n showSpeed?: boolean\n /** Tempo inicial em segundos — usado para retomar de onde o usuario parou (resume position) */\n startTime?: number\n /** Labels para i18n — permite traduzir os textos dos controles */\n labels?: AudioPlayerLabels\n /** Callback com progresso do audio (currentTime em segundos, duration em segundos) */\n onTimeUpdate?: (currentTime: number, duration: number) => void\n /** Callback disparado quando o audio termina */\n onEnded?: () => void\n className?: string\n}\n\n/* ─── Labels context ─── */\n\nconst AudioLabelsContext = React.createContext<Required<AudioPlayerLabels>>(defaultAudioLabels)\nfunction useAudioLabels() {\n return React.useContext(AudioLabelsContext)\n}\n\n/* ─── Shared styles ─── */\n\nconst controlBtnClass =\n \"group/btn inline-flex size-9 cursor-pointer items-center justify-center rounded-md text-foreground outline-none transition-colors hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring group-data-[filled]:text-primary-foreground group-data-[filled]:hover:bg-primary-foreground/10\"\n\n/** Play, Pause e Volume usam icones filled (solid) — igual YouTube */\nconst filledIconClass =\n \"fill-current !stroke-transparent text-foreground group-data-[filled]:text-primary-foreground\"\n\nconst outlineIconClass =\n \"text-foreground group-data-[filled]:text-primary-foreground\"\n\n/* ─── Sub-components ─── */\n\nfunction AudioPlayControl() {\n const isPaused = useMediaState(\"paused\")\n return (\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 )\n}\n\nfunction AudioSeekBackwardControl() {\n return (\n <SeekButton className={controlBtnClass} seconds={-10}>\n <CycleIcon icon={RotateCcw} size=\"sm\" decorative className={outlineIconClass} />\n </SeekButton>\n )\n}\n\nfunction AudioSeekForwardControl() {\n return (\n <SeekButton className={controlBtnClass} seconds={10}>\n <CycleIcon icon={RotateCw} size=\"sm\" decorative className={outlineIconClass} />\n </SeekButton>\n )\n}\n\nfunction AudioMuteControl() {\n const volume = useMediaState(\"volume\")\n const isMuted = useMediaState(\"muted\")\n\n const Icon = isMuted || volume === 0 ? VolumeX : volume < 0.5 ? Volume1 : Volume2\n\n return (\n <MuteButton className={controlBtnClass}>\n <CycleIcon icon={Icon} size=\"sm\" decorative className={filledIconClass} />\n </MuteButton>\n )\n}\n\nfunction AudioVolumeControl() {\n return (\n <VolumeSlider.Root className=\"group relative hidden h-9 w-20 cursor-pointer touch-none select-none items-center outline-none sm:inline-flex\">\n <VolumeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-accent group-data-[filled]/root:bg-primary-foreground/30\">\n <VolumeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-primary group-data-[filled]/root:bg-primary-foreground\" />\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-primary opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100 group-data-[filled]/root:bg-primary-foreground\" />\n </VolumeSlider.Root>\n )\n}\n\nfunction AudioSeekBar() {\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 <TimeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-accent group-data-[filled]/root:bg-primary-foreground/30\">\n <TimeSlider.Progress className=\"absolute h-full w-[var(--slider-progress)] rounded-full bg-accent-foreground/20 group-data-[filled]/root:bg-primary-foreground/20\" />\n <TimeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-primary group-data-[filled]/root:bg-primary-foreground\" />\n </TimeSlider.Track>\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-primary opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100 group-data-[filled]/root:bg-primary-foreground\" />\n\n {/* Time preview on hover */}\n <TimeSlider.Preview className=\"pointer-events-none flex flex-col items-center opacity-0 transition-opacity duration-200 data-[visible]:opacity-100\">\n <TimeSlider.Value className=\"rounded bg-popover px-1.5 py-0.5 text-[11px] font-mono text-popover-foreground border border-border shadow-sm\" />\n </TimeSlider.Preview>\n </TimeSlider.Root>\n )\n}\n\nfunction AudioTimeDisplay() {\n return (\n <div className=\"flex items-center gap-1 text-xs font-mono text-muted-foreground tabular-nums group-data-[filled]:text-primary-foreground/80\">\n <Time type=\"current\" />\n <span>/</span>\n <Time type=\"duration\" />\n </div>\n )\n}\n\nfunction AudioSpeedControl() {\n const playbackRate = useMediaState(\"playbackRate\")\n const remote = useMediaRemote()\n const [open, setOpen] = React.useState(false)\n const l = useAudioLabels()\n\n const rates = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]\n\n return (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={controlBtnClass}\n >\n {playbackRate === 1 ? (\n <CycleIcon icon={Gauge} size=\"sm\" decorative className={outlineIconClass} />\n ) : (\n <span className=\"text-xs font-mono font-semibold text-foreground group-data-[filled]:text-primary-foreground\">{playbackRate}x</span>\n )}\n </button>\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-border bg-popover p-1 shadow-lg\">\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-popover-foreground/80 transition-colors hover:bg-accent hover:text-popover-foreground\",\n playbackRate === rate && \"text-popover-foreground 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-popover-foreground\" />}\n </span>\n <span className=\"font-mono\">{rate === 1 ? l.speedNormal : `${rate}x`}</span>\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n )\n}\n\n/* ─── Main component ─── */\n\nexport const AudioPlayer = React.forwardRef<AudioPlayerRef, AudioPlayerProps>(\n function AudioPlayer(\n {\n src,\n title,\n subtitle,\n coverArt,\n coverArtAlt = \"\",\n variant = \"default\",\n filled = false,\n autoPlay = false,\n muted = false,\n loop = false,\n showSpeed = true,\n startTime,\n labels,\n onTimeUpdate,\n onEnded,\n className,\n },\n ref\n ) {\n const resolvedLabels = React.useMemo<Required<AudioPlayerLabels>>(\n () => ({ ...defaultAudioLabels, ...labels }),\n [labels]\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\n if (variant === \"card\") {\n return (\n <AudioLabelsContext.Provider value={resolvedLabels}>\n <MediaPlayer\n ref={player}\n src={src}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n viewType=\"audio\"\n data-filled={filled ? \"\" : undefined}\n style={filled ? { '--primary-foreground': 'var(--secondary-foreground)' } as Record<string, string> : undefined}\n className={cn(\n \"group/root group !block w-full rounded-xl border border-border bg-card p-4 shadow-sm md:p-6\",\n className\n )}\n {...playerEvents}\n >\n <MediaProvider className=\"!hidden\" />\n\n {/* Top: cover art + text */}\n <div className=\"flex gap-4 mb-4 md:gap-5 md:mb-6\">\n {coverArt && (\n <img\n src={coverArt}\n alt={coverArtAlt}\n className=\"size-16 shrink-0 rounded-lg object-cover bg-muted md:size-24 md:rounded-xl\"\n />\n )}\n <div className=\"flex min-w-0 flex-col justify-center\">\n <p className={cn(\n \"truncate heading-md md:heading-xl\",\n filled ? \"text-primary-foreground\" : \"text-card-foreground\"\n )}>{title}</p>\n {subtitle && (\n <p className={cn(\n \"truncate body-md md:body-lg\",\n filled ? \"text-primary-foreground/70\" : \"text-muted-foreground\"\n )}>{subtitle}</p>\n )}\n </div>\n </div>\n\n {/* Seek bar */}\n <div className=\"flex w-full items-center\">\n <AudioSeekBar />\n </div>\n\n {/* Time */}\n <div className=\"flex items-center justify-between px-0.5 -mt-1 mb-1 md:mb-2\">\n <div className={cn(\n \"text-[11px] font-mono tabular-nums md:text-xs\",\n filled ? \"text-primary-foreground/80\" : \"text-muted-foreground\"\n )}>\n <Time type=\"current\" />\n </div>\n <div className={cn(\n \"text-[11px] font-mono tabular-nums md:text-xs\",\n filled ? \"text-primary-foreground/80\" : \"text-muted-foreground\"\n )}>\n <Time type=\"duration\" />\n </div>\n </div>\n\n {/* Controls */}\n <div className=\"flex items-center gap-1 md:gap-2\">\n <AudioSeekBackwardControl />\n <AudioPlayControl />\n <AudioSeekForwardControl />\n\n <div className=\"flex-1\" />\n\n {showSpeed && <AudioSpeedControl />}\n <AudioMuteControl />\n <AudioVolumeControl />\n </div>\n </MediaPlayer>\n </AudioLabelsContext.Provider>\n )\n }\n\n // Default variant (compact bar)\n return (\n <AudioLabelsContext.Provider value={resolvedLabels}>\n <MediaPlayer\n ref={player}\n src={src}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n viewType=\"audio\"\n data-filled={filled ? \"\" : undefined}\n style={filled ? { '--primary-foreground': 'var(--secondary-foreground)' } as Record<string, string> : undefined}\n className={cn(\n \"group/root group !flex w-full items-center gap-1.5 rounded-xl border border-border bg-card px-2 py-1.5 shadow-sm\",\n className\n )}\n {...playerEvents}\n >\n <MediaProvider className=\"!hidden\" />\n\n {/* Left controls */}\n <AudioSeekBackwardControl />\n <AudioPlayControl />\n <AudioSeekForwardControl />\n\n {/* Seek bar */}\n <div className=\"flex-1 px-1\">\n <AudioSeekBar />\n </div>\n\n {/* Time */}\n <AudioTimeDisplay />\n\n {/* Right controls */}\n {showSpeed && <AudioSpeedControl />}\n <AudioMuteControl />\n <AudioVolumeControl />\n </MediaPlayer>\n </AudioLabelsContext.Provider>\n )\n }\n)\n"]}