@mieweb/ui 0.7.2-dev.0 → 0.7.2-dev.1

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.
Files changed (103) hide show
  1. package/dist/CsvBlock-OTFG3PYZ.cjs +15 -0
  2. package/dist/{CsvBlock-LVJARITD.cjs.map → CsvBlock-OTFG3PYZ.cjs.map} +1 -1
  3. package/dist/CsvBlock-PUSTBQ5B.js +6 -0
  4. package/dist/{CsvBlock-VTYNQ75L.js.map → CsvBlock-PUSTBQ5B.js.map} +1 -1
  5. package/dist/HtmlPreviewBlock-QHLSIMWJ.cjs +15 -0
  6. package/dist/{HtmlPreviewBlock-F33P37UD.cjs.map → HtmlPreviewBlock-QHLSIMWJ.cjs.map} +1 -1
  7. package/dist/HtmlPreviewBlock-YF2YVKKX.js +6 -0
  8. package/dist/{HtmlPreviewBlock-N4PPVJLJ.js.map → HtmlPreviewBlock-YF2YVKKX.js.map} +1 -1
  9. package/dist/MermaidBlock-H3TWNC4D.js +6 -0
  10. package/dist/{MermaidBlock-HUT53CRG.js.map → MermaidBlock-H3TWNC4D.js.map} +1 -1
  11. package/dist/MermaidBlock-ZLLBO3VY.cjs +15 -0
  12. package/dist/{MermaidBlock-G5X4FPUN.cjs.map → MermaidBlock-ZLLBO3VY.cjs.map} +1 -1
  13. package/dist/SurveyBlock-JLHS3YQD.js +6 -0
  14. package/dist/{SurveyBlock-PM3ZMWWR.js.map → SurveyBlock-JLHS3YQD.js.map} +1 -1
  15. package/dist/SurveyBlock-M2ZRTGVJ.cjs +15 -0
  16. package/dist/{SurveyBlock-ORTPGA5T.cjs.map → SurveyBlock-M2ZRTGVJ.cjs.map} +1 -1
  17. package/dist/{chunk-6QVI6DAO.cjs → chunk-4CUFXCC5.cjs} +5 -5
  18. package/dist/{chunk-6QVI6DAO.cjs.map → chunk-4CUFXCC5.cjs.map} +1 -1
  19. package/dist/{chunk-6OCYG6J2.js → chunk-5J5PEUUA.js} +4 -4
  20. package/dist/{chunk-6OCYG6J2.js.map → chunk-5J5PEUUA.js.map} +1 -1
  21. package/dist/{chunk-WRYZ2752.js → chunk-D2GID3YK.js} +29 -6
  22. package/dist/chunk-D2GID3YK.js.map +1 -0
  23. package/dist/{chunk-VE6OUO7X.js → chunk-DWCYEPTT.js} +3 -3
  24. package/dist/{chunk-VE6OUO7X.js.map → chunk-DWCYEPTT.js.map} +1 -1
  25. package/dist/{chunk-NU6QKULE.js → chunk-EHQ77LL5.js} +3 -3
  26. package/dist/{chunk-NU6QKULE.js.map → chunk-EHQ77LL5.js.map} +1 -1
  27. package/dist/{chunk-PS5INHGC.js → chunk-EMMYFHOT.js} +3 -3
  28. package/dist/{chunk-PS5INHGC.js.map → chunk-EMMYFHOT.js.map} +1 -1
  29. package/dist/{chunk-ABAOZASX.cjs → chunk-FN6VHMLM.cjs} +8 -8
  30. package/dist/{chunk-ABAOZASX.cjs.map → chunk-FN6VHMLM.cjs.map} +1 -1
  31. package/dist/{chunk-H3HF36ZL.js → chunk-FPVRQCCL.js} +3 -3
  32. package/dist/{chunk-H3HF36ZL.js.map → chunk-FPVRQCCL.js.map} +1 -1
  33. package/dist/{chunk-5BDCQBYW.js → chunk-FTRGZOVJ.js} +3 -3
  34. package/dist/{chunk-5BDCQBYW.js.map → chunk-FTRGZOVJ.js.map} +1 -1
  35. package/dist/{chunk-7EB7665B.cjs → chunk-H7QSGFMZ.cjs} +8 -8
  36. package/dist/{chunk-7EB7665B.cjs.map → chunk-H7QSGFMZ.cjs.map} +1 -1
  37. package/dist/{chunk-OGPJ3LRF.cjs → chunk-JP5SGIXA.cjs} +4 -4
  38. package/dist/{chunk-OGPJ3LRF.cjs.map → chunk-JP5SGIXA.cjs.map} +1 -1
  39. package/dist/{chunk-TU36DBH2.cjs → chunk-K4S4FAYX.cjs} +9 -9
  40. package/dist/{chunk-TU36DBH2.cjs.map → chunk-K4S4FAYX.cjs.map} +1 -1
  41. package/dist/{chunk-3SRBIXQX.js → chunk-KRGKPUJH.js} +3 -3
  42. package/dist/{chunk-3SRBIXQX.js.map → chunk-KRGKPUJH.js.map} +1 -1
  43. package/dist/{chunk-NGLI2MSM.js → chunk-LC7YHZXM.js} +4 -4
  44. package/dist/{chunk-NGLI2MSM.js.map → chunk-LC7YHZXM.js.map} +1 -1
  45. package/dist/{chunk-6OQE4ZMG.cjs → chunk-LJBWCUKP.cjs} +8 -8
  46. package/dist/{chunk-6OQE4ZMG.cjs.map → chunk-LJBWCUKP.cjs.map} +1 -1
  47. package/dist/{chunk-BX5ZODPF.js → chunk-N3Y43KOB.js} +3 -3
  48. package/dist/{chunk-BX5ZODPF.js.map → chunk-N3Y43KOB.js.map} +1 -1
  49. package/dist/{chunk-RZFSJD67.js → chunk-NLBT5O2X.js} +3 -3
  50. package/dist/{chunk-RZFSJD67.js.map → chunk-NLBT5O2X.js.map} +1 -1
  51. package/dist/{chunk-VWCMOWGH.cjs → chunk-NQ2D2V6O.cjs} +16 -16
  52. package/dist/{chunk-VWCMOWGH.cjs.map → chunk-NQ2D2V6O.cjs.map} +1 -1
  53. package/dist/{chunk-7AMOKHTW.cjs → chunk-P3JEMF6E.cjs} +4 -4
  54. package/dist/{chunk-7AMOKHTW.cjs.map → chunk-P3JEMF6E.cjs.map} +1 -1
  55. package/dist/{chunk-M26KJKZG.cjs → chunk-RDGRKYQ5.cjs} +29 -6
  56. package/dist/chunk-RDGRKYQ5.cjs.map +1 -0
  57. package/dist/{chunk-Q5VBO3I5.cjs → chunk-SYIFEJSF.cjs} +26 -26
  58. package/dist/{chunk-Q5VBO3I5.cjs.map → chunk-SYIFEJSF.cjs.map} +1 -1
  59. package/dist/{chunk-CKRRJO7T.cjs → chunk-TVLZZI5Q.cjs} +5 -5
  60. package/dist/{chunk-CKRRJO7T.cjs.map → chunk-TVLZZI5Q.cjs.map} +1 -1
  61. package/dist/{chunk-QI2SB6U3.cjs → chunk-URHXR5SC.cjs} +14 -14
  62. package/dist/{chunk-QI2SB6U3.cjs.map → chunk-URHXR5SC.cjs.map} +1 -1
  63. package/dist/{chunk-MWPPOX6F.js → chunk-UZ5NGGMI.js} +4 -4
  64. package/dist/{chunk-MWPPOX6F.js.map → chunk-UZ5NGGMI.js.map} +1 -1
  65. package/dist/{chunk-RUEEDOE3.cjs → chunk-YIXTGWT4.cjs} +5 -5
  66. package/dist/{chunk-RUEEDOE3.cjs.map → chunk-YIXTGWT4.cjs.map} +1 -1
  67. package/dist/{chunk-OLFTGCGD.js → chunk-Z4PECE5S.js} +7 -7
  68. package/dist/{chunk-OLFTGCGD.js.map → chunk-Z4PECE5S.js.map} +1 -1
  69. package/dist/components/AlertDialog/index.cjs +3 -3
  70. package/dist/components/AlertDialog/index.js +2 -2
  71. package/dist/components/Button/index.cjs +3 -3
  72. package/dist/components/Button/index.js +1 -1
  73. package/dist/components/FloatingWindow/index.cjs +4 -4
  74. package/dist/components/FloatingWindow/index.js +2 -2
  75. package/dist/components/Markdown/index.cjs +16 -16
  76. package/dist/components/Markdown/index.js +7 -7
  77. package/dist/components/MediaEditor/index.cjs +8 -8
  78. package/dist/components/MediaEditor/index.js +3 -3
  79. package/dist/components/MediaPlayer/index.cjs +5 -5
  80. package/dist/components/MediaPlayer/index.js +2 -2
  81. package/dist/components/RichTextEditor/index.cjs +5 -5
  82. package/dist/components/RichTextEditor/index.js +2 -2
  83. package/dist/datavis.cjs +2 -2
  84. package/dist/datavis.js +1 -1
  85. package/dist/esheet.cjs +5 -5
  86. package/dist/esheet.js +2 -2
  87. package/dist/index.cjs +324 -265
  88. package/dist/index.cjs.map +1 -1
  89. package/dist/index.d.cts +34 -1
  90. package/dist/index.d.ts +34 -1
  91. package/dist/index.js +75 -17
  92. package/dist/index.js.map +1 -1
  93. package/package.json +1 -1
  94. package/dist/CsvBlock-LVJARITD.cjs +0 -15
  95. package/dist/CsvBlock-VTYNQ75L.js +0 -6
  96. package/dist/HtmlPreviewBlock-F33P37UD.cjs +0 -15
  97. package/dist/HtmlPreviewBlock-N4PPVJLJ.js +0 -6
  98. package/dist/MermaidBlock-G5X4FPUN.cjs +0 -15
  99. package/dist/MermaidBlock-HUT53CRG.js +0 -6
  100. package/dist/SurveyBlock-ORTPGA5T.cjs +0 -15
  101. package/dist/SurveyBlock-PM3ZMWWR.js +0 -6
  102. package/dist/chunk-M26KJKZG.cjs.map +0 -1
  103. package/dist/chunk-WRYZ2752.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkRUEEDOE3_cjs = require('./chunk-RUEEDOE3.cjs');
3
+ var chunkYIXTGWT4_cjs = require('./chunk-YIXTGWT4.cjs');
4
4
  var DOMPurify = require('dompurify');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -130,7 +130,7 @@ var MermaidBlock = ({ code, id }) => {
130
130
  return () => observer.disconnect();
131
131
  }, [render]);
132
132
  return /* @__PURE__ */ jsxRuntime.jsx(
133
- chunkRUEEDOE3_cjs.FenceBlock,
133
+ chunkYIXTGWT4_cjs.FenceBlock,
134
134
  {
135
135
  code,
136
136
  language: "mermaid",
@@ -150,5 +150,5 @@ var MermaidBlock = ({ code, id }) => {
150
150
  };
151
151
 
152
152
  exports.MermaidBlock = MermaidBlock;
153
- //# sourceMappingURL=chunk-7AMOKHTW.cjs.map
154
- //# sourceMappingURL=chunk-7AMOKHTW.cjs.map
153
+ //# sourceMappingURL=chunk-P3JEMF6E.cjs.map
154
+ //# sourceMappingURL=chunk-P3JEMF6E.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Markdown/MermaidBlock.tsx"],"names":["DOMPurify","useState","useMemo","useCallback","useEffect","jsx","FenceBlock"],"mappings":"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","file":"chunk-7AMOKHTW.cjs","sourcesContent":["/**\n * MermaidBlock — Renders Mermaid diagrams.\n * Requires `mermaid` to be installed by the consumer (optional peer dependency).\n */\nimport DOMPurify from 'dompurify';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface MermaidBlockProps {\n code: string;\n id: string;\n}\n\ntype MermaidApi = {\n initialize: (config: Record<string, unknown>) => void;\n parse: (text: string) => Promise<unknown>;\n render: (id: string, text: string) => Promise<{ svg: string }>;\n};\n\nlet mermaidInstance: MermaidApi | null = null;\nlet mermaidReady: Promise<MermaidApi> | null = null;\nlet mermaidTheme: 'dark' | 'default' = 'default';\n\nfunction currentTheme(): 'dark' | 'default' {\n return document.documentElement.classList.contains('dark') ||\n document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'default';\n}\n\nfunction buildConfig(theme: 'dark' | 'default'): Record<string, unknown> {\n const base: Record<string, unknown> = {\n startOnLoad: false,\n theme,\n securityLevel: 'strict',\n };\n if (theme === 'dark') {\n base.themeVariables = {\n nodeBorder: '#6b7280',\n mainBkg: '#4a4a4a',\n nodeTextColor: '#ffffff',\n clusterBkg: '#374151',\n titleColor: '#ffffff',\n edgeLabelBackground: '#374151',\n lineColor: '#9ca3af',\n };\n }\n return base;\n}\n\nasync function getMermaid(): Promise<MermaidApi> {\n const theme = currentTheme();\n if (mermaidInstance) {\n if (theme !== mermaidTheme) {\n mermaidTheme = theme;\n mermaidInstance.initialize(buildConfig(theme));\n }\n return mermaidInstance;\n }\n if (!mermaidReady) {\n mermaidReady = import(/* @vite-ignore */ 'mermaid').then((mod) => {\n const m = (mod as { default: MermaidApi }).default;\n mermaidTheme = currentTheme();\n m.initialize(buildConfig(mermaidTheme));\n mermaidInstance = m;\n return m;\n });\n }\n return mermaidReady;\n}\n\nfunction sanitiseSvg(svg: string): string {\n return DOMPurify.sanitize(svg, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // Allow <style> so mermaid's embedded CSS applies, and <foreignObject>\n // so node label text renders (mermaid escapes its content in strict mode).\n ADD_TAGS: ['style', 'foreignObject'],\n ADD_ATTR: [\n 'style',\n 'class',\n 'dominant-baseline',\n 'text-anchor',\n 'font-size',\n 'font-family',\n 'marker-end',\n 'marker-start',\n 'marker-mid',\n 'stroke-dasharray',\n 'stroke-width',\n ],\n FORBID_TAGS: ['script'],\n FORBID_ATTR: ['onload', 'onerror', 'onclick', 'onmouseover'],\n }) as string;\n}\n\nexport const MermaidBlock: React.FC<MermaidBlockProps> = ({ code, id }) => {\n const [svg, setSvg] = useState<string>('');\n const [error, setError] = useState<string>('');\n const [loading, setLoading] = useState(true);\n\n // Derive an accessible label from the diagram's declared type (first keyword).\n const diagramLabel = useMemo(() => {\n const firstWord =\n code\n .trim()\n .split(/[\\s\\n]/)[0]\n ?.toLowerCase() ?? '';\n const typeMap: Record<string, string> = {\n graph: 'Flowchart',\n flowchart: 'Flowchart',\n sequencediagram: 'Sequence diagram',\n classdiagram: 'Class diagram',\n statediagram: 'State diagram',\n 'statediagram-v2': 'State diagram',\n erdiagram: 'Entity relationship diagram',\n gantt: 'Gantt chart',\n pie: 'Pie chart',\n journey: 'User journey diagram',\n gitgraph: 'Git graph',\n mindmap: 'Mind map',\n timeline: 'Timeline',\n quadrantchart: 'Quadrant chart',\n };\n return `${typeMap[firstWord] ?? 'Mermaid'} diagram`;\n }, [code]);\n\n const render = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const mermaid = await getMermaid();\n await mermaid.parse(code);\n const { svg: rendered } = await mermaid.render(`mermaid-${id}`, code);\n setSvg(sanitiseSvg(rendered));\n } catch (err) {\n setError((err as Error).message ?? 'Failed to render diagram');\n } finally {\n setLoading(false);\n }\n }, [code, id]);\n\n useEffect(() => {\n void render();\n }, [render]);\n\n // Re-render when the page theme changes (dark ↔ light)\n useEffect(() => {\n const observer = new MutationObserver(() => void render());\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-theme'],\n });\n return () => observer.disconnect();\n }, [render]);\n\n return (\n <FenceBlock\n code={code}\n language=\"mermaid\"\n supportsRawView\n error={error || undefined}\n >\n {loading ? (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"border-primary-500 h-6 w-6 animate-spin rounded-full border-2 border-t-transparent\" />\n </div>\n ) : (\n <div\n className=\"mermaid-svg flex justify-center p-4\"\n role=\"img\"\n aria-label={diagramLabel}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )}\n </FenceBlock>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Markdown/MermaidBlock.tsx"],"names":["DOMPurify","useState","useMemo","useCallback","useEffect","jsx","FenceBlock"],"mappings":"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","file":"chunk-P3JEMF6E.cjs","sourcesContent":["/**\n * MermaidBlock — Renders Mermaid diagrams.\n * Requires `mermaid` to be installed by the consumer (optional peer dependency).\n */\nimport DOMPurify from 'dompurify';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface MermaidBlockProps {\n code: string;\n id: string;\n}\n\ntype MermaidApi = {\n initialize: (config: Record<string, unknown>) => void;\n parse: (text: string) => Promise<unknown>;\n render: (id: string, text: string) => Promise<{ svg: string }>;\n};\n\nlet mermaidInstance: MermaidApi | null = null;\nlet mermaidReady: Promise<MermaidApi> | null = null;\nlet mermaidTheme: 'dark' | 'default' = 'default';\n\nfunction currentTheme(): 'dark' | 'default' {\n return document.documentElement.classList.contains('dark') ||\n document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'default';\n}\n\nfunction buildConfig(theme: 'dark' | 'default'): Record<string, unknown> {\n const base: Record<string, unknown> = {\n startOnLoad: false,\n theme,\n securityLevel: 'strict',\n };\n if (theme === 'dark') {\n base.themeVariables = {\n nodeBorder: '#6b7280',\n mainBkg: '#4a4a4a',\n nodeTextColor: '#ffffff',\n clusterBkg: '#374151',\n titleColor: '#ffffff',\n edgeLabelBackground: '#374151',\n lineColor: '#9ca3af',\n };\n }\n return base;\n}\n\nasync function getMermaid(): Promise<MermaidApi> {\n const theme = currentTheme();\n if (mermaidInstance) {\n if (theme !== mermaidTheme) {\n mermaidTheme = theme;\n mermaidInstance.initialize(buildConfig(theme));\n }\n return mermaidInstance;\n }\n if (!mermaidReady) {\n mermaidReady = import(/* @vite-ignore */ 'mermaid').then((mod) => {\n const m = (mod as { default: MermaidApi }).default;\n mermaidTheme = currentTheme();\n m.initialize(buildConfig(mermaidTheme));\n mermaidInstance = m;\n return m;\n });\n }\n return mermaidReady;\n}\n\nfunction sanitiseSvg(svg: string): string {\n return DOMPurify.sanitize(svg, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // Allow <style> so mermaid's embedded CSS applies, and <foreignObject>\n // so node label text renders (mermaid escapes its content in strict mode).\n ADD_TAGS: ['style', 'foreignObject'],\n ADD_ATTR: [\n 'style',\n 'class',\n 'dominant-baseline',\n 'text-anchor',\n 'font-size',\n 'font-family',\n 'marker-end',\n 'marker-start',\n 'marker-mid',\n 'stroke-dasharray',\n 'stroke-width',\n ],\n FORBID_TAGS: ['script'],\n FORBID_ATTR: ['onload', 'onerror', 'onclick', 'onmouseover'],\n }) as string;\n}\n\nexport const MermaidBlock: React.FC<MermaidBlockProps> = ({ code, id }) => {\n const [svg, setSvg] = useState<string>('');\n const [error, setError] = useState<string>('');\n const [loading, setLoading] = useState(true);\n\n // Derive an accessible label from the diagram's declared type (first keyword).\n const diagramLabel = useMemo(() => {\n const firstWord =\n code\n .trim()\n .split(/[\\s\\n]/)[0]\n ?.toLowerCase() ?? '';\n const typeMap: Record<string, string> = {\n graph: 'Flowchart',\n flowchart: 'Flowchart',\n sequencediagram: 'Sequence diagram',\n classdiagram: 'Class diagram',\n statediagram: 'State diagram',\n 'statediagram-v2': 'State diagram',\n erdiagram: 'Entity relationship diagram',\n gantt: 'Gantt chart',\n pie: 'Pie chart',\n journey: 'User journey diagram',\n gitgraph: 'Git graph',\n mindmap: 'Mind map',\n timeline: 'Timeline',\n quadrantchart: 'Quadrant chart',\n };\n return `${typeMap[firstWord] ?? 'Mermaid'} diagram`;\n }, [code]);\n\n const render = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const mermaid = await getMermaid();\n await mermaid.parse(code);\n const { svg: rendered } = await mermaid.render(`mermaid-${id}`, code);\n setSvg(sanitiseSvg(rendered));\n } catch (err) {\n setError((err as Error).message ?? 'Failed to render diagram');\n } finally {\n setLoading(false);\n }\n }, [code, id]);\n\n useEffect(() => {\n void render();\n }, [render]);\n\n // Re-render when the page theme changes (dark ↔ light)\n useEffect(() => {\n const observer = new MutationObserver(() => void render());\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-theme'],\n });\n return () => observer.disconnect();\n }, [render]);\n\n return (\n <FenceBlock\n code={code}\n language=\"mermaid\"\n supportsRawView\n error={error || undefined}\n >\n {loading ? (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"border-primary-500 h-6 w-6 animate-spin rounded-full border-2 border-t-transparent\" />\n </div>\n ) : (\n <div\n className=\"mermaid-svg flex justify-center p-4\"\n role=\"img\"\n aria-label={diagramLabel}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )}\n </FenceBlock>\n );\n};\n"]}
@@ -29,6 +29,7 @@ var buttonVariants = classVarianceAuthority.cva(
29
29
  // Base styles
30
30
  [
31
31
  "inline-flex items-center justify-center gap-2",
32
+ "min-w-0 whitespace-nowrap",
32
33
  "font-semibold transition-all duration-200",
33
34
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
34
35
  "disabled:pointer-events-none disabled:opacity-50",
@@ -108,9 +109,30 @@ var Button = React__namespace.forwardRef(
108
109
  loadingText,
109
110
  disabled,
110
111
  children,
112
+ title,
111
113
  ...props
112
114
  }, ref) => {
113
115
  const resolvedSize = size ?? "md";
116
+ const labelRef = React__namespace.useRef(null);
117
+ const innerRef = React__namespace.useRef(null);
118
+ React__namespace.useImperativeHandle(ref, () => innerRef.current);
119
+ React__namespace.useLayoutEffect(() => {
120
+ const label = labelRef.current;
121
+ const button = innerRef.current;
122
+ if (!label || !button || title !== void 0) return;
123
+ const update = () => {
124
+ if (label.scrollWidth > label.clientWidth) {
125
+ button.title = label.textContent ?? "";
126
+ } else {
127
+ button.removeAttribute("title");
128
+ }
129
+ };
130
+ update();
131
+ if (typeof globalThis.ResizeObserver === "undefined") return;
132
+ const observer = new globalThis.ResizeObserver(update);
133
+ observer.observe(label);
134
+ return () => observer.disconnect();
135
+ }, [title, children, isLoading, loadingText]);
114
136
  return /* @__PURE__ */ jsxRuntime.jsx(
115
137
  "button",
116
138
  {
@@ -120,16 +142,17 @@ var Button = React__namespace.forwardRef(
120
142
  buttonVariants({ variant, size: resolvedSize, fullWidth }),
121
143
  className
122
144
  ),
123
- ref,
145
+ ref: innerRef,
124
146
  disabled: disabled || isLoading,
125
147
  "aria-busy": isLoading,
148
+ title,
126
149
  ...props,
127
150
  children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
128
151
  /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, {}),
129
- loadingText || children
152
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ref: labelRef, "data-slot": "button-label", className: "truncate", children: loadingText || children })
130
153
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
131
154
  React__namespace.isValidElement(leftIcon) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: leftIcon }),
132
- children,
155
+ /* @__PURE__ */ jsxRuntime.jsx("span", { ref: labelRef, "data-slot": "button-label", className: "truncate", children }),
133
156
  React__namespace.isValidElement(rightIcon) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: rightIcon })
134
157
  ] })
135
158
  }
@@ -141,7 +164,7 @@ function LoadingSpinner() {
141
164
  return /* @__PURE__ */ jsxRuntime.jsxs(
142
165
  "svg",
143
166
  {
144
- className: "h-4 w-4 animate-spin",
167
+ className: "h-4 w-4 shrink-0 animate-spin",
145
168
  xmlns: "http://www.w3.org/2000/svg",
146
169
  fill: "none",
147
170
  viewBox: "0 0 24 24",
@@ -173,5 +196,5 @@ function LoadingSpinner() {
173
196
 
174
197
  exports.Button = Button;
175
198
  exports.buttonVariants = buttonVariants;
176
- //# sourceMappingURL=chunk-M26KJKZG.cjs.map
177
- //# sourceMappingURL=chunk-M26KJKZG.cjs.map
199
+ //# sourceMappingURL=chunk-RDGRKYQ5.cjs.map
200
+ //# sourceMappingURL=chunk-RDGRKYQ5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Button/Button.tsx"],"names":["cva","React","jsx","cn","jsxs","Fragment"],"mappings":"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","file":"chunk-RDGRKYQ5.cjs","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\nconst buttonVariants = cva(\n // Base styles\n [\n 'inline-flex items-center justify-center gap-2',\n 'min-w-0 whitespace-nowrap',\n 'font-semibold transition-all duration-200',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'active:scale-[0.98]',\n ],\n {\n variants: {\n variant: {\n primary: [\n 'bg-primary-800 text-white',\n 'hover:bg-primary-900',\n 'active:bg-primary-950',\n ],\n secondary: [\n 'bg-neutral-200 text-neutral-900',\n 'hover:bg-neutral-300',\n 'active:bg-neutral-400',\n 'dark:bg-neutral-700 dark:text-neutral-100',\n 'dark:hover:bg-neutral-600',\n 'dark:active:bg-neutral-500',\n ],\n ghost: [\n 'bg-transparent text-neutral-600',\n 'hover:bg-neutral-100',\n 'active:bg-neutral-200',\n 'dark:text-neutral-400',\n 'dark:hover:bg-neutral-800',\n 'dark:active:bg-neutral-700',\n ],\n outline: [\n 'border-2 border-primary-800 text-primary-800 bg-transparent',\n 'hover:bg-primary-50 hover:text-primary-900',\n 'active:bg-primary-100',\n 'dark:border-primary-400 dark:text-primary-400',\n 'dark:hover:bg-primary-950',\n 'dark:active:bg-primary-900',\n ],\n danger: [\n 'bg-red-600 text-white',\n 'hover:bg-red-700',\n 'active:bg-red-800',\n ],\n link: [\n 'text-primary-800 underline-offset-4',\n 'hover:underline hover:text-primary-900',\n 'active:text-primary-950',\n 'dark:text-primary-400',\n ],\n },\n size: {\n sm: 'h-8 px-3 text-sm rounded-md',\n md: 'h-10 px-4 text-base rounded-lg',\n lg: 'h-12 px-6 text-lg rounded-xl',\n icon: 'h-10 w-10 rounded-lg',\n },\n fullWidth: {\n true: 'w-full',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n fullWidth: false,\n },\n }\n);\n\nexport interface ButtonProps\n extends\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n /** Optional icon element to render before the button text */\n leftIcon?: React.ReactElement | null;\n /** Optional icon element to render after the button text */\n rightIcon?: React.ReactElement | null;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** Accessible label for the loading state */\n loadingText?: string;\n}\n\n/**\n * A versatile button component with multiple variants and sizes.\n *\n * @example\n * ```tsx\n * <Button variant=\"primary\" size=\"md\">Click me</Button>\n * <Button variant=\"danger\" leftIcon={<TrashIcon />}>Delete</Button>\n * <Button variant=\"ghost\" isLoading loadingText=\"Saving...\">Save</Button>\n * ```\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n fullWidth,\n leftIcon,\n rightIcon,\n isLoading,\n loadingText,\n disabled,\n children,\n title,\n ...props\n },\n ref\n ) => {\n const resolvedSize = size ?? 'md';\n const labelRef = React.useRef<HTMLSpanElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // When the label truncates, expose the full text as a native tooltip.\n // A consumer-provided `title` always takes precedence.\n React.useLayoutEffect(() => {\n const label = labelRef.current;\n const button = innerRef.current;\n if (!label || !button || title !== undefined) return;\n\n const update = () => {\n if (label.scrollWidth > label.clientWidth) {\n button.title = label.textContent ?? '';\n } else {\n button.removeAttribute('title');\n }\n };\n\n update();\n if (typeof globalThis.ResizeObserver === 'undefined') return;\n const observer = new globalThis.ResizeObserver(update);\n observer.observe(label);\n return () => observer.disconnect();\n }, [title, children, isLoading, loadingText]);\n\n return (\n <button\n data-slot=\"button\"\n data-size={resolvedSize}\n className={cn(\n buttonVariants({ variant, size: resolvedSize, fullWidth }),\n className\n )}\n ref={innerRef}\n disabled={disabled || isLoading}\n aria-busy={isLoading}\n title={title}\n {...props}\n >\n {isLoading ? (\n <>\n <LoadingSpinner />\n <span ref={labelRef} data-slot=\"button-label\" className=\"truncate\">\n {loadingText || children}\n </span>\n </>\n ) : (\n <>\n {React.isValidElement(leftIcon) && (\n <span className=\"shrink-0\">{leftIcon}</span>\n )}\n <span ref={labelRef} data-slot=\"button-label\" className=\"truncate\">\n {children}\n </span>\n {React.isValidElement(rightIcon) && (\n <span className=\"shrink-0\">{rightIcon}</span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\n/**\n * Simple loading spinner for the button\n */\nfunction LoadingSpinner() {\n return (\n <svg\n className=\"h-4 w-4 shrink-0 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\nexport { Button, buttonVariants };\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkYMHOF6WA_cjs = require('./chunk-YMHOF6WA.cjs');
4
- var chunkOGPJ3LRF_cjs = require('./chunk-OGPJ3LRF.cjs');
4
+ var chunkJP5SGIXA_cjs = require('./chunk-JP5SGIXA.cjs');
5
5
  var chunkS3MKIDYG_cjs = require('./chunk-S3MKIDYG.cjs');
6
6
  var chunkZBI52NP2_cjs = require('./chunk-ZBI52NP2.cjs');
7
7
  var chunkP2VTQ5AR_cjs = require('./chunk-P2VTQ5AR.cjs');
8
8
  var chunk6ECKH4DJ_cjs = require('./chunk-6ECKH4DJ.cjs');
9
- var chunkM26KJKZG_cjs = require('./chunk-M26KJKZG.cjs');
9
+ var chunkRDGRKYQ5_cjs = require('./chunk-RDGRKYQ5.cjs');
10
10
  var chunkNPKPCYAT_cjs = require('./chunk-NPKPCYAT.cjs');
11
11
  var chunkNUFUV43P_cjs = require('./chunk-NUFUV43P.cjs');
12
12
  var React6 = require('react');
@@ -191,8 +191,8 @@ var FillerWordsModal = ({
191
191
  }
192
192
  ),
193
193
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
194
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { variant: "ghost", size: "sm", onClick: selectAll, children: "Select All" }),
195
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { variant: "ghost", size: "sm", onClick: selectNone, children: "Select None" })
194
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { variant: "ghost", size: "sm", onClick: selectAll, children: "Select All" }),
195
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { variant: "ghost", size: "sm", onClick: selectNone, children: "Select None" })
196
196
  ] }),
197
197
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border bg-muted/40 flex flex-wrap items-center gap-2 rounded-lg border px-3 py-2", children: [
198
198
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -247,7 +247,7 @@ var FillerWordsModal = ({
247
247
  }
248
248
  ),
249
249
  /* @__PURE__ */ jsxRuntime.jsx(
250
- chunkM26KJKZG_cjs.Button,
250
+ chunkRDGRKYQ5_cjs.Button,
251
251
  {
252
252
  variant: "secondary",
253
253
  size: "sm",
@@ -268,9 +268,9 @@ var FillerWordsModal = ({
268
268
  formatDuration(newDurationMs)
269
269
  ] }),
270
270
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
271
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { variant: "secondary", size: "sm", onClick: onClose, children: "Cancel" }),
271
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { variant: "secondary", size: "sm", onClick: onClose, children: "Cancel" }),
272
272
  /* @__PURE__ */ jsxRuntime.jsxs(
273
- chunkM26KJKZG_cjs.Button,
273
+ chunkRDGRKYQ5_cjs.Button,
274
274
  {
275
275
  variant: "primary",
276
276
  size: "sm",
@@ -432,7 +432,7 @@ var WordEditorModal = ({
432
432
  ] }) }),
433
433
  /* @__PURE__ */ jsxRuntime.jsxs(chunkP2VTQ5AR_cjs.ModalFooter, { className: "justify-between", children: [
434
434
  /* @__PURE__ */ jsxRuntime.jsx(
435
- chunkM26KJKZG_cjs.Button,
435
+ chunkRDGRKYQ5_cjs.Button,
436
436
  {
437
437
  variant: editableWord?.deleted ? "secondary" : "danger",
438
438
  size: "sm",
@@ -441,9 +441,9 @@ var WordEditorModal = ({
441
441
  }
442
442
  ),
443
443
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
444
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { variant: "secondary", size: "sm", onClick: onClose, children: "Cancel" }),
444
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { variant: "secondary", size: "sm", onClick: onClose, children: "Cancel" }),
445
445
  /* @__PURE__ */ jsxRuntime.jsx(
446
- chunkM26KJKZG_cjs.Button,
446
+ chunkRDGRKYQ5_cjs.Button,
447
447
  {
448
448
  variant: "primary",
449
449
  size: "sm",
@@ -536,8 +536,8 @@ var SilenceSettingsModal = ({
536
536
  ] })
537
537
  ] }),
538
538
  /* @__PURE__ */ jsxRuntime.jsxs(chunkP2VTQ5AR_cjs.ModalFooter, { children: [
539
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { variant: "secondary", size: "sm", onClick: onClose, children: "Cancel" }),
540
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { variant: "primary", size: "sm", onClick: handleApply, children: "Apply" })
539
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { variant: "secondary", size: "sm", onClick: onClose, children: "Cancel" }),
540
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { variant: "primary", size: "sm", onClick: handleApply, children: "Apply" })
541
541
  ] })
542
542
  ]
543
543
  }
@@ -756,7 +756,7 @@ var ScriptPanel = ({
756
756
  ),
757
757
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground ml-auto text-[10px]", children: readOnly ? "read-only" : dirty ? "edited" : "live" }),
758
758
  /* @__PURE__ */ jsxRuntime.jsx(
759
- chunkM26KJKZG_cjs.Button,
759
+ chunkRDGRKYQ5_cjs.Button,
760
760
  {
761
761
  variant: "ghost",
762
762
  size: "sm",
@@ -789,9 +789,9 @@ var ScriptPanel = ({
789
789
  }
790
790
  ),
791
791
  !readOnly && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border flex shrink-0 items-center gap-2 border-t px-3 py-2", children: [
792
- /* @__PURE__ */ jsxRuntime.jsx(chunkM26KJKZG_cjs.Button, { size: "sm", onClick: handleApply, disabled: !dirty, children: "Apply" }),
792
+ /* @__PURE__ */ jsxRuntime.jsx(chunkRDGRKYQ5_cjs.Button, { size: "sm", onClick: handleApply, disabled: !dirty, children: "Apply" }),
793
793
  /* @__PURE__ */ jsxRuntime.jsx(
794
- chunkM26KJKZG_cjs.Button,
794
+ chunkRDGRKYQ5_cjs.Button,
795
795
  {
796
796
  variant: "ghost",
797
797
  size: "sm",
@@ -1726,7 +1726,7 @@ var MediaEditor = React6__namespace.forwardRef(
1726
1726
  {
1727
1727
  className: `border-border bg-background flex min-h-0 shrink-0 ${splitLayout === "vertical" ? "max-h-[55dvh] md:max-h-none md:w-1/2 md:border-r" : "max-h-[55dvh] border-b md:max-h-[50%]"}`,
1728
1728
  children: /* @__PURE__ */ jsxRuntime.jsx(
1729
- chunkOGPJ3LRF_cjs.MediaPlayer,
1729
+ chunkJP5SGIXA_cjs.MediaPlayer,
1730
1730
  {
1731
1731
  ref: playerRef,
1732
1732
  src,
@@ -1781,7 +1781,7 @@ var MediaEditor = React6__namespace.forwardRef(
1781
1781
  }
1782
1782
  ),
1783
1783
  /* @__PURE__ */ jsxRuntime.jsx(
1784
- chunkM26KJKZG_cjs.Button,
1784
+ chunkRDGRKYQ5_cjs.Button,
1785
1785
  {
1786
1786
  variant: "ghost",
1787
1787
  size: "sm",
@@ -1792,7 +1792,7 @@ var MediaEditor = React6__namespace.forwardRef(
1792
1792
  }
1793
1793
  ),
1794
1794
  showUndoRedo && /* @__PURE__ */ jsxRuntime.jsxs(
1795
- chunkM26KJKZG_cjs.Button,
1795
+ chunkRDGRKYQ5_cjs.Button,
1796
1796
  {
1797
1797
  variant: "ghost",
1798
1798
  size: "sm",
@@ -1809,7 +1809,7 @@ var MediaEditor = React6__namespace.forwardRef(
1809
1809
  }
1810
1810
  ),
1811
1811
  showUndoRedo && /* @__PURE__ */ jsxRuntime.jsxs(
1812
- chunkM26KJKZG_cjs.Button,
1812
+ chunkRDGRKYQ5_cjs.Button,
1813
1813
  {
1814
1814
  variant: "ghost",
1815
1815
  size: "sm",
@@ -1826,7 +1826,7 @@ var MediaEditor = React6__namespace.forwardRef(
1826
1826
  ] }),
1827
1827
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-xs", children: [
1828
1828
  /* @__PURE__ */ jsxRuntime.jsx(
1829
- chunkM26KJKZG_cjs.Button,
1829
+ chunkRDGRKYQ5_cjs.Button,
1830
1830
  {
1831
1831
  variant: "ghost",
1832
1832
  size: "sm",
@@ -1868,7 +1868,7 @@ var MediaEditor = React6__namespace.forwardRef(
1868
1868
  ] }),
1869
1869
  showEditBar && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border bg-muted/40 flex shrink-0 items-center gap-1 border-b px-3 py-1", children: [
1870
1870
  /* @__PURE__ */ jsxRuntime.jsxs(
1871
- chunkM26KJKZG_cjs.Button,
1871
+ chunkRDGRKYQ5_cjs.Button,
1872
1872
  {
1873
1873
  variant: "ghost",
1874
1874
  size: "sm",
@@ -1881,7 +1881,7 @@ var MediaEditor = React6__namespace.forwardRef(
1881
1881
  }
1882
1882
  ),
1883
1883
  /* @__PURE__ */ jsxRuntime.jsxs(
1884
- chunkM26KJKZG_cjs.Button,
1884
+ chunkRDGRKYQ5_cjs.Button,
1885
1885
  {
1886
1886
  variant: "ghost",
1887
1887
  size: "sm",
@@ -1894,7 +1894,7 @@ var MediaEditor = React6__namespace.forwardRef(
1894
1894
  }
1895
1895
  ),
1896
1896
  /* @__PURE__ */ jsxRuntime.jsxs(
1897
- chunkM26KJKZG_cjs.Button,
1897
+ chunkRDGRKYQ5_cjs.Button,
1898
1898
  {
1899
1899
  variant: "ghost",
1900
1900
  size: "sm",
@@ -1907,7 +1907,7 @@ var MediaEditor = React6__namespace.forwardRef(
1907
1907
  }
1908
1908
  ),
1909
1909
  /* @__PURE__ */ jsxRuntime.jsxs(
1910
- chunkM26KJKZG_cjs.Button,
1910
+ chunkRDGRKYQ5_cjs.Button,
1911
1911
  {
1912
1912
  variant: "ghost",
1913
1913
  size: "sm",
@@ -2025,5 +2025,5 @@ exports.MediaEditor = MediaEditor;
2025
2025
  exports.SilenceSettingsModal = SilenceSettingsModal;
2026
2026
  exports.SpeedMarkerMenu = SpeedMarkerMenu;
2027
2027
  exports.WordEditorModal = WordEditorModal;
2028
- //# sourceMappingURL=chunk-Q5VBO3I5.cjs.map
2029
- //# sourceMappingURL=chunk-Q5VBO3I5.cjs.map
2028
+ //# sourceMappingURL=chunk-SYIFEJSF.cjs.map
2029
+ //# sourceMappingURL=chunk-SYIFEJSF.cjs.map