jvetrau-ds 0.1.45 → 0.2.2

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 (194) hide show
  1. package/components/button/button.cjs +41 -16
  2. package/components/button/button.cjs.map +1 -1
  3. package/components/button/button.css +226 -7
  4. package/components/button/button.d.ts +26 -3
  5. package/components/button/button.js +41 -16
  6. package/components/button/button.js.map +1 -1
  7. package/components/checkbox/checkbox.cjs +3 -1
  8. package/components/checkbox/checkbox.cjs.map +1 -1
  9. package/components/checkbox/checkbox.css +24 -1
  10. package/components/checkbox/checkbox.d.ts +1 -0
  11. package/components/checkbox/checkbox.js +3 -1
  12. package/components/checkbox/checkbox.js.map +1 -1
  13. package/components/field/field.cjs +37 -17
  14. package/components/field/field.cjs.map +1 -1
  15. package/components/field/field.css +17 -0
  16. package/components/field/field.d.ts +2 -2
  17. package/components/field/field.js +37 -17
  18. package/components/field/field.js.map +1 -1
  19. package/components/flip-list/flip-list.cjs +8 -2
  20. package/components/flip-list/flip-list.cjs.map +1 -1
  21. package/components/flip-list/flip-list.css +49 -3
  22. package/components/flip-list/flip-list.d.ts +1 -0
  23. package/components/flip-list/flip-list.js +8 -2
  24. package/components/flip-list/flip-list.js.map +1 -1
  25. package/components/index.cjs +0 -6
  26. package/components/index.d.ts +0 -2
  27. package/components/index.js +0 -1
  28. package/components/radio/radio.cjs +3 -1
  29. package/components/radio/radio.cjs.map +1 -1
  30. package/components/radio/radio.css +24 -1
  31. package/components/radio/radio.d.ts +1 -0
  32. package/components/radio/radio.js +3 -1
  33. package/components/radio/radio.js.map +1 -1
  34. package/components/tabs/tabs.cjs +25 -9
  35. package/components/tabs/tabs.cjs.map +1 -1
  36. package/components/tabs/tabs.css +63 -0
  37. package/components/tabs/tabs.d.ts +1 -0
  38. package/components/tabs/tabs.js +26 -10
  39. package/components/tabs/tabs.js.map +1 -1
  40. package/components/video/video.cjs +150 -60
  41. package/components/video/video.cjs.map +1 -1
  42. package/components/video/video.js +147 -58
  43. package/components/video/video.js.map +1 -1
  44. package/index.cjs +0 -6
  45. package/index.d.ts +0 -2
  46. package/index.js +0 -1
  47. package/package.json +1 -1
  48. package/styles.css +379 -57
  49. package/themes/base/desktop.css +1 -0
  50. package/themes/base/desktop.md +1 -0
  51. package/themes/base/desktop.scoped.css +1 -0
  52. package/themes/base/diagram.css +1 -0
  53. package/themes/base/diagram.md +1 -0
  54. package/themes/base/diagram.scoped.css +1 -0
  55. package/themes/base/mobile.css +1 -0
  56. package/themes/base/mobile.md +1 -0
  57. package/themes/base/mobile.scoped.css +1 -0
  58. package/themes/brandcopilot/desktop.css +1 -0
  59. package/themes/brandcopilot/desktop.md +1 -0
  60. package/themes/brandcopilot/desktop.scoped.css +1 -0
  61. package/themes/brandcopilot/diagram.css +1 -0
  62. package/themes/brandcopilot/diagram.md +1 -0
  63. package/themes/brandcopilot/diagram.scoped.css +1 -0
  64. package/themes/brandcopilot/mobile.css +1 -0
  65. package/themes/brandcopilot/mobile.md +1 -0
  66. package/themes/brandcopilot/mobile.scoped.css +1 -0
  67. package/themes/dmpatterns/desktop.css +1 -0
  68. package/themes/dmpatterns/desktop.md +1 -0
  69. package/themes/dmpatterns/desktop.scoped.css +1 -0
  70. package/themes/dmpatterns/diagram.css +1 -0
  71. package/themes/dmpatterns/diagram.md +1 -0
  72. package/themes/dmpatterns/diagram.scoped.css +1 -0
  73. package/themes/dmpatterns/mobile.css +1 -0
  74. package/themes/dmpatterns/mobile.md +1 -0
  75. package/themes/dmpatterns/mobile.scoped.css +1 -0
  76. package/themes/pdigest/desktop.css +1 -0
  77. package/themes/pdigest/desktop.md +1 -0
  78. package/themes/pdigest/desktop.scoped.css +1 -0
  79. package/themes/pdigest/diagram.css +1 -0
  80. package/themes/pdigest/diagram.md +1 -0
  81. package/themes/pdigest/diagram.scoped.css +1 -0
  82. package/themes/pdigest/mobile.css +1 -0
  83. package/themes/pdigest/mobile.md +1 -0
  84. package/themes/pdigest/mobile.scoped.css +1 -0
  85. package/themes/redesigntrack/desktop.css +1 -0
  86. package/themes/redesigntrack/desktop.md +1 -0
  87. package/themes/redesigntrack/desktop.scoped.css +1 -0
  88. package/themes/redesigntrack/diagram.css +1 -0
  89. package/themes/redesigntrack/diagram.md +1 -0
  90. package/themes/redesigntrack/diagram.scoped.css +1 -0
  91. package/themes/redesigntrack/mobile.css +1 -0
  92. package/themes/redesigntrack/mobile.md +1 -0
  93. package/themes/redesigntrack/mobile.scoped.css +1 -0
  94. package/tokens/runtime/tokens.base.desktop.runtime.cjs +1 -0
  95. package/tokens/runtime/tokens.base.desktop.runtime.cjs.map +1 -1
  96. package/tokens/runtime/tokens.base.desktop.runtime.d.ts +1 -0
  97. package/tokens/runtime/tokens.base.desktop.runtime.js +1 -0
  98. package/tokens/runtime/tokens.base.desktop.runtime.js.map +1 -1
  99. package/tokens/runtime/tokens.base.diagram.runtime.cjs +1 -0
  100. package/tokens/runtime/tokens.base.diagram.runtime.cjs.map +1 -1
  101. package/tokens/runtime/tokens.base.diagram.runtime.d.ts +1 -0
  102. package/tokens/runtime/tokens.base.diagram.runtime.js +1 -0
  103. package/tokens/runtime/tokens.base.diagram.runtime.js.map +1 -1
  104. package/tokens/runtime/tokens.base.mobile.runtime.cjs +1 -0
  105. package/tokens/runtime/tokens.base.mobile.runtime.cjs.map +1 -1
  106. package/tokens/runtime/tokens.base.mobile.runtime.d.ts +1 -0
  107. package/tokens/runtime/tokens.base.mobile.runtime.js +1 -0
  108. package/tokens/runtime/tokens.base.mobile.runtime.js.map +1 -1
  109. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs +1 -0
  110. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs.map +1 -1
  111. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.d.ts +1 -0
  112. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js +1 -0
  113. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js.map +1 -1
  114. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs +1 -0
  115. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs.map +1 -1
  116. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.d.ts +1 -0
  117. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js +1 -0
  118. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js.map +1 -1
  119. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs +1 -0
  120. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs.map +1 -1
  121. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.d.ts +1 -0
  122. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js +1 -0
  123. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js.map +1 -1
  124. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs +1 -0
  125. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs.map +1 -1
  126. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.d.ts +1 -0
  127. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js +1 -0
  128. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js.map +1 -1
  129. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs +1 -0
  130. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs.map +1 -1
  131. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.d.ts +1 -0
  132. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js +1 -0
  133. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js.map +1 -1
  134. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs +1 -0
  135. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs.map +1 -1
  136. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.d.ts +1 -0
  137. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js +1 -0
  138. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js.map +1 -1
  139. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs +1 -0
  140. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs.map +1 -1
  141. package/tokens/runtime/tokens.pdigest.desktop.runtime.d.ts +1 -0
  142. package/tokens/runtime/tokens.pdigest.desktop.runtime.js +1 -0
  143. package/tokens/runtime/tokens.pdigest.desktop.runtime.js.map +1 -1
  144. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs +1 -0
  145. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs.map +1 -1
  146. package/tokens/runtime/tokens.pdigest.diagram.runtime.d.ts +1 -0
  147. package/tokens/runtime/tokens.pdigest.diagram.runtime.js +1 -0
  148. package/tokens/runtime/tokens.pdigest.diagram.runtime.js.map +1 -1
  149. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs +1 -0
  150. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs.map +1 -1
  151. package/tokens/runtime/tokens.pdigest.mobile.runtime.d.ts +1 -0
  152. package/tokens/runtime/tokens.pdigest.mobile.runtime.js +1 -0
  153. package/tokens/runtime/tokens.pdigest.mobile.runtime.js.map +1 -1
  154. package/tokens/runtime/tokens.redesigntrack.desktop.runtime.cjs +1 -0
  155. package/tokens/runtime/tokens.redesigntrack.desktop.runtime.cjs.map +1 -1
  156. package/tokens/runtime/tokens.redesigntrack.desktop.runtime.d.ts +1 -0
  157. package/tokens/runtime/tokens.redesigntrack.desktop.runtime.js +1 -0
  158. package/tokens/runtime/tokens.redesigntrack.desktop.runtime.js.map +1 -1
  159. package/tokens/runtime/tokens.redesigntrack.diagram.runtime.cjs +1 -0
  160. package/tokens/runtime/tokens.redesigntrack.diagram.runtime.cjs.map +1 -1
  161. package/tokens/runtime/tokens.redesigntrack.diagram.runtime.d.ts +1 -0
  162. package/tokens/runtime/tokens.redesigntrack.diagram.runtime.js +1 -0
  163. package/tokens/runtime/tokens.redesigntrack.diagram.runtime.js.map +1 -1
  164. package/tokens/runtime/tokens.redesigntrack.mobile.runtime.cjs +1 -0
  165. package/tokens/runtime/tokens.redesigntrack.mobile.runtime.cjs.map +1 -1
  166. package/tokens/runtime/tokens.redesigntrack.mobile.runtime.d.ts +1 -0
  167. package/tokens/runtime/tokens.redesigntrack.mobile.runtime.js +1 -0
  168. package/tokens/runtime/tokens.redesigntrack.mobile.runtime.js.map +1 -1
  169. package/tokens/themes/base/dist/desktop.json +8 -0
  170. package/tokens/themes/base/dist/diagram.json +8 -0
  171. package/tokens/themes/base/dist/mobile.json +8 -0
  172. package/tokens/themes/brandcopilot/dist/desktop.json +8 -0
  173. package/tokens/themes/brandcopilot/dist/diagram.json +8 -0
  174. package/tokens/themes/brandcopilot/dist/mobile.json +8 -0
  175. package/tokens/themes/dmpatterns/dist/desktop.json +8 -0
  176. package/tokens/themes/dmpatterns/dist/diagram.json +8 -0
  177. package/tokens/themes/dmpatterns/dist/mobile.json +8 -0
  178. package/tokens/themes/pdigest/dist/desktop.json +8 -0
  179. package/tokens/themes/pdigest/dist/diagram.json +8 -0
  180. package/tokens/themes/pdigest/dist/mobile.json +8 -0
  181. package/tokens/themes/redesigntrack/dist/desktop.json +8 -0
  182. package/tokens/themes/redesigntrack/dist/diagram.json +8 -0
  183. package/tokens/themes/redesigntrack/dist/mobile.json +8 -0
  184. package/components/button-icon/button-icon.cjs +0 -48
  185. package/components/button-icon/button-icon.cjs.map +0 -1
  186. package/components/button-icon/button-icon.css +0 -67
  187. package/components/button-icon/button-icon.d.ts +0 -10
  188. package/components/button-icon/button-icon.js +0 -42
  189. package/components/button-icon/button-icon.js.map +0 -1
  190. package/components/button-icon/index.cjs +0 -13
  191. package/components/button-icon/index.cjs.map +0 -1
  192. package/components/button-icon/index.d.ts +0 -2
  193. package/components/button-icon/index.js +0 -3
  194. package/components/button-icon/index.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var classnames = require('../helpers/classnames');
5
4
  require('./tabs.css');
5
+ var classnames = require('../helpers/classnames');
6
6
 
7
7
  const Tabs = ({
8
8
  items,
@@ -11,7 +11,11 @@ const Tabs = ({
11
11
  onValueChange,
12
12
  ...props
13
13
  }) => {
14
- const classes = classnames.classnames("tabs", className, {});
14
+ const classes = classnames.classnames(
15
+ "tabs",
16
+ className,
17
+ {}
18
+ );
15
19
  return /* @__PURE__ */ jsxRuntime.jsx(
16
20
  "div",
17
21
  {
@@ -25,9 +29,17 @@ const Tabs = ({
25
29
  "aria-label": "Tabs",
26
30
  children: items.map((item) => {
27
31
  const isSelected = item.value === value;
28
- const tabClasses = classnames.classnames("tabs__tab", {
29
- "tabs__tab--selected": isSelected
30
- });
32
+ const hasCount = item.count !== void 0;
33
+ const tabClasses = classnames.classnames(
34
+ "tabs__tab",
35
+ {
36
+ "tabs__tab--selected": isSelected
37
+ }
38
+ );
39
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
40
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabs__label", children: item.label }),
41
+ hasCount && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabs__count", children: item.count })
42
+ ] });
31
43
  if (item.href) {
32
44
  return /* @__PURE__ */ jsxRuntime.jsx(
33
45
  "a",
@@ -35,8 +47,10 @@ const Tabs = ({
35
47
  className: tabClasses,
36
48
  href: item.href,
37
49
  "aria-current": isSelected ? "page" : void 0,
38
- onClick: () => onValueChange?.(item.value),
39
- children: item.label
50
+ onClick: () => onValueChange?.(
51
+ item.value
52
+ ),
53
+ children: content
40
54
  },
41
55
  item.value
42
56
  );
@@ -48,8 +62,10 @@ const Tabs = ({
48
62
  type: "button",
49
63
  role: "tab",
50
64
  "aria-selected": isSelected,
51
- onClick: () => onValueChange?.(item.value),
52
- children: item.label
65
+ onClick: () => onValueChange?.(
66
+ item.value
67
+ ),
68
+ children: content
53
69
  },
54
70
  item.value
55
71
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":["classnames","jsx"],"mappings":";;;;;;AAiBA,MAAM,OAA4B,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,EAAE,CAAA;AAEhD,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,YAAA;AAAA,UACV,IAAA,EAAK,SAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,UAAA,GAAa,KAAK,KAAA,KAAU,KAAA;AAElC,YAAA,MAAM,UAAA,GAAaD,sBAAW,WAAA,EAAa;AAAA,cACzC,qBAAA,EAAuB;AAAA,aACxB,CAAA;AAED,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACEC,cAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,UAAA;AAAA,kBACX,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,cAAA,EAAc,aAAa,MAAA,GAAS,MAAA;AAAA,kBACpC,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,kBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,iBAAA;AAAA,gBAND,IAAA,CAAK;AAAA,eAOZ;AAAA,YAEJ;AAEA,YAAA,uBACEA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,gBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,eAAA;AAAA,cAPD,IAAA,CAAK;AAAA,aAQZ;AAAA,UAEJ,CAAC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"tabs.cjs","sourcesContent":["import React from 'react';\nimport { classnames } from '../helpers/classnames';\nimport './tabs.css';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n href?: string;\n}\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n items: TabItem[];\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n items,\n value,\n className = '',\n onValueChange,\n ...props\n}) => {\n const classes = classnames('tabs', className, {});\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div\n className=\"tabs__list\"\n role=\"tablist\"\n aria-label=\"Tabs\"\n >\n {items.map((item) => {\n const isSelected = item.value === value;\n\n const tabClasses = classnames('tabs__tab', {\n 'tabs__tab--selected': isSelected,\n });\n\n if (item.href) {\n return (\n <a\n key={item.value}\n className={tabClasses}\n href={item.href}\n aria-current={isSelected ? 'page' : undefined}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </a>\n );\n }\n\n return (\n <button\n key={item.value}\n className={tabClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Tabs;"]}
1
+ {"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":["classnames","jsx","jsxs","Fragment"],"mappings":";;;;;;AAmBA,MAAM,OAA4B,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAA,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,YAAA;AAAA,UACV,IAAA,EAAK,SAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,UAAA,GACJ,KAAK,KAAA,KAAU,KAAA;AAEjB,YAAA,MAAM,QAAA,GACJ,KAAK,KAAA,KAAU,MAAA;AAEjB,YAAA,MAAM,UAAA,GAAaD,qBAAA;AAAA,cACjB,WAAA;AAAA,cACA;AAAA,gBACE,qBAAA,EACE;AAAA;AACJ,aACF;AAEA,YAAA,MAAM,0BACJE,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAAF,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA;AAAA,cAEC,4BACCA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EACb,eAAK,KAAA,EACR;AAAA,aAAA,EAEJ,CAAA;AAGF,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACEA,cAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,UAAA;AAAA,kBACX,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,cAAA,EACE,aACI,MAAA,GACA,MAAA;AAAA,kBAEN,SAAS,MACP,aAAA;AAAA,oBACE,IAAA,CAAK;AAAA,mBACP;AAAA,kBAGD,QAAA,EAAA;AAAA,iBAAA;AAAA,gBAdI,IAAA,CAAK;AAAA,eAeZ;AAAA,YAEJ;AAEA,YAAA,uBACEA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,SAAS,MACP,aAAA;AAAA,kBACE,IAAA,CAAK;AAAA,iBACP;AAAA,gBAGD,QAAA,EAAA;AAAA,eAAA;AAAA,cAXI,IAAA,CAAK;AAAA,aAYZ;AAAA,UAEJ,CAAC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"tabs.cjs","sourcesContent":["import React from 'react';\n\nimport './tabs.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n count?: number;\n href?: string;\n}\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n items: TabItem[];\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n items,\n value,\n className = '',\n onValueChange,\n ...props\n}) => {\n const classes = classnames(\n 'tabs',\n className,\n {},\n );\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div\n className=\"tabs__list\"\n role=\"tablist\"\n aria-label=\"Tabs\"\n >\n {items.map((item) => {\n const isSelected =\n item.value === value;\n\n const hasCount =\n item.count !== undefined;\n\n const tabClasses = classnames(\n 'tabs__tab',\n {\n 'tabs__tab--selected':\n isSelected,\n },\n );\n\n const content = (\n <>\n <span className=\"tabs__label\">\n {item.label}\n </span>\n\n {hasCount && (\n <span className=\"tabs__count\">\n {item.count}\n </span>\n )}\n </>\n );\n\n if (item.href) {\n return (\n <a\n key={item.value}\n className={tabClasses}\n href={item.href}\n aria-current={\n isSelected\n ? 'page'\n : undefined\n }\n onClick={() =>\n onValueChange?.(\n item.value,\n )\n }\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n key={item.value}\n className={tabClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() =>\n onValueChange?.(\n item.value,\n )\n }\n >\n {content}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Tabs;"]}
@@ -129,5 +129,68 @@
129
129
 
130
130
  /* depth */
131
131
 
132
+ /* motion */
133
+ }
134
+
135
+ .tabs__label {
136
+ /* color */
137
+
138
+ /* typography */
139
+
140
+ /* size */
141
+
142
+ /* border */
143
+
144
+ /* depth */
145
+
146
+ /* motion */
147
+ }
148
+
149
+ .tabs__count {
150
+ /* color */
151
+ color: var(--color-text);
152
+
153
+ /* typography */
154
+
155
+ /* size */
156
+ display: inline-flex;
157
+ align-items: center;
158
+ justify-content: center;
159
+
160
+ margin-inline-start: var(--margin-icon);
161
+
162
+ /* border */
163
+
164
+ /* depth */
165
+
166
+ /* motion */
167
+ }
168
+
169
+ .tabs__tab--selected .tabs__count {
170
+ /* color */
171
+ color: var(--tabs-tab-color);
172
+
173
+ /* typography */
174
+
175
+ /* size */
176
+
177
+ /* border */
178
+
179
+ /* depth */
180
+
181
+ /* motion */
182
+ }
183
+
184
+ .tabs__tab--selected .tabs__count {
185
+ /* color */
186
+
187
+ /* typography */
188
+
189
+ /* size */
190
+
191
+ /* border */
192
+
193
+ /* depth */
194
+
132
195
  /* motion */
133
196
  }
@@ -3,6 +3,7 @@ import './tabs.css';
3
3
  export interface TabItem {
4
4
  value: string;
5
5
  label: React.ReactNode;
6
+ count?: number;
6
7
  href?: string;
7
8
  }
8
9
  export interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -1,6 +1,6 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { classnames } from '../helpers/classnames';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
2
  import './tabs.css';
3
+ import { classnames } from '../helpers/classnames';
4
4
 
5
5
  const Tabs = ({
6
6
  items,
@@ -9,7 +9,11 @@ const Tabs = ({
9
9
  onValueChange,
10
10
  ...props
11
11
  }) => {
12
- const classes = classnames("tabs", className, {});
12
+ const classes = classnames(
13
+ "tabs",
14
+ className,
15
+ {}
16
+ );
13
17
  return /* @__PURE__ */ jsx(
14
18
  "div",
15
19
  {
@@ -23,9 +27,17 @@ const Tabs = ({
23
27
  "aria-label": "Tabs",
24
28
  children: items.map((item) => {
25
29
  const isSelected = item.value === value;
26
- const tabClasses = classnames("tabs__tab", {
27
- "tabs__tab--selected": isSelected
28
- });
30
+ const hasCount = item.count !== void 0;
31
+ const tabClasses = classnames(
32
+ "tabs__tab",
33
+ {
34
+ "tabs__tab--selected": isSelected
35
+ }
36
+ );
37
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
38
+ /* @__PURE__ */ jsx("span", { className: "tabs__label", children: item.label }),
39
+ hasCount && /* @__PURE__ */ jsx("span", { className: "tabs__count", children: item.count })
40
+ ] });
29
41
  if (item.href) {
30
42
  return /* @__PURE__ */ jsx(
31
43
  "a",
@@ -33,8 +45,10 @@ const Tabs = ({
33
45
  className: tabClasses,
34
46
  href: item.href,
35
47
  "aria-current": isSelected ? "page" : void 0,
36
- onClick: () => onValueChange?.(item.value),
37
- children: item.label
48
+ onClick: () => onValueChange?.(
49
+ item.value
50
+ ),
51
+ children: content
38
52
  },
39
53
  item.value
40
54
  );
@@ -46,8 +60,10 @@ const Tabs = ({
46
60
  type: "button",
47
61
  role: "tab",
48
62
  "aria-selected": isSelected,
49
- onClick: () => onValueChange?.(item.value),
50
- children: item.label
63
+ onClick: () => onValueChange?.(
64
+ item.value
65
+ ),
66
+ children: content
51
67
  },
52
68
  item.value
53
69
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":";;;;AAiBA,MAAM,OAA4B,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,MAAA,EAAQ,SAAA,EAAW,EAAE,CAAA;AAEhD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,YAAA;AAAA,UACV,IAAA,EAAK,SAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,UAAA,GAAa,KAAK,KAAA,KAAU,KAAA;AAElC,YAAA,MAAM,UAAA,GAAa,WAAW,WAAA,EAAa;AAAA,cACzC,qBAAA,EAAuB;AAAA,aACxB,CAAA;AAED,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACE,GAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,UAAA;AAAA,kBACX,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,cAAA,EAAc,aAAa,MAAA,GAAS,MAAA;AAAA,kBACpC,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,kBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,iBAAA;AAAA,gBAND,IAAA,CAAK;AAAA,eAOZ;AAAA,YAEJ;AAEA,YAAA,uBACE,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,OAAA,EAAS,MAAM,aAAA,GAAgB,IAAA,CAAK,KAAK,CAAA;AAAA,gBAExC,QAAA,EAAA,IAAA,CAAK;AAAA,eAAA;AAAA,cAPD,IAAA,CAAK;AAAA,aAQZ;AAAA,UAEJ,CAAC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"tabs.js","sourcesContent":["import React from 'react';\nimport { classnames } from '../helpers/classnames';\nimport './tabs.css';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n href?: string;\n}\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n items: TabItem[];\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n items,\n value,\n className = '',\n onValueChange,\n ...props\n}) => {\n const classes = classnames('tabs', className, {});\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div\n className=\"tabs__list\"\n role=\"tablist\"\n aria-label=\"Tabs\"\n >\n {items.map((item) => {\n const isSelected = item.value === value;\n\n const tabClasses = classnames('tabs__tab', {\n 'tabs__tab--selected': isSelected,\n });\n\n if (item.href) {\n return (\n <a\n key={item.value}\n className={tabClasses}\n href={item.href}\n aria-current={isSelected ? 'page' : undefined}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </a>\n );\n }\n\n return (\n <button\n key={item.value}\n className={tabClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() => onValueChange?.(item.value)}\n >\n {item.label}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Tabs;"]}
1
+ {"version":3,"sources":["../../../src/components/tabs/tabs.tsx"],"names":[],"mappings":";;;;AAmBA,MAAM,OAA4B,CAAC;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,YAAA;AAAA,UACV,IAAA,EAAK,SAAA;AAAA,UACL,YAAA,EAAW,MAAA;AAAA,UAEV,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,YAAA,MAAM,UAAA,GACJ,KAAK,KAAA,KAAU,KAAA;AAEjB,YAAA,MAAM,QAAA,GACJ,KAAK,KAAA,KAAU,MAAA;AAEjB,YAAA,MAAM,UAAA,GAAa,UAAA;AAAA,cACjB,WAAA;AAAA,cACA;AAAA,gBACE,qBAAA,EACE;AAAA;AACJ,aACF;AAEA,YAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA;AAAA,cAEC,4BACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EACb,eAAK,KAAA,EACR;AAAA,aAAA,EAEJ,CAAA;AAGF,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACE,GAAA;AAAA,gBAAC,GAAA;AAAA,gBAAA;AAAA,kBAEC,SAAA,EAAW,UAAA;AAAA,kBACX,MAAM,IAAA,CAAK,IAAA;AAAA,kBACX,cAAA,EACE,aACI,MAAA,GACA,MAAA;AAAA,kBAEN,SAAS,MACP,aAAA;AAAA,oBACE,IAAA,CAAK;AAAA,mBACP;AAAA,kBAGD,QAAA,EAAA;AAAA,iBAAA;AAAA,gBAdI,IAAA,CAAK;AAAA,eAeZ;AAAA,YAEJ;AAEA,YAAA,uBACE,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBAEC,SAAA,EAAW,UAAA;AAAA,gBACX,IAAA,EAAK,QAAA;AAAA,gBACL,IAAA,EAAK,KAAA;AAAA,gBACL,eAAA,EAAe,UAAA;AAAA,gBACf,SAAS,MACP,aAAA;AAAA,kBACE,IAAA,CAAK;AAAA,iBACP;AAAA,gBAGD,QAAA,EAAA;AAAA,eAAA;AAAA,cAXI,IAAA,CAAK;AAAA,aAYZ;AAAA,UAEJ,CAAC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ,CAAA;AAEA,IAAO,YAAA,GAAQ","file":"tabs.js","sourcesContent":["import React from 'react';\n\nimport './tabs.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface TabItem {\n value: string;\n label: React.ReactNode;\n count?: number;\n href?: string;\n}\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement> {\n items: TabItem[];\n value: string;\n onValueChange?: (value: string) => void;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n items,\n value,\n className = '',\n onValueChange,\n ...props\n}) => {\n const classes = classnames(\n 'tabs',\n className,\n {},\n );\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div\n className=\"tabs__list\"\n role=\"tablist\"\n aria-label=\"Tabs\"\n >\n {items.map((item) => {\n const isSelected =\n item.value === value;\n\n const hasCount =\n item.count !== undefined;\n\n const tabClasses = classnames(\n 'tabs__tab',\n {\n 'tabs__tab--selected':\n isSelected,\n },\n );\n\n const content = (\n <>\n <span className=\"tabs__label\">\n {item.label}\n </span>\n\n {hasCount && (\n <span className=\"tabs__count\">\n {item.count}\n </span>\n )}\n </>\n );\n\n if (item.href) {\n return (\n <a\n key={item.value}\n className={tabClasses}\n href={item.href}\n aria-current={\n isSelected\n ? 'page'\n : undefined\n }\n onClick={() =>\n onValueChange?.(\n item.value,\n )\n }\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n key={item.value}\n className={tabClasses}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n onClick={() =>\n onValueChange?.(\n item.value,\n )\n }\n >\n {content}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Tabs;"]}
@@ -4,30 +4,47 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var react = require('react');
5
5
  var Hls = require('hls.js');
6
6
  require('./video.css');
7
+ var Icon = require('../../icons/icon');
8
+ var Button = require('../button');
9
+ var Dropdown = require('../dropdown');
7
10
  var classnames = require('../helpers/classnames');
8
- var ButtonIcon = require('../button-icon');
9
11
  var ProgressBar = require('../progressbar');
10
- var Dropdown = require('../dropdown');
11
12
 
12
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
14
 
14
15
  var Hls__default = /*#__PURE__*/_interopDefault(Hls);
15
- var ButtonIcon__default = /*#__PURE__*/_interopDefault(ButtonIcon);
16
- var ProgressBar__default = /*#__PURE__*/_interopDefault(ProgressBar);
16
+ var Icon__default = /*#__PURE__*/_interopDefault(Icon);
17
+ var Button__default = /*#__PURE__*/_interopDefault(Button);
17
18
  var Dropdown__default = /*#__PURE__*/_interopDefault(Dropdown);
19
+ var ProgressBar__default = /*#__PURE__*/_interopDefault(ProgressBar);
18
20
 
19
21
  function getClampedValue(value, min, max) {
20
- return Math.min(Math.max(value, min), max);
22
+ return Math.min(
23
+ Math.max(value, min),
24
+ max
25
+ );
21
26
  }
22
27
  function formatTime(value) {
23
- if (!Number.isFinite(value)) return "0:00";
24
- const minutes = Math.floor(value / 60);
25
- const seconds = Math.floor(value % 60);
26
- return `${minutes}:${String(seconds).padStart(2, "0")}`;
28
+ if (!Number.isFinite(value)) {
29
+ return "0:00";
30
+ }
31
+ const minutes = Math.floor(
32
+ value / 60
33
+ );
34
+ const seconds = Math.floor(
35
+ value % 60
36
+ );
37
+ return `${minutes}:${String(
38
+ seconds
39
+ ).padStart(2, "0")}`;
27
40
  }
28
41
  function getBufferedEnd(video) {
29
- if (video.buffered.length === 0) return 0;
30
- return video.buffered.end(video.buffered.length - 1);
42
+ if (video.buffered.length === 0) {
43
+ return 0;
44
+ }
45
+ return video.buffered.end(
46
+ video.buffered.length - 1
47
+ );
31
48
  }
32
49
  function getVideoSource(src, qualities, selectedQuality) {
33
50
  const selectedQualityItem = qualities.find(
@@ -85,13 +102,24 @@ const Video = ({
85
102
  }) => {
86
103
  const videoRef = react.useRef(null);
87
104
  const [isPlaying, setIsPlaying] = react.useState(false);
88
- const [isVolumeOpen, setIsVolumeOpen] = react.useState(false);
89
- const [selectedQuality, setSelectedQuality] = react.useState(defaultQuality);
90
- const [currentTime, setCurrentTime] = react.useState(0);
105
+ const [
106
+ isVolumeOpen,
107
+ setIsVolumeOpen
108
+ ] = react.useState(false);
109
+ const [
110
+ selectedQuality,
111
+ setSelectedQuality
112
+ ] = react.useState(defaultQuality);
113
+ const [
114
+ currentTime,
115
+ setCurrentTime
116
+ ] = react.useState(0);
91
117
  const [duration, setDuration] = react.useState(0);
92
118
  const [buffered, setBuffered] = react.useState(0);
93
119
  const [volume, setVolume] = react.useState(initialVolume);
94
- const [isMuted, setIsMuted] = react.useState(muted ?? initialMuted);
120
+ const [isMuted, setIsMuted] = react.useState(
121
+ muted ?? initialMuted
122
+ );
95
123
  const hasAppliedInitialTimeRef = react.useRef(false);
96
124
  const lastProgressCommitAtRef = react.useRef(0);
97
125
  const loadedMediaKeyRef = react.useRef(void 0);
@@ -110,7 +138,9 @@ const Video = ({
110
138
  }, [onPlaybackError]);
111
139
  react.useEffect(() => {
112
140
  const video = videoRef.current;
113
- if (!video || !videoSrc) return;
141
+ if (!video || !videoSrc) {
142
+ return;
143
+ }
114
144
  const isSameMedia = loadedMediaKeyRef.current !== void 0 && loadedMediaKeyRef.current === effectiveMediaKey;
115
145
  if (isSameMedia) {
116
146
  pendingRestoreTimeRef.current = video.currentTime;
@@ -126,7 +156,9 @@ const Video = ({
126
156
  loadedMediaKeyRef.current = effectiveMediaKey;
127
157
  video.removeAttribute("src");
128
158
  video.load();
129
- if (video.canPlayType("application/vnd.apple.mpegurl")) {
159
+ if (video.canPlayType(
160
+ "application/vnd.apple.mpegurl"
161
+ )) {
130
162
  video.src = videoSrc;
131
163
  return;
132
164
  }
@@ -135,14 +167,20 @@ const Video = ({
135
167
  return;
136
168
  }
137
169
  const hls = new Hls__default.default();
138
- hls.on(Hls__default.default.Events.ERROR, (_, data) => {
139
- console.error("HLS error", data);
140
- onPlaybackErrorRef.current?.({
141
- type: "hls",
142
- fatal: data.fatal,
143
- error: data
144
- });
145
- });
170
+ hls.on(
171
+ Hls__default.default.Events.ERROR,
172
+ (_, data) => {
173
+ console.error(
174
+ "HLS error",
175
+ data
176
+ );
177
+ onPlaybackErrorRef.current?.({
178
+ type: "hls",
179
+ fatal: data.fatal,
180
+ error: data
181
+ });
182
+ }
183
+ );
146
184
  hls.loadSource(videoSrc);
147
185
  hls.attachMedia(video);
148
186
  return () => {
@@ -152,16 +190,26 @@ const Video = ({
152
190
  const hasStarted = currentTime > 0 || isPlaying;
153
191
  const hasControls = hasStarted;
154
192
  const hasVolume = isVolumeOpen;
155
- const classes = classnames.classnames("video", className, {
156
- "video--with-controls": hasControls,
157
- "video--with-volume": hasVolume
158
- });
193
+ const classes = classnames.classnames(
194
+ "video",
195
+ className,
196
+ {
197
+ "video--with-controls": hasControls,
198
+ "video--with-volume": hasVolume
199
+ }
200
+ );
159
201
  const syncMediaState = () => {
160
202
  const video = videoRef.current;
161
- if (!video) return;
203
+ if (!video) {
204
+ return;
205
+ }
162
206
  setCurrentTime(video.currentTime);
163
- setDuration(video.duration || 0);
164
- setBuffered(getBufferedEnd(video));
207
+ setDuration(
208
+ video.duration || 0
209
+ );
210
+ setBuffered(
211
+ getBufferedEnd(video)
212
+ );
165
213
  setVolume(video.volume);
166
214
  setIsMuted(video.muted);
167
215
  setIsPlaying(!video.paused);
@@ -176,7 +224,9 @@ const Video = ({
176
224
  };
177
225
  const handlePlayToggle = async () => {
178
226
  const video = videoRef.current;
179
- if (!video) return;
227
+ if (!video) {
228
+ return;
229
+ }
180
230
  console.log("play click", {
181
231
  paused: video.paused,
182
232
  readyState: video.readyState,
@@ -187,9 +237,14 @@ const Video = ({
187
237
  if (video.paused) {
188
238
  try {
189
239
  await video.play();
190
- console.log("play success");
240
+ console.log(
241
+ "play success"
242
+ );
191
243
  } catch (error) {
192
- console.error("play failed", error);
244
+ console.error(
245
+ "play failed",
246
+ error
247
+ );
193
248
  }
194
249
  return;
195
250
  }
@@ -197,17 +252,23 @@ const Video = ({
197
252
  };
198
253
  const handleSeek = (nextValue) => {
199
254
  const video = videoRef.current;
200
- if (!video) return;
255
+ if (!video) {
256
+ return;
257
+ }
201
258
  video.currentTime = getClampedValue(
202
259
  nextValue,
203
260
  0,
204
261
  duration
205
262
  );
206
- setCurrentTime(video.currentTime);
263
+ setCurrentTime(
264
+ video.currentTime
265
+ );
207
266
  };
208
267
  const handleVolumeChange = (nextValue) => {
209
268
  const video = videoRef.current;
210
- if (!video) return;
269
+ if (!video) {
270
+ return;
271
+ }
211
272
  const nextVolume = getClampedValue(
212
273
  nextValue,
213
274
  0,
@@ -220,13 +281,17 @@ const Video = ({
220
281
  };
221
282
  const handleSoundToggle = () => {
222
283
  const video = videoRef.current;
223
- if (!video) return;
284
+ if (!video) {
285
+ return;
286
+ }
224
287
  video.muted = !video.muted;
225
288
  setIsMuted(video.muted);
226
289
  };
227
290
  const handleFullscreen = () => {
228
291
  const video = videoRef.current;
229
- if (!video) return;
292
+ if (!video) {
293
+ return;
294
+ }
230
295
  video.requestFullscreen?.();
231
296
  };
232
297
  const handleQualityChange = (quality) => {
@@ -270,12 +335,16 @@ const Video = ({
270
335
  };
271
336
  const handlePause = (event) => {
272
337
  setIsPlaying(false);
273
- commitProgress(event.currentTarget);
338
+ commitProgress(
339
+ event.currentTarget
340
+ );
274
341
  onPause?.(event);
275
342
  };
276
343
  const handleEnded = (event) => {
277
344
  syncMediaState();
278
- commitProgress(event.currentTarget);
345
+ commitProgress(
346
+ event.currentTarget
347
+ );
279
348
  onEnded?.(event);
280
349
  };
281
350
  const handleNativeError = (event) => {
@@ -331,21 +400,28 @@ const Video = ({
331
400
  }
332
401
  ),
333
402
  !hasStarted && /* @__PURE__ */ jsxRuntime.jsx(
334
- ButtonIcon__default.default,
403
+ Button__default.default,
335
404
  {
405
+ mode: "toolbar",
336
406
  className: "video__main-action",
337
- icon: "play",
338
- label: "Play video",
407
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icon__default.default, { name: "play" }),
408
+ "aria-label": "Play video",
339
409
  onClick: handlePlayToggle
340
410
  }
341
411
  )
342
412
  ] }),
343
413
  hasControls && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "video__controls", children: [
344
414
  /* @__PURE__ */ jsxRuntime.jsx(
345
- ButtonIcon__default.default,
415
+ Button__default.default,
346
416
  {
347
- icon: isPlaying ? "pause" : "play",
348
- label: isPlaying ? "Pause video" : "Play video",
417
+ mode: "toolbar",
418
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
419
+ Icon__default.default,
420
+ {
421
+ name: isPlaying ? "pause" : "play"
422
+ }
423
+ ),
424
+ "aria-label": isPlaying ? "Pause video" : "Play video",
349
425
  onClick: handlePlayToggle
350
426
  }
351
427
  ),
@@ -364,10 +440,11 @@ const Video = ({
364
440
  }
365
441
  ),
366
442
  /* @__PURE__ */ jsxRuntime.jsx(
367
- ButtonIcon__default.default,
443
+ Button__default.default,
368
444
  {
369
- icon: "fullscreen",
370
- label: "Fullscreen",
445
+ mode: "toolbar",
446
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icon__default.default, { name: "fullscreen" }),
447
+ "aria-label": "Fullscreen",
371
448
  onClick: handleFullscreen
372
449
  }
373
450
  ),
@@ -375,16 +452,28 @@ const Video = ({
375
452
  "div",
376
453
  {
377
454
  className: "video__sound-control",
378
- onMouseLeave: () => setIsVolumeOpen(false),
455
+ onMouseLeave: () => setIsVolumeOpen(
456
+ false
457
+ ),
379
458
  children: [
380
459
  /* @__PURE__ */ jsxRuntime.jsx(
381
- ButtonIcon__default.default,
460
+ Button__default.default,
382
461
  {
383
- icon: isMuted ? "sound-off" : "sound",
384
- label: isMuted ? "Unmute video" : "Mute video",
462
+ mode: "toolbar",
463
+ icon: /* @__PURE__ */ jsxRuntime.jsx(
464
+ Icon__default.default,
465
+ {
466
+ name: isMuted ? "sound-off" : "sound"
467
+ }
468
+ ),
469
+ "aria-label": isMuted ? "Unmute video" : "Mute video",
385
470
  onClick: handleSoundToggle,
386
- onMouseEnter: () => setIsVolumeOpen(true),
387
- onFocus: () => setIsVolumeOpen(true)
471
+ onMouseEnter: () => setIsVolumeOpen(
472
+ true
473
+ ),
474
+ onFocus: () => setIsVolumeOpen(
475
+ true
476
+ )
388
477
  }
389
478
  ),
390
479
  hasVolume && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "video__volume", children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -410,10 +499,11 @@ const Video = ({
410
499
  label: "Video quality",
411
500
  onChange: handleQualityChange,
412
501
  trigger: /* @__PURE__ */ jsxRuntime.jsx(
413
- ButtonIcon__default.default,
502
+ Button__default.default,
414
503
  {
415
- icon: "settings",
416
- label: "Video quality"
504
+ mode: "toolbar",
505
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Icon__default.default, { name: "settings" }),
506
+ "aria-label": "Video quality"
417
507
  }
418
508
  )
419
509
  }