@chayns-ui/core 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +9 -3
  2. package/dist/accordion.css +66 -2
  3. package/dist/badge.css +3 -3
  4. package/dist/banner.css +89 -0
  5. package/dist/button.css +16 -2
  6. package/dist/card.css +29 -2
  7. package/dist/checkbox.css +24 -13
  8. package/dist/combo-box.css +20 -2
  9. package/dist/components/accordion/Accordion.d.ts +10 -2
  10. package/dist/components/accordion/Accordion.d.ts.map +1 -1
  11. package/dist/components/accordion/Accordion.js +120 -46
  12. package/dist/components/accordion/Accordion.js.map +1 -1
  13. package/dist/components/accordion/Accordion.types.d.ts +24 -1
  14. package/dist/components/accordion/Accordion.types.d.ts.map +1 -1
  15. package/dist/components/accordion/Accordion.types.js +6 -0
  16. package/dist/components/accordion/Accordion.types.js.map +1 -0
  17. package/dist/components/accordion/AccordionContext.d.ts +9 -0
  18. package/dist/components/accordion/AccordionContext.d.ts.map +1 -1
  19. package/dist/components/accordion/AccordionContext.js +8 -2
  20. package/dist/components/accordion/AccordionContext.js.map +1 -1
  21. package/dist/components/accordion-group/AccordionGroup.d.ts +1 -1
  22. package/dist/components/accordion-group/AccordionGroup.d.ts.map +1 -1
  23. package/dist/components/accordion-group/AccordionGroup.js +3 -3
  24. package/dist/components/accordion-group/AccordionGroup.js.map +1 -1
  25. package/dist/components/avatar/Avatar.js +1 -1
  26. package/dist/components/avatar-group/AvatarGroup.js +1 -1
  27. package/dist/components/badge/Badge.js +1 -1
  28. package/dist/components/banner/Banner.d.ts +3 -0
  29. package/dist/components/banner/Banner.d.ts.map +1 -0
  30. package/dist/components/banner/Banner.js +46 -0
  31. package/dist/components/banner/Banner.js.map +1 -0
  32. package/dist/components/banner/Banner.types.d.ts +24 -0
  33. package/dist/components/banner/Banner.types.d.ts.map +1 -0
  34. package/dist/components/banner/Banner.types.js +11 -0
  35. package/dist/components/banner/Banner.types.js.map +1 -0
  36. package/dist/components/button/Button.d.ts +1 -1
  37. package/dist/components/button/Button.d.ts.map +1 -1
  38. package/dist/components/button/Button.js +8 -3
  39. package/dist/components/button/Button.js.map +1 -1
  40. package/dist/components/button/Button.types.d.ts +15 -11
  41. package/dist/components/button/Button.types.d.ts.map +1 -1
  42. package/dist/components/button/Button.types.js.map +1 -1
  43. package/dist/components/button/button-icon/ButtonIcon.d.ts.map +1 -1
  44. package/dist/components/button/button-icon/ButtonIcon.js +18 -12
  45. package/dist/components/button/button-icon/ButtonIcon.js.map +1 -1
  46. package/dist/components/card/Card.d.ts +4 -2
  47. package/dist/components/card/Card.d.ts.map +1 -1
  48. package/dist/components/card/Card.js +24 -8
  49. package/dist/components/card/Card.js.map +1 -1
  50. package/dist/components/card/Card.types.d.ts +10 -12
  51. package/dist/components/card/Card.types.d.ts.map +1 -1
  52. package/dist/components/checkbox/Checkbox.d.ts +1 -1
  53. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  54. package/dist/components/checkbox/Checkbox.js +15 -6
  55. package/dist/components/checkbox/Checkbox.js.map +1 -1
  56. package/dist/components/checkbox/Checkbox.types.d.ts +2 -0
  57. package/dist/components/checkbox/Checkbox.types.d.ts.map +1 -1
  58. package/dist/components/combo-box/ComboBox.d.ts.map +1 -1
  59. package/dist/components/combo-box/ComboBox.js +19 -2
  60. package/dist/components/combo-box/ComboBox.js.map +1 -1
  61. package/dist/components/date-time-picker/DateTimePicker.d.ts +4 -0
  62. package/dist/components/date-time-picker/DateTimePicker.d.ts.map +1 -0
  63. package/dist/components/date-time-picker/DateTimePicker.js +339 -0
  64. package/dist/components/date-time-picker/DateTimePicker.js.map +1 -0
  65. package/dist/components/date-time-picker/DateTimePicker.types.d.ts +26 -0
  66. package/dist/components/date-time-picker/DateTimePicker.types.d.ts.map +1 -0
  67. package/dist/components/date-time-picker/DateTimePicker.types.js +12 -0
  68. package/dist/components/date-time-picker/DateTimePicker.types.js.map +1 -0
  69. package/dist/components/icon-button/IconButton.d.ts +7 -2
  70. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  71. package/dist/components/icon-button/IconButton.js +8 -3
  72. package/dist/components/icon-button/IconButton.js.map +1 -1
  73. package/dist/components/icon-button/IconButton.types.d.ts +7 -4
  74. package/dist/components/icon-button/IconButton.types.d.ts.map +1 -1
  75. package/dist/components/list/List.js +1 -1
  76. package/dist/components/popup/Popup.js +1 -1
  77. package/dist/components/popup/PopupList.js +1 -1
  78. package/dist/components/radio-group/RadioGroup.d.ts.map +1 -1
  79. package/dist/components/radio-group/RadioGroup.js +17 -8
  80. package/dist/components/radio-group/RadioGroup.js.map +1 -1
  81. package/dist/components/radio-group/RadioGroup.types.d.ts +5 -3
  82. package/dist/components/radio-group/RadioGroup.types.d.ts.map +1 -1
  83. package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -1
  84. package/dist/components/segmented-control/SegmentedControl.js +12 -5
  85. package/dist/components/segmented-control/SegmentedControl.js.map +1 -1
  86. package/dist/components/segmented-control/SegmentedControl.types.d.ts +5 -2
  87. package/dist/components/segmented-control/SegmentedControl.types.d.ts.map +1 -1
  88. package/dist/components/split-button/SplitButton.d.ts +1 -1
  89. package/dist/components/split-button/SplitButton.d.ts.map +1 -1
  90. package/dist/components/split-button/SplitButton.js +9 -17
  91. package/dist/components/split-button/SplitButton.js.map +1 -1
  92. package/dist/components/switch/Switch.d.ts +1 -1
  93. package/dist/components/switch/Switch.d.ts.map +1 -1
  94. package/dist/components/switch/Switch.js +13 -5
  95. package/dist/components/switch/Switch.js.map +1 -1
  96. package/dist/components/switch/Switch.types.d.ts +2 -0
  97. package/dist/components/switch/Switch.types.d.ts.map +1 -1
  98. package/dist/components/text-area/TextArea.d.ts +1 -1
  99. package/dist/components/text-area/TextArea.d.ts.map +1 -1
  100. package/dist/components/text-area/TextArea.js +5 -4
  101. package/dist/components/text-area/TextArea.js.map +1 -1
  102. package/dist/components/text-field/TextField.d.ts +1 -1
  103. package/dist/components/text-field/TextField.d.ts.map +1 -1
  104. package/dist/components/text-field/TextField.js +5 -4
  105. package/dist/components/text-field/TextField.js.map +1 -1
  106. package/dist/date-time-picker.css +121 -0
  107. package/dist/index.d.ts +9 -5
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +6 -2
  110. package/dist/list.css +4 -4
  111. package/dist/radio-group.css +13 -1
  112. package/dist/segmented-control.css +24 -7
  113. package/dist/split-button.css +1 -1
  114. package/dist/styles.css +2 -1
  115. package/dist/switch.css +18 -5
  116. package/dist/text-area.css +2 -2
  117. package/dist/text-field.css +1 -1
  118. package/package.json +3 -2
  119. package/dist/components/message-box/MessageBox.d.ts +0 -4
  120. package/dist/components/message-box/MessageBox.d.ts.map +0 -1
  121. package/dist/components/message-box/MessageBox.js +0 -19
  122. package/dist/components/message-box/MessageBox.js.map +0 -1
  123. package/dist/components/message-box/MessageBox.types.d.ts +0 -13
  124. package/dist/components/message-box/MessageBox.types.d.ts.map +0 -1
  125. package/dist/message-box.css +0 -26
@@ -1,17 +1,25 @@
1
+ import { forwardRef } from "react";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  //#region src/components/switch/Switch.tsx
3
- function Switch({ children, className, ...inputProps }) {
4
+ var Switch = forwardRef(function Switch({ children, className, description, ...inputProps }, ref) {
4
5
  const inputClassName = ["chayns-switch__input", className].filter(Boolean).join(" ");
5
6
  return /* @__PURE__ */ jsxs("label", {
6
7
  className: "chayns-switch",
7
8
  children: [
8
- /* @__PURE__ */ jsx("span", {
9
- className: "chayns-switch__label",
10
- children
9
+ /* @__PURE__ */ jsxs("span", {
10
+ className: "chayns-switch__content",
11
+ children: [/* @__PURE__ */ jsx("span", {
12
+ className: "chayns-switch__label",
13
+ children
14
+ }), description !== void 0 ? /* @__PURE__ */ jsx("span", {
15
+ className: "chayns-switch__description",
16
+ children: description
17
+ }) : null]
11
18
  }),
12
19
  /* @__PURE__ */ jsx("input", {
13
20
  ...inputProps,
14
21
  className: inputClassName,
22
+ ref,
15
23
  type: "checkbox"
16
24
  }),
17
25
  /* @__PURE__ */ jsx("span", {
@@ -21,7 +29,7 @@ function Switch({ children, className, ...inputProps }) {
21
29
  })
22
30
  ]
23
31
  });
24
- }
32
+ });
25
33
  //#endregion
26
34
  export { Switch as default };
27
35
 
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","names":[],"sources":["../../../src/components/switch/Switch.tsx"],"sourcesContent":["import type { SwitchProps } from './Switch.types.js';\n\nfunction Switch({ children, className, ...inputProps }: SwitchProps) {\n const inputClassName = ['chayns-switch__input', className].filter(Boolean).join(' ');\n\n return (\n <label className=\"chayns-switch\">\n <span className=\"chayns-switch__label\">{children}</span>\n <input {...inputProps} className={inputClassName} type=\"checkbox\" />\n <span aria-hidden=\"true\" className=\"chayns-switch__control\">\n <span className=\"chayns-switch__knob\" />\n </span>\n </label>\n );\n}\n\nexport default Switch;\n"],"mappings":";;AAEA,SAAS,OAAO,EAAE,UAAU,WAAW,GAAG,cAA2B;CACnE,MAAM,iBAAiB,CAAC,wBAAwB,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEnF,OACE,qBAAC,SAAD;EAAO,WAAU;EAAjB,UAAA;GACE,oBAAC,QAAD;IAAM,WAAU;IAAwB;GAAe,CAAA;GACvD,oBAAC,SAAD;IAAO,GAAI;IAAY,WAAW;IAAgB,MAAK;GAAY,CAAA;GACnE,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IACjC,UAAA,oBAAC,QAAD,EAAM,WAAU,sBAAuB,CAAA;GACnC,CAAA;EACD;;AAEX"}
1
+ {"version":3,"file":"Switch.js","names":[],"sources":["../../../src/components/switch/Switch.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport type { SwitchProps } from './Switch.types.js';\n\nconst Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { children, className, description, ...inputProps },\n ref,\n) {\n const inputClassName = ['chayns-switch__input', className].filter(Boolean).join(' ');\n\n return (\n <label className=\"chayns-switch\">\n <span className=\"chayns-switch__content\">\n <span className=\"chayns-switch__label\">{children}</span>\n {description !== undefined ? (\n <span className=\"chayns-switch__description\">{description}</span>\n ) : null}\n </span>\n <input {...inputProps} className={inputClassName} ref={ref} type=\"checkbox\" />\n <span aria-hidden=\"true\" className=\"chayns-switch__control\">\n <span className=\"chayns-switch__knob\" />\n </span>\n </label>\n );\n});\n\nexport default Switch;\n"],"mappings":";;;AAIA,IAAM,SAAS,WAA0C,SAAS,OAChE,EAAE,UAAU,WAAW,aAAa,GAAG,cACvC,KACA;CACA,MAAM,iBAAiB,CAAC,wBAAwB,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEnF,OACE,qBAAC,SAAD;EAAO,WAAU;EAAjB,UAAA;GACE,qBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,oBAAC,QAAD;KAAM,WAAU;KAAwB;IAAe,CAAA,GACtD,gBAAgB,KAAA,IACf,oBAAC,QAAD;KAAM,WAAU;KAA8B,UAAA;IAAkB,CAAA,IAC9D,IACA;;GACN,oBAAC,SAAD;IAAO,GAAI;IAAY,WAAW;IAAqB;IAAK,MAAK;GAAY,CAAA;GAC7E,oBAAC,QAAD;IAAM,eAAY;IAAO,WAAU;IACjC,UAAA,oBAAC,QAAD,EAAM,WAAU,sBAAuB,CAAA;GACnC,CAAA;EACD;;AAEX,CAAC"}
@@ -3,6 +3,8 @@ import type { ComponentPropsWithRef, ReactNode } from 'react';
3
3
  export interface SwitchProps extends Omit<ComponentPropsWithRef<'input'>, 'children' | 'type'> {
4
4
  /** Visible, localized label associated with the native checkbox. */
5
5
  children: Exclude<ReactNode, boolean | null | undefined>;
6
+ /** Optional localized supporting text associated with the switch label. */
7
+ description?: ReactNode;
6
8
  /** Switch owns its native input type. */
7
9
  type?: never;
8
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.types.d.ts","sourceRoot":"","sources":["../../../src/components/switch/Switch.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,8EAA8E;AAC9E,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5F,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAEzD,yCAAyC;IACzC,IAAI,CAAC,EAAE,KAAK,CAAC;CACd"}
1
+ {"version":3,"file":"Switch.types.d.ts","sourceRoot":"","sources":["../../../src/components/switch/Switch.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,8EAA8E;AAC9E,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5F,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAEzD,2EAA2E;IAC3E,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,yCAAyC;IACzC,IAAI,CAAC,EAAE,KAAK,CAAC;CACd"}
@@ -1,4 +1,4 @@
1
1
  import type { TextAreaProps } from './TextArea.types.js';
2
- declare function TextArea({ className, counter, error, helpText, id, placeholder, ...textareaProps }: TextAreaProps): import("react").JSX.Element;
2
+ declare const TextArea: import("react").ForwardRefExoticComponent<Omit<TextAreaProps, "ref"> & import("react").RefAttributes<HTMLTextAreaElement>>;
3
3
  export default TextArea;
4
4
  //# sourceMappingURL=TextArea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/text-area/TextArea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,OAAO,EACP,KAAK,EACL,QAAQ,EACR,EAAE,EACF,WAAW,EACX,GAAG,aAAa,EACjB,EAAE,aAAa,+BAuCf;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/text-area/TextArea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,QAAA,MAAM,QAAQ,4HA2CZ,CAAC;AAEH,eAAe,QAAQ,CAAC"}
@@ -1,7 +1,7 @@
1
+ import { forwardRef, useId } from "react";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useId } from "react";
3
3
  //#region src/components/text-area/TextArea.tsx
4
- function TextArea({ className, counter, error, helpText, id, placeholder, ...textareaProps }) {
4
+ var TextArea = forwardRef(function TextArea({ className, counter, error, helpText, id, placeholder, ...textareaProps }, ref) {
5
5
  const generatedId = useId();
6
6
  const textareaId = id ?? generatedId;
7
7
  const hasError = error !== void 0;
@@ -18,7 +18,8 @@ function TextArea({ className, counter, error, helpText, id, placeholder, ...tex
18
18
  "aria-invalid": hasError || void 0,
19
19
  className: textareaClassName,
20
20
  id: textareaId,
21
- placeholder: placeholder === void 0 ? void 0 : " "
21
+ placeholder: placeholder === void 0 ? void 0 : " ",
22
+ ref
22
23
  }),
23
24
  placeholder !== void 0 ? /* @__PURE__ */ jsx("label", {
24
25
  className: "chayns-text-area__label",
@@ -38,7 +39,7 @@ function TextArea({ className, counter, error, helpText, id, placeholder, ...tex
38
39
  }) : null
39
40
  ]
40
41
  });
41
- }
42
+ });
42
43
  //#endregion
43
44
  export { TextArea as default };
44
45
 
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","names":[],"sources":["../../../src/components/text-area/TextArea.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport type { TextAreaProps } from './TextArea.types.js';\n\nfunction TextArea({\n className,\n counter,\n error,\n helpText,\n id,\n placeholder,\n ...textareaProps\n}: TextAreaProps) {\n const generatedId = useId();\n const textareaId = id ?? generatedId;\n const hasError = error !== undefined;\n const helpId = helpText !== undefined ? `${textareaId}-help` : undefined;\n const errorId = hasError ? `${textareaId}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(' ') || undefined;\n const textareaClassName = ['chayns-text-area__input', className].filter(Boolean).join(' ');\n\n return (\n <div className={`chayns-text-area${hasError ? ' chayns-text-area--error' : ''}`}>\n <textarea\n {...textareaProps}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className={textareaClassName}\n id={textareaId}\n placeholder={placeholder === undefined ? undefined : ' '}\n />\n {placeholder !== undefined ? (\n <label className=\"chayns-text-area__label\" htmlFor={textareaId}>\n {placeholder}\n </label>\n ) : null}\n {helpText !== undefined || hasError || counter !== undefined ? (\n <div className=\"chayns-text-area__help\">\n <div>\n {helpText !== undefined ? <div id={helpId}>{helpText}</div> : null}\n {hasError ? (\n <div className=\"chayns-text-area__error\" id={errorId}>\n {error}\n </div>\n ) : null}\n </div>\n {counter !== undefined ? <div>{counter}</div> : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport default TextArea;\n"],"mappings":";;;AAIA,SAAS,SAAS,EAChB,WACA,SACA,OACA,UACA,IACA,aACA,GAAG,iBACa;CAChB,MAAM,cAAc,MAAM;CAC1B,MAAM,aAAa,MAAM;CACzB,MAAM,WAAW,UAAU,KAAA;CAC3B,MAAM,SAAS,aAAa,KAAA,IAAY,GAAG,WAAW,SAAS,KAAA;CAC/D,MAAM,UAAU,WAAW,GAAG,WAAW,UAAU,KAAA;CACnD,MAAM,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnE,MAAM,oBAAoB,CAAC,2BAA2B,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEzF,OACE,qBAAC,OAAD;EAAK,WAAW,mBAAmB,WAAW,6BAA6B;EAA3E,UAAA;GACE,oBAAC,YAAD;IACE,GAAI;IACJ,oBAAkB;IAClB,gBAAc,YAAY,KAAA;IAC1B,WAAW;IACX,IAAI;IACJ,aAAa,gBAAgB,KAAA,IAAY,KAAA,IAAY;GACtD,CAAA;GACA,gBAAgB,KAAA,IACf,oBAAC,SAAD;IAAO,WAAU;IAA0B,SAAS;IACjD,UAAA;GACI,CAAA,IACL;GACH,aAAa,KAAA,KAAa,YAAY,YAAY,KAAA,IACjD,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD,EAAA,UAAA,CACG,aAAa,KAAA,IAAY,oBAAC,OAAD;KAAK,IAAI;KAAS,UAAA;IAAc,CAAA,IAAI,MAC7D,WACC,oBAAC,OAAD;KAAK,WAAU;KAA0B,IAAI;KAC1C,UAAA;IACE,CAAA,IACH,IACD,EAAA,CAAA,GACJ,YAAY,KAAA,IAAY,oBAAC,OAAD,EAAA,UAAM,QAAa,CAAA,IAAI,IAC7C;GACH,CAAA,IAAA;EACD;;AAET"}
1
+ {"version":3,"file":"TextArea.js","names":[],"sources":["../../../src/components/text-area/TextArea.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\n\nimport type { TextAreaProps } from './TextArea.types.js';\n\nconst TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(function TextArea(\n { className, counter, error, helpText, id, placeholder, ...textareaProps },\n ref,\n) {\n const generatedId = useId();\n const textareaId = id ?? generatedId;\n const hasError = error !== undefined;\n const helpId = helpText !== undefined ? `${textareaId}-help` : undefined;\n const errorId = hasError ? `${textareaId}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(' ') || undefined;\n const textareaClassName = ['chayns-text-area__input', className].filter(Boolean).join(' ');\n\n return (\n <div className={`chayns-text-area${hasError ? ' chayns-text-area--error' : ''}`}>\n <textarea\n {...textareaProps}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className={textareaClassName}\n id={textareaId}\n placeholder={placeholder === undefined ? undefined : ' '}\n ref={ref}\n />\n {placeholder !== undefined ? (\n <label className=\"chayns-text-area__label\" htmlFor={textareaId}>\n {placeholder}\n </label>\n ) : null}\n {helpText !== undefined || hasError || counter !== undefined ? (\n <div className=\"chayns-text-area__help\">\n <div>\n {helpText !== undefined ? <div id={helpId}>{helpText}</div> : null}\n {hasError ? (\n <div className=\"chayns-text-area__error\" id={errorId}>\n {error}\n </div>\n ) : null}\n </div>\n {counter !== undefined ? <div>{counter}</div> : null}\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default TextArea;\n"],"mappings":";;;AAIA,IAAM,WAAW,WAA+C,SAAS,SACvE,EAAE,WAAW,SAAS,OAAO,UAAU,IAAI,aAAa,GAAG,iBAC3D,KACA;CACA,MAAM,cAAc,MAAM;CAC1B,MAAM,aAAa,MAAM;CACzB,MAAM,WAAW,UAAU,KAAA;CAC3B,MAAM,SAAS,aAAa,KAAA,IAAY,GAAG,WAAW,SAAS,KAAA;CAC/D,MAAM,UAAU,WAAW,GAAG,WAAW,UAAU,KAAA;CACnD,MAAM,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnE,MAAM,oBAAoB,CAAC,2BAA2B,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEzF,OACE,qBAAC,OAAD;EAAK,WAAW,mBAAmB,WAAW,6BAA6B;EAA3E,UAAA;GACE,oBAAC,YAAD;IACE,GAAI;IACJ,oBAAkB;IAClB,gBAAc,YAAY,KAAA;IAC1B,WAAW;IACX,IAAI;IACJ,aAAa,gBAAgB,KAAA,IAAY,KAAA,IAAY;IAChD;GACN,CAAA;GACA,gBAAgB,KAAA,IACf,oBAAC,SAAD;IAAO,WAAU;IAA0B,SAAS;IACjD,UAAA;GACI,CAAA,IACL;GACH,aAAa,KAAA,KAAa,YAAY,YAAY,KAAA,IACjD,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD,EAAA,UAAA,CACG,aAAa,KAAA,IAAY,oBAAC,OAAD;KAAK,IAAI;KAAS,UAAA;IAAc,CAAA,IAAI,MAC7D,WACC,oBAAC,OAAD;KAAK,WAAU;KAA0B,IAAI;KAC1C,UAAA;IACE,CAAA,IACH,IACD,EAAA,CAAA,GACJ,YAAY,KAAA,IAAY,oBAAC,OAAD,EAAA,UAAM,QAAa,CAAA,IAAI,IAC7C;GACH,CAAA,IAAA;EACD;;AAET,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { TextFieldProps } from './TextField.types.js';
2
- declare function TextField({ className, counter, error, helpText, id, placeholder, ...inputProps }: TextFieldProps): import("react").JSX.Element;
2
+ declare const TextField: import("react").ForwardRefExoticComponent<Omit<TextFieldProps, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
3
3
  export default TextField;
4
4
  //# sourceMappingURL=TextField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/text-field/TextField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,OAAO,EACP,KAAK,EACL,QAAQ,EACR,EAAE,EACF,WAAW,EACX,GAAG,UAAU,EACd,EAAE,cAAc,+BAuChB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/text-field/TextField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,QAAA,MAAM,SAAS,0HA2Cb,CAAC;AAEH,eAAe,SAAS,CAAC"}
@@ -1,7 +1,7 @@
1
+ import { forwardRef, useId } from "react";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useId } from "react";
3
3
  //#region src/components/text-field/TextField.tsx
4
- function TextField({ className, counter, error, helpText, id, placeholder, ...inputProps }) {
4
+ var TextField = forwardRef(function TextField({ className, counter, error, helpText, id, placeholder, ...inputProps }, ref) {
5
5
  const generatedId = useId();
6
6
  const inputId = id ?? generatedId;
7
7
  const hasError = error !== void 0;
@@ -18,7 +18,8 @@ function TextField({ className, counter, error, helpText, id, placeholder, ...in
18
18
  "aria-invalid": hasError || void 0,
19
19
  className: inputClassName,
20
20
  id: inputId,
21
- placeholder: placeholder === void 0 ? void 0 : " "
21
+ placeholder: placeholder === void 0 ? void 0 : " ",
22
+ ref
22
23
  }),
23
24
  placeholder !== void 0 ? /* @__PURE__ */ jsx("label", {
24
25
  className: "chayns-text-field__label",
@@ -38,7 +39,7 @@ function TextField({ className, counter, error, helpText, id, placeholder, ...in
38
39
  }) : null
39
40
  ]
40
41
  });
41
- }
42
+ });
42
43
  //#endregion
43
44
  export { TextField as default };
44
45
 
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","names":[],"sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport type { TextFieldProps } from './TextField.types.js';\n\nfunction TextField({\n className,\n counter,\n error,\n helpText,\n id,\n placeholder,\n ...inputProps\n}: TextFieldProps) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const hasError = error !== undefined;\n const helpId = helpText !== undefined ? `${inputId}-help` : undefined;\n const errorId = hasError ? `${inputId}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(' ') || undefined;\n const inputClassName = ['chayns-text-field__input', className].filter(Boolean).join(' ');\n\n return (\n <div className={`chayns-text-field${hasError ? ' chayns-text-field--error' : ''}`}>\n <input\n {...inputProps}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className={inputClassName}\n id={inputId}\n placeholder={placeholder === undefined ? undefined : ' '}\n />\n {placeholder !== undefined ? (\n <label className=\"chayns-text-field__label\" htmlFor={inputId}>\n {placeholder}\n </label>\n ) : null}\n {helpText !== undefined || hasError || counter !== undefined ? (\n <div className=\"chayns-text-field__help\">\n <div>\n {helpText !== undefined ? <div id={helpId}>{helpText}</div> : null}\n {hasError ? (\n <div className=\"chayns-text-field__error\" id={errorId}>\n {error}\n </div>\n ) : null}\n </div>\n {counter !== undefined ? <div>{counter}</div> : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport default TextField;\n"],"mappings":";;;AAIA,SAAS,UAAU,EACjB,WACA,SACA,OACA,UACA,IACA,aACA,GAAG,cACc;CACjB,MAAM,cAAc,MAAM;CAC1B,MAAM,UAAU,MAAM;CACtB,MAAM,WAAW,UAAU,KAAA;CAC3B,MAAM,SAAS,aAAa,KAAA,IAAY,GAAG,QAAQ,SAAS,KAAA;CAC5D,MAAM,UAAU,WAAW,GAAG,QAAQ,UAAU,KAAA;CAChD,MAAM,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnE,MAAM,iBAAiB,CAAC,4BAA4B,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEvF,OACE,qBAAC,OAAD;EAAK,WAAW,oBAAoB,WAAW,8BAA8B;EAA7E,UAAA;GACE,oBAAC,SAAD;IACE,GAAI;IACJ,oBAAkB;IAClB,gBAAc,YAAY,KAAA;IAC1B,WAAW;IACX,IAAI;IACJ,aAAa,gBAAgB,KAAA,IAAY,KAAA,IAAY;GACtD,CAAA;GACA,gBAAgB,KAAA,IACf,oBAAC,SAAD;IAAO,WAAU;IAA2B,SAAS;IAClD,UAAA;GACI,CAAA,IACL;GACH,aAAa,KAAA,KAAa,YAAY,YAAY,KAAA,IACjD,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD,EAAA,UAAA,CACG,aAAa,KAAA,IAAY,oBAAC,OAAD;KAAK,IAAI;KAAS,UAAA;IAAc,CAAA,IAAI,MAC7D,WACC,oBAAC,OAAD;KAAK,WAAU;KAA2B,IAAI;KAC3C,UAAA;IACE,CAAA,IACH,IACD,EAAA,CAAA,GACJ,YAAY,KAAA,IAAY,oBAAC,OAAD,EAAA,UAAM,QAAa,CAAA,IAAI,IAC7C;GACH,CAAA,IAAA;EACD;;AAET"}
1
+ {"version":3,"file":"TextField.js","names":[],"sources":["../../../src/components/text-field/TextField.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\n\nimport type { TextFieldProps } from './TextField.types.js';\n\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n { className, counter, error, helpText, id, placeholder, ...inputProps },\n ref,\n) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const hasError = error !== undefined;\n const helpId = helpText !== undefined ? `${inputId}-help` : undefined;\n const errorId = hasError ? `${inputId}-error` : undefined;\n const describedBy = [helpId, errorId].filter(Boolean).join(' ') || undefined;\n const inputClassName = ['chayns-text-field__input', className].filter(Boolean).join(' ');\n\n return (\n <div className={`chayns-text-field${hasError ? ' chayns-text-field--error' : ''}`}>\n <input\n {...inputProps}\n aria-describedby={describedBy}\n aria-invalid={hasError || undefined}\n className={inputClassName}\n id={inputId}\n placeholder={placeholder === undefined ? undefined : ' '}\n ref={ref}\n />\n {placeholder !== undefined ? (\n <label className=\"chayns-text-field__label\" htmlFor={inputId}>\n {placeholder}\n </label>\n ) : null}\n {helpText !== undefined || hasError || counter !== undefined ? (\n <div className=\"chayns-text-field__help\">\n <div>\n {helpText !== undefined ? <div id={helpId}>{helpText}</div> : null}\n {hasError ? (\n <div className=\"chayns-text-field__error\" id={errorId}>\n {error}\n </div>\n ) : null}\n </div>\n {counter !== undefined ? <div>{counter}</div> : null}\n </div>\n ) : null}\n </div>\n );\n});\n\nexport default TextField;\n"],"mappings":";;;AAIA,IAAM,YAAY,WAA6C,SAAS,UACtE,EAAE,WAAW,SAAS,OAAO,UAAU,IAAI,aAAa,GAAG,cAC3D,KACA;CACA,MAAM,cAAc,MAAM;CAC1B,MAAM,UAAU,MAAM;CACtB,MAAM,WAAW,UAAU,KAAA;CAC3B,MAAM,SAAS,aAAa,KAAA,IAAY,GAAG,QAAQ,SAAS,KAAA;CAC5D,MAAM,UAAU,WAAW,GAAG,QAAQ,UAAU,KAAA;CAChD,MAAM,cAAc,CAAC,QAAQ,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;CACnE,MAAM,iBAAiB,CAAC,4BAA4B,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEvF,OACE,qBAAC,OAAD;EAAK,WAAW,oBAAoB,WAAW,8BAA8B;EAA7E,UAAA;GACE,oBAAC,SAAD;IACE,GAAI;IACJ,oBAAkB;IAClB,gBAAc,YAAY,KAAA;IAC1B,WAAW;IACX,IAAI;IACJ,aAAa,gBAAgB,KAAA,IAAY,KAAA,IAAY;IAChD;GACN,CAAA;GACA,gBAAgB,KAAA,IACf,oBAAC,SAAD;IAAO,WAAU;IAA2B,SAAS;IAClD,UAAA;GACI,CAAA,IACL;GACH,aAAa,KAAA,KAAa,YAAY,YAAY,KAAA,IACjD,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,qBAAC,OAAD,EAAA,UAAA,CACG,aAAa,KAAA,IAAY,oBAAC,OAAD;KAAK,IAAI;KAAS,UAAA;IAAc,CAAA,IAAI,MAC7D,WACC,oBAAC,OAAD;KAAK,WAAU;KAA2B,IAAI;KAC3C,UAAA;IACE,CAAA,IACH,IACD,EAAA,CAAA,GACJ,YAAY,KAAA,IAAY,oBAAC,OAAD,EAAA,UAAM,QAAa,CAAA,IAAI,IAC7C;GACH,CAAA,IAAA;EACD;;AAET,CAAC"}
@@ -0,0 +1,121 @@
1
+ @layer chayns.components {
2
+ .chayns-date-time-picker {
3
+ display: inline-block;
4
+ max-inline-size: 100%;
5
+ position: relative;
6
+ }
7
+
8
+ .chayns-date-time-picker--time {
9
+ min-inline-size: 100px;
10
+ }
11
+
12
+ .chayns-date-time-picker__trigger {
13
+ box-sizing: border-box;
14
+ max-inline-size: 100%;
15
+ min-block-size: calc(1.2em + 2 * var(--input-py) + 3px);
16
+ padding: var(--input-py) var(--input-px);
17
+ border: 1.5px solid var(--input-border);
18
+ border-radius: var(--k10);
19
+ background: var(--surface);
20
+ color: var(--text);
21
+ cursor: pointer;
22
+ font: inherit;
23
+ line-height: 1.2;
24
+ outline: none;
25
+ text-align: start;
26
+ }
27
+
28
+ .chayns-date-time-picker__trigger:focus-visible {
29
+ border-color: var(--accent);
30
+ box-shadow: 0 0 0 var(--focus-ring-size)
31
+ rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-soft));
32
+ }
33
+
34
+ .chayns-date-time-picker__label {
35
+ position: absolute;
36
+ inset-block-start: 0;
37
+ inset-inline-start: var(--k10);
38
+ padding-inline: var(--k5);
39
+ background: var(--surface);
40
+ color: var(--text-3);
41
+ font-size: var(--fs-body);
42
+ line-height: 1.2;
43
+ pointer-events: none;
44
+ transform: translateY(calc(var(--input-py) + 1.5px + 0.6em - 50%));
45
+ transform-origin: left center;
46
+ white-space: nowrap;
47
+ }
48
+
49
+ .chayns-date-time-picker--open .chayns-date-time-picker__label,
50
+ .chayns-date-time-picker--filled .chayns-date-time-picker__label {
51
+ color: var(--accent);
52
+ transform: translateY(-50%) scale(0.8);
53
+ }
54
+
55
+ .chayns-date-time-picker__popup {
56
+ position: absolute;
57
+ inset-block-start: calc(100% + var(--k4));
58
+ inset-inline: 0;
59
+ z-index: var(--z-popover);
60
+ overflow: hidden;
61
+ padding: var(--k8);
62
+ border: 1px solid var(--border);
63
+ border-radius: var(--k12);
64
+ background: var(--surface);
65
+ box-shadow: var(--shadow-pop);
66
+ }
67
+
68
+ .chayns-date-time-picker__wheels {
69
+ display: flex;
70
+ position: relative;
71
+ block-size: calc(var(--k40) * 5);
72
+ }
73
+
74
+ .chayns-date-time-picker__selection {
75
+ position: absolute;
76
+ inset-block-start: 50%;
77
+ inset-inline: var(--k8);
78
+ z-index: 1;
79
+ block-size: var(--k40);
80
+ border-radius: var(--k6);
81
+ background: rgb(var(--accent-rgb), 0.1);
82
+ pointer-events: none;
83
+ transform: translateY(-50%);
84
+ }
85
+
86
+ .chayns-date-time-picker__wheel {
87
+ flex: 1;
88
+ overflow-y: auto;
89
+ overscroll-behavior: contain;
90
+ padding-block: calc(var(--k40) * 2);
91
+ perspective: 18rem;
92
+ perspective-origin: center;
93
+ scrollbar-width: none;
94
+ scroll-snap-type: y mandatory;
95
+ text-align: center;
96
+ user-select: none;
97
+ }
98
+
99
+ .chayns-date-time-picker__wheel:focus-visible {
100
+ outline: var(--focus-ring-size) solid rgb(var(--focus-ring-rgb), var(--focus-ring-alpha-strong));
101
+ outline-offset: 2px;
102
+ }
103
+
104
+ .chayns-date-time-picker__wheel::-webkit-scrollbar {
105
+ display: none;
106
+ }
107
+
108
+ .chayns-date-time-picker__wheel-option {
109
+ display: block;
110
+ inline-size: 100%;
111
+ min-block-size: var(--k40);
112
+ padding: 0;
113
+ border: 0;
114
+ background: transparent;
115
+ cursor: pointer;
116
+ font: inherit;
117
+ scroll-snap-align: center;
118
+ transform-origin: center;
119
+ transform-style: preserve-3d;
120
+ }
121
+ }
package/dist/index.d.ts CHANGED
@@ -2,14 +2,19 @@ export { default as Button } from './components/button/Button.js';
2
2
  export { default as IconButton } from './components/icon-button/IconButton.js';
3
3
  export type { ButtonContent, ButtonIcon, ButtonProps, ButtonVariant, } from './components/button/Button.types.js';
4
4
  export { BUTTON_VARIANTS } from './components/button/Button.types.js';
5
- export type { IconButtonProps } from './components/icon-button/IconButton.types.js';
5
+ export type { IconButtonBaseProps, IconButtonProps, } from './components/icon-button/IconButton.types.js';
6
6
  export { default as Badge } from './components/badge/Badge.js';
7
7
  export { BADGE_SIZES, BADGE_TONES } from './components/badge/Badge.types.js';
8
8
  export type { BadgeProps, BadgeSize, BadgeTone } from './components/badge/Badge.types.js';
9
+ export { default as Banner } from './components/banner/Banner.js';
10
+ export { BANNER_TONES } from './components/banner/Banner.types.js';
11
+ export type { BannerProps, BannerTone, ClosableBannerProps, StaticBannerProps, } from './components/banner/Banner.types.js';
9
12
  export { default as ComboBox } from './components/combo-box/ComboBox.js';
10
13
  export type { ComboBoxMultipleProps, ComboBoxOptionProps, ComboBoxProps, ComboBoxSingleProps, } from './components/combo-box/ComboBox.types.js';
11
14
  export { default as TextField } from './components/text-field/TextField.js';
12
15
  export type { TextFieldProps } from './components/text-field/TextField.types.js';
16
+ export { default as DateTimePicker } from './components/date-time-picker/DateTimePicker.js';
17
+ export { DATE_TIME_PICKER_MODES, DATE_TIME_PICKER_MINUTE_STEPS, type DateTimePickerMinuteStep, type DateTimePickerMode, type DateTimePickerProps, type DateTimePickerWheelLabels, } from './components/date-time-picker/DateTimePicker.types.js';
13
18
  export { default as TextArea } from './components/text-area/TextArea.js';
14
19
  export type { TextAreaProps } from './components/text-area/TextArea.types.js';
15
20
  export { default as Checkbox } from './components/checkbox/Checkbox.js';
@@ -20,15 +25,13 @@ export { default as RadioGroup } from './components/radio-group/RadioGroup.js';
20
25
  export type { RadioGroupProps, RadioProps } from './components/radio-group/RadioGroup.types.js';
21
26
  export { default as SegmentedControl } from './components/segmented-control/SegmentedControl.js';
22
27
  export type { SegmentedControlProps, SegmentProps, } from './components/segmented-control/SegmentedControl.types.js';
23
- export { default as MessageBox } from './components/message-box/MessageBox.js';
24
- export type { MessageBoxProps, MessageBoxTone } from './components/message-box/MessageBox.types.js';
25
28
  export { default as Popup } from './components/popup/Popup.js';
26
29
  export { default as PopupList } from './components/popup/PopupList.js';
27
30
  export type { PopupListItem, PopupListProps, PopupProps } from './components/popup/Popup.types.js';
28
31
  export { default as SplitButton } from './components/split-button/SplitButton.js';
29
32
  export type { SplitButtonProps } from './components/split-button/SplitButton.types.js';
30
33
  export { default as Card } from './components/card/Card.js';
31
- export type { CardProps } from './components/card/Card.types.js';
34
+ export type { CardHeaderProps, CardProps } from './components/card/Card.types.js';
32
35
  export { default as Avatar } from './components/avatar/Avatar.js';
33
36
  export { default as AvatarGroup } from './components/avatar-group/AvatarGroup.js';
34
37
  export type { AvatarProps } from './components/avatar/Avatar.types.js';
@@ -37,5 +40,6 @@ export { default as List } from './components/list/List.js';
37
40
  export type { ListItemActionProps, ListItemPartProps, ListItemProps, ListItemStatusProps, ListProps, } from './components/list/List.types.js';
38
41
  export { default as Accordion } from './components/accordion/Accordion.js';
39
42
  export { default as AccordionGroup } from './components/accordion-group/AccordionGroup.js';
40
- export type { AccordionProps, AccordionGroupProps, } from './components/accordion/Accordion.types.js';
43
+ export { ACCORDION_APPEARANCES } from './components/accordion/Accordion.types.js';
44
+ export type { AccordionAppearance, AccordionContentProps, AccordionHeadContentProps, AccordionHeadProps, AccordionProps, AccordionGroupProps, AccordionPartProps, } from './components/accordion/Accordion.types.js';
41
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAEpF,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAC7E,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE1F,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACzE,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACzE,YAAY,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAEhG,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,YAAY,GACb,MAAM,0DAA0D,CAAC;AAElE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAEpG,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEnG,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,SAAS,GACV,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC3F,YAAY,EACV,cAAc,EACd,mBAAmB,GACpB,MAAM,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,14 +3,17 @@ import IconButton from "./components/icon-button/IconButton.js";
3
3
  import { BUTTON_VARIANTS } from "./components/button/Button.types.js";
4
4
  import Badge from "./components/badge/Badge.js";
5
5
  import { BADGE_SIZES, BADGE_TONES } from "./components/badge/Badge.types.js";
6
+ import Banner from "./components/banner/Banner.js";
7
+ import { BANNER_TONES } from "./components/banner/Banner.types.js";
6
8
  import ComboBox from "./components/combo-box/ComboBox.js";
7
9
  import TextField from "./components/text-field/TextField.js";
10
+ import { DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES } from "./components/date-time-picker/DateTimePicker.types.js";
11
+ import DateTimePicker from "./components/date-time-picker/DateTimePicker.js";
8
12
  import TextArea from "./components/text-area/TextArea.js";
9
13
  import Checkbox from "./components/checkbox/Checkbox.js";
10
14
  import Switch from "./components/switch/Switch.js";
11
15
  import RadioGroup from "./components/radio-group/RadioGroup.js";
12
16
  import SegmentedControl from "./components/segmented-control/SegmentedControl.js";
13
- import MessageBox from "./components/message-box/MessageBox.js";
14
17
  import Popup_default from "./components/popup/Popup.js";
15
18
  import PopupList from "./components/popup/PopupList.js";
16
19
  import SplitButton from "./components/split-button/SplitButton.js";
@@ -20,4 +23,5 @@ import AvatarGroup from "./components/avatar-group/AvatarGroup.js";
20
23
  import List from "./components/list/List.js";
21
24
  import Accordion from "./components/accordion/Accordion.js";
22
25
  import AccordionGroup from "./components/accordion-group/AccordionGroup.js";
23
- export { Accordion, AccordionGroup, Avatar, AvatarGroup, BADGE_SIZES, BADGE_TONES, BUTTON_VARIANTS, Badge, Button, Card, Checkbox, ComboBox, IconButton, List, MessageBox, Popup_default as Popup, PopupList, RadioGroup, SegmentedControl, SplitButton, Switch, TextArea, TextField };
26
+ import { ACCORDION_APPEARANCES } from "./components/accordion/Accordion.types.js";
27
+ export { ACCORDION_APPEARANCES, Accordion, AccordionGroup, Avatar, AvatarGroup, BADGE_SIZES, BADGE_TONES, BANNER_TONES, BUTTON_VARIANTS, Badge, Banner, Button, Card, Checkbox, ComboBox, DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES, DateTimePicker, IconButton, List, Popup_default as Popup, PopupList, RadioGroup, SegmentedControl, SplitButton, Switch, TextArea, TextField };
package/dist/list.css CHANGED
@@ -10,7 +10,7 @@
10
10
  .chayns-list-item {
11
11
  display: flex;
12
12
  align-items: stretch;
13
- border-radius: 10px;
13
+ border-radius: 12px;
14
14
  }
15
15
 
16
16
  .chayns-list-item__action {
@@ -21,9 +21,9 @@
21
21
  gap: var(--k12);
22
22
  min-inline-size: 0;
23
23
  margin: 0;
24
- padding: var(--k10) var(--k16);
24
+ padding: var(--k12) var(--k16);
25
25
  border: 0;
26
- border-radius: 10px;
26
+ border-radius: 12px;
27
27
  background: transparent;
28
28
  color: var(--text);
29
29
  cursor: pointer;
@@ -77,7 +77,7 @@
77
77
  flex: none;
78
78
  align-items: flex-start;
79
79
  gap: var(--k8);
80
- padding: var(--k10) var(--k16) 0 0;
80
+ padding: var(--k12) var(--k16) 0 0;
81
81
  color: var(--text-3);
82
82
  font-size: var(--fs-meta);
83
83
  }
@@ -23,7 +23,7 @@
23
23
 
24
24
  .chayns-radio {
25
25
  display: inline-flex;
26
- align-items: flex-start;
26
+ align-items: center;
27
27
  gap: var(--k12);
28
28
  color: var(--text);
29
29
  cursor: pointer;
@@ -94,6 +94,18 @@
94
94
  line-height: 1.4;
95
95
  }
96
96
 
97
+ .chayns-radio__content {
98
+ display: grid;
99
+ gap: var(--k2);
100
+ min-inline-size: 0;
101
+ }
102
+
103
+ .chayns-radio__description {
104
+ color: var(--text-3);
105
+ font-size: var(--fs-meta);
106
+ line-height: 1.4;
107
+ }
108
+
97
109
  @media (prefers-reduced-motion: reduce) {
98
110
  .chayns-radio__control::after {
99
111
  transition: none;
@@ -6,16 +6,20 @@
6
6
  }
7
7
 
8
8
  .chayns-segmented-control__label {
9
- color: var(--text);
10
- font-size: var(--fs-body);
11
- font-weight: 600;
12
- line-height: 1.4;
9
+ position: absolute;
10
+ inline-size: 1px;
11
+ block-size: 1px;
12
+ overflow: hidden;
13
+ clip-path: inset(50%);
14
+ white-space: nowrap;
13
15
  }
14
16
 
15
17
  .chayns-segmented-control__segments {
16
18
  position: relative;
17
19
  display: inline-grid;
18
- grid-auto-columns: minmax(0, 1fr);
20
+ inline-size: max-content;
21
+ max-inline-size: 100%;
22
+ grid-auto-columns: 1fr;
19
23
  grid-auto-flow: column;
20
24
  gap: var(--k4);
21
25
  padding: var(--k4);
@@ -37,11 +41,15 @@
37
41
  }
38
42
 
39
43
  .chayns-segmented-control__segment {
40
- min-block-size: var(--ctrl-h);
44
+ min-block-size: var(--k32);
41
45
  position: relative;
42
46
  z-index: 1;
43
47
  min-inline-size: 0;
44
- padding: calc(9 * var(--u)) var(--k12);
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ gap: var(--k6);
52
+ padding: var(--k8) var(--k18);
45
53
  border: 0;
46
54
  border-radius: 8px;
47
55
  background: transparent;
@@ -51,6 +59,15 @@
51
59
  font-weight: 500;
52
60
  line-height: 1.4;
53
61
  text-align: center;
62
+ white-space: nowrap;
63
+ }
64
+
65
+ .chayns-segmented-control__segment:not(.chayns-segmented-control__segment--selected) {
66
+ color: var(--text-3);
67
+ }
68
+
69
+ .chayns-segmented-control__segment--selected {
70
+ color: var(--accent);
54
71
  }
55
72
 
56
73
  .chayns-segmented-control__segment:focus-visible {
@@ -66,7 +66,7 @@
66
66
  }
67
67
 
68
68
  .chayns-split-button__trigger:active:not(:disabled) {
69
- transform: scale(0.97);
69
+ transform: scale(0.96);
70
70
  }
71
71
 
72
72
  .chayns-split-button__trigger.chayns-button--primary:active:not(:disabled) {
package/dist/styles.css CHANGED
@@ -1,5 +1,6 @@
1
1
  @import url('./button.css');
2
2
  @import url('./badge.css');
3
+ @import url('./banner.css');
3
4
  @import url('./combo-box.css');
4
5
  @import url('./card.css');
5
6
  @import url('./avatar.css');
@@ -8,9 +9,9 @@
8
9
  @import url('./popup.css');
9
10
  @import url('./split-button.css');
10
11
  @import url('./text-field.css');
12
+ @import url('./date-time-picker.css');
11
13
  @import url('./text-area.css');
12
14
  @import url('./checkbox.css');
13
15
  @import url('./switch.css');
14
16
  @import url('./radio-group.css');
15
17
  @import url('./segmented-control.css');
16
- @import url('./message-box.css');
package/dist/switch.css CHANGED
@@ -1,6 +1,7 @@
1
1
  @layer chayns.components {
2
2
  .chayns-switch {
3
- display: inline-flex;
3
+ display: flex;
4
+ inline-size: 100%;
4
5
  align-items: center;
5
6
  justify-content: space-between;
6
7
  gap: var(--k14);
@@ -25,11 +26,23 @@
25
26
  line-height: 1.4;
26
27
  }
27
28
 
29
+ .chayns-switch__content {
30
+ display: grid;
31
+ gap: var(--k2);
32
+ min-inline-size: 0;
33
+ }
34
+
35
+ .chayns-switch__description {
36
+ color: var(--text-3);
37
+ font-size: var(--fs-meta);
38
+ line-height: 1.4;
39
+ }
40
+
28
41
  .chayns-switch__control {
29
42
  box-sizing: border-box;
30
43
  display: flex;
31
- inline-size: 42px;
32
- block-size: 24px;
44
+ inline-size: var(--k42);
45
+ block-size: var(--k24);
33
46
  flex: none;
34
47
  padding: var(--k3);
35
48
  border-radius: 999px;
@@ -41,7 +54,7 @@
41
54
  block-size: var(--k18);
42
55
  border-radius: 50%;
43
56
  background: var(--surface);
44
- box-shadow: 0 1px 3px rgb(0 0 0 / 30%);
57
+ box-shadow: var(--shadow-card);
45
58
  transform: translateX(0);
46
59
  transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);
47
60
  }
@@ -51,7 +64,7 @@
51
64
  }
52
65
 
53
66
  .chayns-switch__input:checked + .chayns-switch__control .chayns-switch__knob {
54
- transform: translateX(18px);
67
+ transform: translateX(var(--k18));
55
68
  }
56
69
 
57
70
  .chayns-switch__input:focus-visible + .chayns-switch__control {
@@ -8,7 +8,7 @@
8
8
  box-sizing: border-box;
9
9
  display: block;
10
10
  inline-size: 100%;
11
- min-block-size: 84px;
11
+ min-block-size: var(--k84);
12
12
  padding: var(--input-py) var(--input-px);
13
13
  border: 1.5px solid var(--input-border);
14
14
  border-radius: 10px;
@@ -112,7 +112,7 @@
112
112
  align-items: center;
113
113
  justify-content: space-between;
114
114
  gap: var(--k10);
115
- margin-block-start: 6px;
115
+ margin-block-start: var(--k6);
116
116
  font-size: var(--fs-caption);
117
117
  color: var(--text-3);
118
118
  }
@@ -114,7 +114,7 @@
114
114
  align-items: center;
115
115
  justify-content: space-between;
116
116
  gap: var(--k10);
117
- margin-block-start: 6px;
117
+ margin-block-start: var(--k6);
118
118
  font-size: var(--fs-caption);
119
119
  color: var(--text-3);
120
120
  }