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
@@ -3,39 +3,59 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var classnames = require('../helpers/classnames');
5
5
 
6
+ function hasContent(value) {
7
+ return value !== null && value !== void 0;
8
+ }
6
9
  const Field = ({
7
10
  label,
8
11
  hint,
9
12
  error,
13
+ action,
10
14
  required = false,
11
15
  disabled = false,
12
16
  htmlFor,
13
17
  className = "",
14
- children
18
+ children,
19
+ ...props
15
20
  }) => {
21
+ const hasLabel = hasContent(label);
22
+ const hasError = hasContent(error);
23
+ const hasHint = hasContent(hint);
24
+ const hasAction = hasContent(action);
16
25
  const classes = classnames.classnames(
17
26
  "field",
18
27
  className,
19
28
  {
20
29
  "field--disabled": disabled,
21
- "field--error": !!error
30
+ "field--error": hasError
31
+ }
32
+ );
33
+ return /* @__PURE__ */ jsxRuntime.jsxs(
34
+ "div",
35
+ {
36
+ className: classes,
37
+ ...props,
38
+ children: [
39
+ hasLabel && /* @__PURE__ */ jsxRuntime.jsxs(
40
+ "label",
41
+ {
42
+ className: "field__label",
43
+ htmlFor,
44
+ children: [
45
+ label,
46
+ required && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "field__required", children: [
47
+ " ",
48
+ "*"
49
+ ] })
50
+ ]
51
+ }
52
+ ),
53
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__control", children }),
54
+ hasError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__message field__message--error", children: error }) : hasHint ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__message", children: hint }) : null,
55
+ hasAction && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__action", children: action })
56
+ ]
22
57
  }
23
58
  );
24
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes, children: [
25
- label && /* @__PURE__ */ jsxRuntime.jsxs(
26
- "label",
27
- {
28
- className: "field__label",
29
- htmlFor,
30
- children: [
31
- label,
32
- required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "field__required", children: " *" })
33
- ]
34
- }
35
- ),
36
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__control", children }),
37
- error ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__message field__message--error", children: error }) : hint ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "field__message", children: hint }) : null
38
- ] });
39
59
  };
40
60
  var field_default = Field;
41
61
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/field/field.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;AAeA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB,QAAA;AAAA,MACnB,cAAA,EAAgB,CAAC,CAAC;AAAA;AACpB,GACF;AAEA,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACCA,eAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,cAAA;AAAA,QACV,OAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,oBAAYC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAkB,QAAA,EAAA,IAAA,EAAE;AAAA;AAAA;AAAA,KACnD;AAAA,oBAGFA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EACH,CAAA;AAAA,IAEC,KAAA,mBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACZ,QAAA,EAAA,KAAA,EACH,CAAA,GACE,IAAA,mBACFA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,gBACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"field.cjs","sourcesContent":["import React from 'react';\n//import './field.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface FieldProps {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n htmlFor?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Field: React.FC<FieldProps> = ({\n label,\n hint,\n error,\n required = false,\n disabled = false,\n htmlFor,\n className = '',\n children,\n}) => {\n const classes = classnames(\n 'field',\n className,\n {\n 'field--disabled': disabled,\n 'field--error': !!error,\n }\n );\n\n return (\n <div className={classes}>\n {label && (\n <label\n className=\"field__label\"\n htmlFor={htmlFor}\n >\n {label}\n {required && <span className=\"field__required\"> *</span>}\n </label>\n )}\n\n <div className=\"field__control\">\n {children}\n </div>\n\n {error ? (\n <div className=\"field__message field__message--error\">\n {error}\n </div>\n ) : hint ? (\n <div className=\"field__message\">\n {hint}\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default Field;"]}
1
+ {"version":3,"sources":["../../../src/components/field/field.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;AAmBA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OAAO,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA;AACrC;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,EAAA,MAAM,OAAA,GAAU,WAAW,IAAI,CAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,WAAW,MAAM,CAAA;AAEnC,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB,QAAA;AAAA,MACnB,cAAA,EAAgB;AAAA;AAClB,GACF;AAEA,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBACCA,eAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,cAAA;AAAA,YACV,OAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cAEA,QAAA,oBACCA,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAI;AAAA,eAAA,EAEP;AAAA;AAAA;AAAA,SAEJ;AAAA,wBAGFC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EACH,CAAA;AAAA,QAEC,QAAA,mBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACZ,QAAA,EAAA,KAAA,EACH,CAAA,GACE,OAAA,mBACFA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,gBACH,CAAA,GACE,IAAA;AAAA,QAEH,SAAA,oBACCA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"field.cjs","sourcesContent":["import React from 'react';\n\nimport { classnames } from '../helpers/classnames';\n\nexport interface FieldProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n action?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n htmlFor?: string;\n children: React.ReactNode;\n}\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nconst Field: React.FC<FieldProps> = ({\n label,\n hint,\n error,\n action,\n required = false,\n disabled = false,\n htmlFor,\n className = '',\n children,\n ...props\n}) => {\n const hasLabel = hasContent(label);\n const hasError = hasContent(error);\n const hasHint = hasContent(hint);\n const hasAction = hasContent(action);\n\n const classes = classnames(\n 'field',\n className,\n {\n 'field--disabled': disabled,\n 'field--error': hasError,\n },\n );\n\n return (\n <div\n className={classes}\n {...props}\n >\n {hasLabel && (\n <label\n className=\"field__label\"\n htmlFor={htmlFor}\n >\n {label}\n\n {required && (\n <span className=\"field__required\">\n {' '}\n *\n </span>\n )}\n </label>\n )}\n\n <div className=\"field__control\">\n {children}\n </div>\n\n {hasError ? (\n <div className=\"field__message field__message--error\">\n {error}\n </div>\n ) : hasHint ? (\n <div className=\"field__message\">\n {hint}\n </div>\n ) : null}\n\n {hasAction && (\n <div className=\"field__action\">\n {action}\n </div>\n )}\n </div>\n );\n};\n\nexport default Field;\n"]}
@@ -108,6 +108,23 @@
108
108
  /* motion */
109
109
  }
110
110
 
111
+ .field__action {
112
+ /* color */
113
+
114
+ /* typography */
115
+
116
+ /* size */
117
+ display: flex;
118
+ align-items: flex-start;
119
+ width: 100%;
120
+
121
+ /* border */
122
+
123
+ /* depth */
124
+
125
+ /* motion */
126
+ }
127
+
111
128
  .field--disabled {
112
129
  opacity: var(--field-opacity-disabled);
113
130
  }
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
- export interface FieldProps {
2
+ export interface FieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
3
3
  label?: React.ReactNode;
4
4
  hint?: React.ReactNode;
5
5
  error?: React.ReactNode;
6
+ action?: React.ReactNode;
6
7
  required?: boolean;
7
8
  disabled?: boolean;
8
9
  htmlFor?: string;
9
- className?: string;
10
10
  children: React.ReactNode;
11
11
  }
12
12
  declare const Field: React.FC<FieldProps>;
@@ -1,39 +1,59 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { classnames } from '../helpers/classnames';
3
3
 
4
+ function hasContent(value) {
5
+ return value !== null && value !== void 0;
6
+ }
4
7
  const Field = ({
5
8
  label,
6
9
  hint,
7
10
  error,
11
+ action,
8
12
  required = false,
9
13
  disabled = false,
10
14
  htmlFor,
11
15
  className = "",
12
- children
16
+ children,
17
+ ...props
13
18
  }) => {
19
+ const hasLabel = hasContent(label);
20
+ const hasError = hasContent(error);
21
+ const hasHint = hasContent(hint);
22
+ const hasAction = hasContent(action);
14
23
  const classes = classnames(
15
24
  "field",
16
25
  className,
17
26
  {
18
27
  "field--disabled": disabled,
19
- "field--error": !!error
28
+ "field--error": hasError
29
+ }
30
+ );
31
+ return /* @__PURE__ */ jsxs(
32
+ "div",
33
+ {
34
+ className: classes,
35
+ ...props,
36
+ children: [
37
+ hasLabel && /* @__PURE__ */ jsxs(
38
+ "label",
39
+ {
40
+ className: "field__label",
41
+ htmlFor,
42
+ children: [
43
+ label,
44
+ required && /* @__PURE__ */ jsxs("span", { className: "field__required", children: [
45
+ " ",
46
+ "*"
47
+ ] })
48
+ ]
49
+ }
50
+ ),
51
+ /* @__PURE__ */ jsx("div", { className: "field__control", children }),
52
+ hasError ? /* @__PURE__ */ jsx("div", { className: "field__message field__message--error", children: error }) : hasHint ? /* @__PURE__ */ jsx("div", { className: "field__message", children: hint }) : null,
53
+ hasAction && /* @__PURE__ */ jsx("div", { className: "field__action", children: action })
54
+ ]
20
55
  }
21
56
  );
22
- return /* @__PURE__ */ jsxs("div", { className: classes, children: [
23
- label && /* @__PURE__ */ jsxs(
24
- "label",
25
- {
26
- className: "field__label",
27
- htmlFor,
28
- children: [
29
- label,
30
- required && /* @__PURE__ */ jsx("span", { className: "field__required", children: " *" })
31
- ]
32
- }
33
- ),
34
- /* @__PURE__ */ jsx("div", { className: "field__control", children }),
35
- error ? /* @__PURE__ */ jsx("div", { className: "field__message field__message--error", children: error }) : hint ? /* @__PURE__ */ jsx("div", { className: "field__message", children: hint }) : null
36
- ] });
37
57
  };
38
58
  var field_default = Field;
39
59
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/field/field.tsx"],"names":[],"mappings":";;;AAeA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB,QAAA;AAAA,MACnB,cAAA,EAAgB,CAAC,CAAC;AAAA;AACpB,GACF;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,EACb,QAAA,EAAA;AAAA,IAAA,KAAA,oBACC,IAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,cAAA;AAAA,QACV,OAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA;AAAA,UACA,QAAA,oBAAY,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAkB,QAAA,EAAA,IAAA,EAAE;AAAA;AAAA;AAAA,KACnD;AAAA,oBAGF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EACH,CAAA;AAAA,IAEC,KAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACZ,QAAA,EAAA,KAAA,EACH,CAAA,GACE,IAAA,mBACF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,gBACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"field.js","sourcesContent":["import React from 'react';\n//import './field.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface FieldProps {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n htmlFor?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Field: React.FC<FieldProps> = ({\n label,\n hint,\n error,\n required = false,\n disabled = false,\n htmlFor,\n className = '',\n children,\n}) => {\n const classes = classnames(\n 'field',\n className,\n {\n 'field--disabled': disabled,\n 'field--error': !!error,\n }\n );\n\n return (\n <div className={classes}>\n {label && (\n <label\n className=\"field__label\"\n htmlFor={htmlFor}\n >\n {label}\n {required && <span className=\"field__required\"> *</span>}\n </label>\n )}\n\n <div className=\"field__control\">\n {children}\n </div>\n\n {error ? (\n <div className=\"field__message field__message--error\">\n {error}\n </div>\n ) : hint ? (\n <div className=\"field__message\">\n {hint}\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default Field;"]}
1
+ {"version":3,"sources":["../../../src/components/field/field.tsx"],"names":[],"mappings":";;;AAmBA,SAAS,WACP,KAAA,EAIA;AACA,EAAA,OAAO,KAAA,KAAU,QAAQ,KAAA,KAAU,MAAA;AACrC;AAEA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA,GAAW,KAAA;AAAA,EACX,OAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,WAAW,KAAK,CAAA;AACjC,EAAA,MAAM,OAAA,GAAU,WAAW,IAAI,CAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,WAAW,MAAM,CAAA;AAEnC,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB,QAAA;AAAA,MACnB,cAAA,EAAgB;AAAA;AAClB,GACF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,OAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA,oBACC,IAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,cAAA;AAAA,YACV,OAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cAEA,QAAA,oBACC,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBAAI;AAAA,eAAA,EAEP;AAAA;AAAA;AAAA,SAEJ;AAAA,wBAGF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EACH,CAAA;AAAA,QAEC,QAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sCAAA,EACZ,QAAA,EAAA,KAAA,EACH,CAAA,GACE,OAAA,mBACF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,gBACH,CAAA,GACE,IAAA;AAAA,QAEH,SAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,GAEJ;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"field.js","sourcesContent":["import React from 'react';\n\nimport { classnames } from '../helpers/classnames';\n\nexport interface FieldProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n error?: React.ReactNode;\n action?: React.ReactNode;\n required?: boolean;\n disabled?: boolean;\n htmlFor?: string;\n children: React.ReactNode;\n}\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nconst Field: React.FC<FieldProps> = ({\n label,\n hint,\n error,\n action,\n required = false,\n disabled = false,\n htmlFor,\n className = '',\n children,\n ...props\n}) => {\n const hasLabel = hasContent(label);\n const hasError = hasContent(error);\n const hasHint = hasContent(hint);\n const hasAction = hasContent(action);\n\n const classes = classnames(\n 'field',\n className,\n {\n 'field--disabled': disabled,\n 'field--error': hasError,\n },\n );\n\n return (\n <div\n className={classes}\n {...props}\n >\n {hasLabel && (\n <label\n className=\"field__label\"\n htmlFor={htmlFor}\n >\n {label}\n\n {required && (\n <span className=\"field__required\">\n {' '}\n *\n </span>\n )}\n </label>\n )}\n\n <div className=\"field__control\">\n {children}\n </div>\n\n {hasError ? (\n <div className=\"field__message field__message--error\">\n {error}\n </div>\n ) : hasHint ? (\n <div className=\"field__message\">\n {hint}\n </div>\n ) : null}\n\n {hasAction && (\n <div className=\"field__action\">\n {action}\n </div>\n )}\n </div>\n );\n};\n\nexport default Field;\n"]}
@@ -90,6 +90,9 @@ const FlipList = ({
90
90
  ...props,
91
91
  children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flip-list__items", children: items.map((item, itemIndex) => {
92
92
  const isOpen = resolvedOpenItemId === item.id;
93
+ const hasStatus = hasContent(
94
+ item.status
95
+ );
93
96
  const hasMeta = hasContent(
94
97
  item.meta
95
98
  );
@@ -118,8 +121,11 @@ const FlipList = ({
118
121
  "aria-controls": contentId,
119
122
  onClick: () => toggleItem(item.id),
120
123
  children: [
121
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__title", children: item.title }),
122
- hasMeta && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__meta", children: item.meta })
124
+ hasStatus && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__status", children: item.status }),
125
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flip-list__main", children: [
126
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__title", children: item.title }),
127
+ hasMeta && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flip-list__meta", children: item.meta })
128
+ ] })
123
129
  ]
124
130
  }
125
131
  ),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":["React","classnames","jsx","jsxs"],"mappings":"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","file":"flip-list.cjs","sourcesContent":["import React from 'react';\n\nimport './flip-list.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface FlipListItem {\n id: React.Key;\n title: React.ReactNode;\n meta?: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface FlipListProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n items: FlipListItem[];\n\n /**\n * Currently opened item in controlled mode.\n *\n * `null` means that all items are closed.\n *\n * When this prop is provided, FlipList does not\n * own the opened-item state.\n */\n openId?: React.Key | null;\n\n /**\n * Item opened during the initial render\n * in uncontrolled mode.\n *\n * Later changes to this prop do not control\n * the component state.\n */\n defaultOpenId?: React.Key;\n\n /**\n * Called when the user requests a change\n * of the opened item.\n *\n * Receives the item id when an item is opened,\n * and `null` when the currently opened item\n * is closed.\n */\n onOpenChange?: (\n id: React.Key | null,\n ) => void;\n\n /**\n * Scrolls the item that is open during\n * the initial render into view once.\n *\n * In uncontrolled mode, the initial item comes\n * from `defaultOpenId`.\n *\n * In controlled mode, the initial item comes\n * from `openId`.\n *\n * Later state changes never trigger scrolling.\n */\n scrollToInitialOpen?: boolean;\n}\n\ntype OpenItemId = React.Key | null;\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nfunction normalizeOpenItemId(\n items: FlipListItem[],\n openId: OpenItemId | undefined,\n): OpenItemId {\n if (\n openId === null ||\n openId === undefined\n ) {\n return null;\n }\n\n const hasMatchingItem = items.some(\n (item) => item.id === openId,\n );\n\n return hasMatchingItem\n ? openId\n : null;\n}\n\nconst FlipList: React.FC<FlipListProps> = ({\n items,\n openId,\n defaultOpenId,\n onOpenChange,\n scrollToInitialOpen = false,\n className = '',\n ...props\n}) => {\n const componentId = React.useId();\n\n const isControlled =\n openId !== undefined;\n\n const initialOpenItemIdRef =\n React.useRef<OpenItemId>(\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : defaultOpenId,\n ),\n );\n\n const shouldScrollInitiallyRef =\n React.useRef(scrollToInitialOpen);\n\n const initialOpenItemRef =\n React.useRef<HTMLDivElement | null>(\n null,\n );\n\n const hasScrolledInitiallyRef =\n React.useRef(false);\n\n const [\n uncontrolledOpenItemId,\n setUncontrolledOpenItemId,\n ] = React.useState<OpenItemId>(() =>\n normalizeOpenItemId(\n items,\n defaultOpenId,\n ),\n );\n\n const resolvedOpenItemId =\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : uncontrolledOpenItemId,\n );\n\n React.useEffect(() => {\n if (\n hasScrolledInitiallyRef.current ||\n !shouldScrollInitiallyRef.current ||\n initialOpenItemIdRef.current === null ||\n !initialOpenItemRef.current\n ) {\n return;\n }\n\n hasScrolledInitiallyRef.current = true;\n\n initialOpenItemRef.current.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n }, []);\n\n if (items.length === 0) {\n return null;\n }\n\n const classes = classnames(\n 'flip-list',\n className,\n {},\n );\n\n const toggleItem = (\n itemId: React.Key,\n ) => {\n const nextOpenItemId =\n resolvedOpenItemId === itemId\n ? null\n : itemId;\n\n if (!isControlled) {\n setUncontrolledOpenItemId(\n nextOpenItemId,\n );\n }\n\n onOpenChange?.(nextOpenItemId);\n };\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"flip-list__items\">\n {items.map((item, itemIndex) => {\n const isOpen =\n resolvedOpenItemId === item.id;\n\n const hasMeta = hasContent(\n item.meta,\n );\n\n const triggerId =\n `${componentId}-trigger-${itemIndex}`;\n\n const contentId =\n `${componentId}-content-${itemIndex}`;\n\n const itemClasses = classnames(\n 'flip-list__item',\n '',\n {\n 'flip-list__item--open':\n isOpen,\n },\n );\n\n return (\n <div\n key={item.id}\n ref={\n item.id ===\n initialOpenItemIdRef.current\n ? initialOpenItemRef\n : undefined\n }\n className={itemClasses}\n >\n <button\n className=\"flip-list__trigger\"\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={contentId}\n onClick={() =>\n toggleItem(item.id)\n }\n >\n <span className=\"flip-list__title\">\n {item.title}\n </span>\n\n {hasMeta && (\n <span className=\"flip-list__meta\">\n {item.meta}\n </span>\n )}\n </button>\n\n <div\n className=\"flip-list__content\"\n id={contentId}\n aria-labelledby={triggerId}\n hidden={!isOpen}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FlipList;\n"]}
1
+ {"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":["React","classnames","jsx","jsxs"],"mappings":"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","file":"flip-list.cjs","sourcesContent":["import React from 'react';\n\nimport './flip-list.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface FlipListItem {\n id: React.Key;\n title: React.ReactNode;\n status?: React.ReactNode;\n meta?: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface FlipListProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n items: FlipListItem[];\n\n /**\n * Currently opened item in controlled mode.\n *\n * `null` means that all items are closed.\n *\n * When this prop is provided, FlipList does not\n * own the opened-item state.\n */\n openId?: React.Key | null;\n\n /**\n * Item opened during the initial render\n * in uncontrolled mode.\n *\n * Later changes to this prop do not control\n * the component state.\n */\n defaultOpenId?: React.Key;\n\n /**\n * Called when the user requests a change\n * of the opened item.\n *\n * Receives the item id when an item is opened,\n * and `null` when the currently opened item\n * is closed.\n */\n onOpenChange?: (\n id: React.Key | null,\n ) => void;\n\n /**\n * Scrolls the item that is open during\n * the initial render into view once.\n *\n * In uncontrolled mode, the initial item comes\n * from `defaultOpenId`.\n *\n * In controlled mode, the initial item comes\n * from `openId`.\n *\n * Later state changes never trigger scrolling.\n */\n scrollToInitialOpen?: boolean;\n}\n\ntype OpenItemId = React.Key | null;\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nfunction normalizeOpenItemId(\n items: FlipListItem[],\n openId: OpenItemId | undefined,\n): OpenItemId {\n if (\n openId === null ||\n openId === undefined\n ) {\n return null;\n }\n\n const hasMatchingItem = items.some(\n (item) => item.id === openId,\n );\n\n return hasMatchingItem\n ? openId\n : null;\n}\n\nconst FlipList: React.FC<FlipListProps> = ({\n items,\n openId,\n defaultOpenId,\n onOpenChange,\n scrollToInitialOpen = false,\n className = '',\n ...props\n}) => {\n const componentId = React.useId();\n\n const isControlled =\n openId !== undefined;\n\n const initialOpenItemIdRef =\n React.useRef<OpenItemId>(\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : defaultOpenId,\n ),\n );\n\n const shouldScrollInitiallyRef =\n React.useRef(scrollToInitialOpen);\n\n const initialOpenItemRef =\n React.useRef<HTMLDivElement | null>(\n null,\n );\n\n const hasScrolledInitiallyRef =\n React.useRef(false);\n\n const [\n uncontrolledOpenItemId,\n setUncontrolledOpenItemId,\n ] = React.useState<OpenItemId>(() =>\n normalizeOpenItemId(\n items,\n defaultOpenId,\n ),\n );\n\n const resolvedOpenItemId =\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : uncontrolledOpenItemId,\n );\n\n React.useEffect(() => {\n if (\n hasScrolledInitiallyRef.current ||\n !shouldScrollInitiallyRef.current ||\n initialOpenItemIdRef.current === null ||\n !initialOpenItemRef.current\n ) {\n return;\n }\n\n hasScrolledInitiallyRef.current = true;\n\n initialOpenItemRef.current.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n }, []);\n\n if (items.length === 0) {\n return null;\n }\n\n const classes = classnames(\n 'flip-list',\n className,\n {},\n );\n\n const toggleItem = (\n itemId: React.Key,\n ) => {\n const nextOpenItemId =\n resolvedOpenItemId === itemId\n ? null\n : itemId;\n\n if (!isControlled) {\n setUncontrolledOpenItemId(\n nextOpenItemId,\n );\n }\n\n onOpenChange?.(nextOpenItemId);\n };\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"flip-list__items\">\n {items.map((item, itemIndex) => {\n const isOpen =\n resolvedOpenItemId === item.id;\n\n const hasStatus = hasContent(\n item.status,\n );\n\n const hasMeta = hasContent(\n item.meta,\n );\n\n const triggerId =\n `${componentId}-trigger-${itemIndex}`;\n\n const contentId =\n `${componentId}-content-${itemIndex}`;\n\n const itemClasses = classnames(\n 'flip-list__item',\n '',\n {\n 'flip-list__item--open':\n isOpen,\n },\n );\n\n return (\n <div\n key={item.id}\n ref={\n item.id ===\n initialOpenItemIdRef.current\n ? initialOpenItemRef\n : undefined\n }\n className={itemClasses}\n >\n <button\n className=\"flip-list__trigger\"\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={contentId}\n onClick={() =>\n toggleItem(item.id)\n }\n >\n {hasStatus && (\n <span className=\"flip-list__status\">\n {item.status}\n </span>\n )}\n\n <span className=\"flip-list__main\">\n <span className=\"flip-list__title\">\n {item.title}\n </span>\n\n {hasMeta && (\n <span className=\"flip-list__meta\">\n {item.meta}\n </span>\n )}\n </span>\n </button>\n\n <div\n className=\"flip-list__content\"\n id={contentId}\n aria-labelledby={triggerId}\n hidden={!isOpen}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FlipList;\n"]}
@@ -133,9 +133,8 @@
133
133
 
134
134
  /* size */
135
135
  display: flex;
136
- align-items: flex-start;
137
- justify-content: space-between;
138
- gap: var(--flip-list-trigger-column-gap);
136
+ flex-direction: column;
137
+ align-items: stretch;
139
138
  width: 100%;
140
139
  min-width: 0;
141
140
  max-width: 100%;
@@ -170,6 +169,53 @@
170
169
  /* motion */
171
170
  }
172
171
 
172
+ .flip-list__status {
173
+ /* color */
174
+
175
+ /* typography */
176
+
177
+ /* size */
178
+ --flip-list-status-gap:
179
+ var(--margin-tag);
180
+
181
+ display: block;
182
+ align-self: flex-start;
183
+ min-width: 0;
184
+ max-width: 100%;
185
+ margin:
186
+ 0
187
+ 0
188
+ var(--flip-list-status-gap)
189
+ 0;
190
+
191
+ /* border */
192
+
193
+ /* depth */
194
+
195
+ /* motion */
196
+ }
197
+
198
+ .flip-list__main {
199
+ /* color */
200
+
201
+ /* typography */
202
+
203
+ /* size */
204
+ display: flex;
205
+ align-items: flex-start;
206
+ justify-content: space-between;
207
+ gap: var(--flip-list-trigger-column-gap);
208
+ width: 100%;
209
+ min-width: 0;
210
+ max-width: 100%;
211
+
212
+ /* border */
213
+
214
+ /* depth */
215
+
216
+ /* motion */
217
+ }
218
+
173
219
  .flip-list__title {
174
220
  /* color */
175
221
  color: inherit;
@@ -3,6 +3,7 @@ import './flip-list.css';
3
3
  export interface FlipListItem {
4
4
  id: React.Key;
5
5
  title: React.ReactNode;
6
+ status?: React.ReactNode;
6
7
  meta?: React.ReactNode;
7
8
  content: React.ReactNode;
8
9
  }
@@ -84,6 +84,9 @@ const FlipList = ({
84
84
  ...props,
85
85
  children: /* @__PURE__ */ jsx("div", { className: "flip-list__items", children: items.map((item, itemIndex) => {
86
86
  const isOpen = resolvedOpenItemId === item.id;
87
+ const hasStatus = hasContent(
88
+ item.status
89
+ );
87
90
  const hasMeta = hasContent(
88
91
  item.meta
89
92
  );
@@ -112,8 +115,11 @@ const FlipList = ({
112
115
  "aria-controls": contentId,
113
116
  onClick: () => toggleItem(item.id),
114
117
  children: [
115
- /* @__PURE__ */ jsx("span", { className: "flip-list__title", children: item.title }),
116
- hasMeta && /* @__PURE__ */ jsx("span", { className: "flip-list__meta", children: item.meta })
118
+ hasStatus && /* @__PURE__ */ jsx("span", { className: "flip-list__status", children: item.status }),
119
+ /* @__PURE__ */ jsxs("span", { className: "flip-list__main", children: [
120
+ /* @__PURE__ */ jsx("span", { className: "flip-list__title", children: item.title }),
121
+ hasMeta && /* @__PURE__ */ jsx("span", { className: "flip-list__meta", children: item.meta })
122
+ ] })
117
123
  ]
118
124
  }
119
125
  ),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":[],"mappings":"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","file":"flip-list.js","sourcesContent":["import React from 'react';\n\nimport './flip-list.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface FlipListItem {\n id: React.Key;\n title: React.ReactNode;\n meta?: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface FlipListProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n items: FlipListItem[];\n\n /**\n * Currently opened item in controlled mode.\n *\n * `null` means that all items are closed.\n *\n * When this prop is provided, FlipList does not\n * own the opened-item state.\n */\n openId?: React.Key | null;\n\n /**\n * Item opened during the initial render\n * in uncontrolled mode.\n *\n * Later changes to this prop do not control\n * the component state.\n */\n defaultOpenId?: React.Key;\n\n /**\n * Called when the user requests a change\n * of the opened item.\n *\n * Receives the item id when an item is opened,\n * and `null` when the currently opened item\n * is closed.\n */\n onOpenChange?: (\n id: React.Key | null,\n ) => void;\n\n /**\n * Scrolls the item that is open during\n * the initial render into view once.\n *\n * In uncontrolled mode, the initial item comes\n * from `defaultOpenId`.\n *\n * In controlled mode, the initial item comes\n * from `openId`.\n *\n * Later state changes never trigger scrolling.\n */\n scrollToInitialOpen?: boolean;\n}\n\ntype OpenItemId = React.Key | null;\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nfunction normalizeOpenItemId(\n items: FlipListItem[],\n openId: OpenItemId | undefined,\n): OpenItemId {\n if (\n openId === null ||\n openId === undefined\n ) {\n return null;\n }\n\n const hasMatchingItem = items.some(\n (item) => item.id === openId,\n );\n\n return hasMatchingItem\n ? openId\n : null;\n}\n\nconst FlipList: React.FC<FlipListProps> = ({\n items,\n openId,\n defaultOpenId,\n onOpenChange,\n scrollToInitialOpen = false,\n className = '',\n ...props\n}) => {\n const componentId = React.useId();\n\n const isControlled =\n openId !== undefined;\n\n const initialOpenItemIdRef =\n React.useRef<OpenItemId>(\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : defaultOpenId,\n ),\n );\n\n const shouldScrollInitiallyRef =\n React.useRef(scrollToInitialOpen);\n\n const initialOpenItemRef =\n React.useRef<HTMLDivElement | null>(\n null,\n );\n\n const hasScrolledInitiallyRef =\n React.useRef(false);\n\n const [\n uncontrolledOpenItemId,\n setUncontrolledOpenItemId,\n ] = React.useState<OpenItemId>(() =>\n normalizeOpenItemId(\n items,\n defaultOpenId,\n ),\n );\n\n const resolvedOpenItemId =\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : uncontrolledOpenItemId,\n );\n\n React.useEffect(() => {\n if (\n hasScrolledInitiallyRef.current ||\n !shouldScrollInitiallyRef.current ||\n initialOpenItemIdRef.current === null ||\n !initialOpenItemRef.current\n ) {\n return;\n }\n\n hasScrolledInitiallyRef.current = true;\n\n initialOpenItemRef.current.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n }, []);\n\n if (items.length === 0) {\n return null;\n }\n\n const classes = classnames(\n 'flip-list',\n className,\n {},\n );\n\n const toggleItem = (\n itemId: React.Key,\n ) => {\n const nextOpenItemId =\n resolvedOpenItemId === itemId\n ? null\n : itemId;\n\n if (!isControlled) {\n setUncontrolledOpenItemId(\n nextOpenItemId,\n );\n }\n\n onOpenChange?.(nextOpenItemId);\n };\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"flip-list__items\">\n {items.map((item, itemIndex) => {\n const isOpen =\n resolvedOpenItemId === item.id;\n\n const hasMeta = hasContent(\n item.meta,\n );\n\n const triggerId =\n `${componentId}-trigger-${itemIndex}`;\n\n const contentId =\n `${componentId}-content-${itemIndex}`;\n\n const itemClasses = classnames(\n 'flip-list__item',\n '',\n {\n 'flip-list__item--open':\n isOpen,\n },\n );\n\n return (\n <div\n key={item.id}\n ref={\n item.id ===\n initialOpenItemIdRef.current\n ? initialOpenItemRef\n : undefined\n }\n className={itemClasses}\n >\n <button\n className=\"flip-list__trigger\"\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={contentId}\n onClick={() =>\n toggleItem(item.id)\n }\n >\n <span className=\"flip-list__title\">\n {item.title}\n </span>\n\n {hasMeta && (\n <span className=\"flip-list__meta\">\n {item.meta}\n </span>\n )}\n </button>\n\n <div\n className=\"flip-list__content\"\n id={contentId}\n aria-labelledby={triggerId}\n hidden={!isOpen}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FlipList;\n"]}
1
+ {"version":3,"sources":["../../../src/components/flip-list/flip-list.tsx"],"names":[],"mappings":"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","file":"flip-list.js","sourcesContent":["import React from 'react';\n\nimport './flip-list.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface FlipListItem {\n id: React.Key;\n title: React.ReactNode;\n status?: React.ReactNode;\n meta?: React.ReactNode;\n content: React.ReactNode;\n}\n\nexport interface FlipListProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n > {\n items: FlipListItem[];\n\n /**\n * Currently opened item in controlled mode.\n *\n * `null` means that all items are closed.\n *\n * When this prop is provided, FlipList does not\n * own the opened-item state.\n */\n openId?: React.Key | null;\n\n /**\n * Item opened during the initial render\n * in uncontrolled mode.\n *\n * Later changes to this prop do not control\n * the component state.\n */\n defaultOpenId?: React.Key;\n\n /**\n * Called when the user requests a change\n * of the opened item.\n *\n * Receives the item id when an item is opened,\n * and `null` when the currently opened item\n * is closed.\n */\n onOpenChange?: (\n id: React.Key | null,\n ) => void;\n\n /**\n * Scrolls the item that is open during\n * the initial render into view once.\n *\n * In uncontrolled mode, the initial item comes\n * from `defaultOpenId`.\n *\n * In controlled mode, the initial item comes\n * from `openId`.\n *\n * Later state changes never trigger scrolling.\n */\n scrollToInitialOpen?: boolean;\n}\n\ntype OpenItemId = React.Key | null;\n\nfunction hasContent(\n value: React.ReactNode,\n): value is Exclude<\n React.ReactNode,\n null | undefined\n> {\n return value !== null && value !== undefined;\n}\n\nfunction normalizeOpenItemId(\n items: FlipListItem[],\n openId: OpenItemId | undefined,\n): OpenItemId {\n if (\n openId === null ||\n openId === undefined\n ) {\n return null;\n }\n\n const hasMatchingItem = items.some(\n (item) => item.id === openId,\n );\n\n return hasMatchingItem\n ? openId\n : null;\n}\n\nconst FlipList: React.FC<FlipListProps> = ({\n items,\n openId,\n defaultOpenId,\n onOpenChange,\n scrollToInitialOpen = false,\n className = '',\n ...props\n}) => {\n const componentId = React.useId();\n\n const isControlled =\n openId !== undefined;\n\n const initialOpenItemIdRef =\n React.useRef<OpenItemId>(\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : defaultOpenId,\n ),\n );\n\n const shouldScrollInitiallyRef =\n React.useRef(scrollToInitialOpen);\n\n const initialOpenItemRef =\n React.useRef<HTMLDivElement | null>(\n null,\n );\n\n const hasScrolledInitiallyRef =\n React.useRef(false);\n\n const [\n uncontrolledOpenItemId,\n setUncontrolledOpenItemId,\n ] = React.useState<OpenItemId>(() =>\n normalizeOpenItemId(\n items,\n defaultOpenId,\n ),\n );\n\n const resolvedOpenItemId =\n normalizeOpenItemId(\n items,\n isControlled\n ? openId\n : uncontrolledOpenItemId,\n );\n\n React.useEffect(() => {\n if (\n hasScrolledInitiallyRef.current ||\n !shouldScrollInitiallyRef.current ||\n initialOpenItemIdRef.current === null ||\n !initialOpenItemRef.current\n ) {\n return;\n }\n\n hasScrolledInitiallyRef.current = true;\n\n initialOpenItemRef.current.scrollIntoView({\n behavior: 'auto',\n block: 'start',\n });\n }, []);\n\n if (items.length === 0) {\n return null;\n }\n\n const classes = classnames(\n 'flip-list',\n className,\n {},\n );\n\n const toggleItem = (\n itemId: React.Key,\n ) => {\n const nextOpenItemId =\n resolvedOpenItemId === itemId\n ? null\n : itemId;\n\n if (!isControlled) {\n setUncontrolledOpenItemId(\n nextOpenItemId,\n );\n }\n\n onOpenChange?.(nextOpenItemId);\n };\n\n return (\n <div\n className={classes}\n {...props}\n >\n <div className=\"flip-list__items\">\n {items.map((item, itemIndex) => {\n const isOpen =\n resolvedOpenItemId === item.id;\n\n const hasStatus = hasContent(\n item.status,\n );\n\n const hasMeta = hasContent(\n item.meta,\n );\n\n const triggerId =\n `${componentId}-trigger-${itemIndex}`;\n\n const contentId =\n `${componentId}-content-${itemIndex}`;\n\n const itemClasses = classnames(\n 'flip-list__item',\n '',\n {\n 'flip-list__item--open':\n isOpen,\n },\n );\n\n return (\n <div\n key={item.id}\n ref={\n item.id ===\n initialOpenItemIdRef.current\n ? initialOpenItemRef\n : undefined\n }\n className={itemClasses}\n >\n <button\n className=\"flip-list__trigger\"\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={contentId}\n onClick={() =>\n toggleItem(item.id)\n }\n >\n {hasStatus && (\n <span className=\"flip-list__status\">\n {item.status}\n </span>\n )}\n\n <span className=\"flip-list__main\">\n <span className=\"flip-list__title\">\n {item.title}\n </span>\n\n {hasMeta && (\n <span className=\"flip-list__meta\">\n {item.meta}\n </span>\n )}\n </span>\n </button>\n\n <div\n className=\"flip-list__content\"\n id={contentId}\n aria-labelledby={triggerId}\n hidden={!isOpen}\n >\n {item.content}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default FlipList;\n"]}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var button = require('./button/button');
4
- var buttonIcon = require('./button-icon/button-icon');
5
4
  var input = require('./input/input');
6
5
  var textarea = require('./textarea/textarea');
7
6
  var select = require('./select/select');
@@ -33,7 +32,6 @@ var avatarUpload = require('./avatar-upload/avatar-upload');
33
32
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
34
33
 
35
34
  var button__default = /*#__PURE__*/_interopDefault(button);
36
- var buttonIcon__default = /*#__PURE__*/_interopDefault(buttonIcon);
37
35
  var input__default = /*#__PURE__*/_interopDefault(input);
38
36
  var textarea__default = /*#__PURE__*/_interopDefault(textarea);
39
37
  var select__default = /*#__PURE__*/_interopDefault(select);
@@ -67,10 +65,6 @@ Object.defineProperty(exports, "Button", {
67
65
  enumerable: true,
68
66
  get: function () { return button__default.default; }
69
67
  });
70
- Object.defineProperty(exports, "ButtonIcon", {
71
- enumerable: true,
72
- get: function () { return buttonIcon__default.default; }
73
- });
74
68
  Object.defineProperty(exports, "Input", {
75
69
  enumerable: true,
76
70
  get: function () { return input__default.default; }
@@ -1,7 +1,5 @@
1
1
  export { default as Button } from './button/button';
2
2
  export type { ButtonProps } from './button/button';
3
- export { default as ButtonIcon } from './button-icon/button-icon';
4
- export type { ButtonIconProps } from './button-icon/button-icon';
5
3
  export { default as Input } from './input/input';
6
4
  export type { InputProps } from './input/input';
7
5
  export { default as Textarea } from './textarea/textarea';
@@ -1,5 +1,4 @@
1
1
  export { default as Button } from './button/button';
2
- export { default as ButtonIcon } from './button-icon/button-icon';
3
2
  export { default as Input } from './input/input';
4
3
  export { default as Textarea } from './textarea/textarea';
5
4
  export { default as Select } from './select/select';
@@ -2,6 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var classnames = require('../helpers/classnames');
5
+ require('./radio.css');
5
6
 
6
7
  const Radio = ({
7
8
  label,
@@ -16,6 +17,7 @@ const Radio = ({
16
17
  "radio--disabled": disabled
17
18
  }
18
19
  );
20
+ const hasLabel = label !== null && label !== void 0;
19
21
  return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: classes, children: [
20
22
  /* @__PURE__ */ jsxRuntime.jsx(
21
23
  "input",
@@ -26,7 +28,7 @@ const Radio = ({
26
28
  ...props
27
29
  }
28
30
  ),
29
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "radio__label", children: label })
31
+ hasLabel ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "radio__label", children: label }) : null
30
32
  ] });
31
33
  };
32
34
  var radio_default = Radio;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/radio/radio.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;AASA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB;AAAA;AACrB,GACF;AAEA,EAAA,uBACEC,eAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAA,EAChB,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,cAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACL,QAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,KAAA,oBAASA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"radio.cjs","sourcesContent":["import React from 'react';\n//import './radio.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface RadioProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nconst Radio: React.FC<RadioProps> = ({\n label,\n className = '',\n disabled = false,\n ...props\n}) => {\n const classes = classnames(\n 'radio',\n className,\n {\n 'radio--disabled': disabled,\n }\n );\n\n return (\n <label className={classes}>\n <input\n className=\"radio__input\"\n type=\"radio\"\n disabled={disabled}\n {...props}\n />\n {label && <span className=\"radio__label\">{label}</span>}\n </label>\n );\n};\n\nexport default Radio;"]}
1
+ {"version":3,"sources":["../../../src/components/radio/radio.tsx"],"names":["classnames","jsxs","jsx"],"mappings":";;;;;;AAUA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAUA,qBAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB;AAAA;AACrB,GACF;AAEA,EAAA,MAAM,QAAA,GACJ,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA;AAE9B,EAAA,uBACEC,eAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAA,EAChB,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,cAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACL,QAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IAEC,2BACCA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACb,iBACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"radio.cjs","sourcesContent":["import React from 'react';\n\nimport { classnames } from '../helpers/classnames';\nimport './radio.css';\n\nexport interface RadioProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nconst Radio: React.FC<RadioProps> = ({\n label,\n className = '',\n disabled = false,\n ...props\n}) => {\n const classes = classnames(\n 'radio',\n className,\n {\n 'radio--disabled': disabled,\n },\n );\n\n const hasLabel =\n label !== null && label !== undefined;\n\n return (\n <label className={classes}>\n <input\n className=\"radio__input\"\n type=\"radio\"\n disabled={disabled}\n {...props}\n />\n\n {hasLabel ? (\n <span className=\"radio__label\">\n {label}\n </span>\n ) : null}\n </label>\n );\n};\n\nexport default Radio;\n"]}
@@ -1,6 +1,6 @@
1
1
  .radio {
2
2
  /* color */
3
- --radio-label-color: var(--color-text);
3
+ --radio-label-color: auto;
4
4
 
5
5
  color: var(--radio-label-color);
6
6
 
@@ -40,6 +40,7 @@
40
40
 
41
41
  .radio__input {
42
42
  /* color */
43
+ accent-color: var(--color-primary-2);
43
44
 
44
45
  /* typography */
45
46
 
@@ -71,10 +72,32 @@
71
72
  }
72
73
 
73
74
  .radio--disabled {
75
+ /* color */
76
+
77
+ /* typography */
78
+
79
+ /* size */
80
+
81
+ /* border */
82
+
83
+ /* depth */
84
+
85
+ /* motion */
74
86
  opacity: var(--radio-opacity-disabled);
75
87
  cursor: not-allowed;
76
88
  }
77
89
 
78
90
  .radio__input:disabled {
91
+ /* color */
92
+
93
+ /* typography */
94
+
95
+ /* size */
96
+
97
+ /* border */
98
+
99
+ /* depth */
100
+
101
+ /* motion */
79
102
  cursor: not-allowed;
80
103
  }
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import './radio.css';
2
3
  export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
4
  label?: React.ReactNode;
4
5
  }
@@ -1,5 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { classnames } from '../helpers/classnames';
3
+ import './radio.css';
3
4
 
4
5
  const Radio = ({
5
6
  label,
@@ -14,6 +15,7 @@ const Radio = ({
14
15
  "radio--disabled": disabled
15
16
  }
16
17
  );
18
+ const hasLabel = label !== null && label !== void 0;
17
19
  return /* @__PURE__ */ jsxs("label", { className: classes, children: [
18
20
  /* @__PURE__ */ jsx(
19
21
  "input",
@@ -24,7 +26,7 @@ const Radio = ({
24
26
  ...props
25
27
  }
26
28
  ),
27
- label && /* @__PURE__ */ jsx("span", { className: "radio__label", children: label })
29
+ hasLabel ? /* @__PURE__ */ jsx("span", { className: "radio__label", children: label }) : null
28
30
  ] });
29
31
  };
30
32
  var radio_default = Radio;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/radio/radio.tsx"],"names":[],"mappings":";;;AASA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB;AAAA;AACrB,GACF;AAEA,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,cAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACL,QAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IACC,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAgB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAClD,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"radio.js","sourcesContent":["import React from 'react';\n//import './radio.css';\nimport { classnames } from '../helpers/classnames';\n\nexport interface RadioProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nconst Radio: React.FC<RadioProps> = ({\n label,\n className = '',\n disabled = false,\n ...props\n}) => {\n const classes = classnames(\n 'radio',\n className,\n {\n 'radio--disabled': disabled,\n }\n );\n\n return (\n <label className={classes}>\n <input\n className=\"radio__input\"\n type=\"radio\"\n disabled={disabled}\n {...props}\n />\n {label && <span className=\"radio__label\">{label}</span>}\n </label>\n );\n};\n\nexport default Radio;"]}
1
+ {"version":3,"sources":["../../../src/components/radio/radio.tsx"],"names":[],"mappings":";;;;AAUA,MAAM,QAA8B,CAAC;AAAA,EACnC,KAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA,GAAW,KAAA;AAAA,EACX,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,OAAA,GAAU,UAAA;AAAA,IACd,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,iBAAA,EAAmB;AAAA;AACrB,GACF;AAEA,EAAA,MAAM,QAAA,GACJ,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA;AAE9B,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,cAAA;AAAA,QACV,IAAA,EAAK,OAAA;AAAA,QACL,QAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IAEC,2BACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EACb,iBACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ,CAAA;AAEA,IAAO,aAAA,GAAQ","file":"radio.js","sourcesContent":["import React from 'react';\n\nimport { classnames } from '../helpers/classnames';\nimport './radio.css';\n\nexport interface RadioProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: React.ReactNode;\n}\n\nconst Radio: React.FC<RadioProps> = ({\n label,\n className = '',\n disabled = false,\n ...props\n}) => {\n const classes = classnames(\n 'radio',\n className,\n {\n 'radio--disabled': disabled,\n },\n );\n\n const hasLabel =\n label !== null && label !== undefined;\n\n return (\n <label className={classes}>\n <input\n className=\"radio__input\"\n type=\"radio\"\n disabled={disabled}\n {...props}\n />\n\n {hasLabel ? (\n <span className=\"radio__label\">\n {label}\n </span>\n ) : null}\n </label>\n );\n};\n\nexport default Radio;\n"]}