@clubmed/trident-ui 1.3.0-beta.12 → 1.3.0-beta.13

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 (127) hide show
  1. package/.npm/_logs/2025-08-08T15_19_22_167Z-debug-0.log +19 -0
  2. package/.npm/_logs/2025-08-08T15_19_22_257Z-debug-0.log +14 -0
  3. package/CHANGELOG.md +7 -0
  4. package/README.md +8 -0
  5. package/assets/{style.css → trident-ui.css} +1 -1
  6. package/atoms/Clickable/Clickable.d.ts +2 -2
  7. package/atoms/Heading/Heading.d.ts +1 -1
  8. package/atoms/Heading/HeadingGroup.d.ts +2 -2
  9. package/atoms/Icons/Iconics.d.ts +1 -1
  10. package/atoms/Icons/IconsResolver.d.ts +1 -1
  11. package/atoms/Icons/contexts/IconsContext.d.ts +1 -1
  12. package/atoms/Icons/svg/SvgIcon.d.ts +1 -1
  13. package/atoms/Icons/svg-use/SvgUseIcon.d.ts +1 -1
  14. package/atoms/Image/Image.d.ts +1 -1
  15. package/atoms/Image/Image.js +12 -12
  16. package/atoms/Image/Image.js.map +1 -1
  17. package/atoms/Prose/Prose.d.ts +2 -2
  18. package/chunks/ResizeObserver.js +1 -1
  19. package/chunks/ResizeObserver.js.map +1 -1
  20. package/chunks/_commonjsHelpers.js +19 -14
  21. package/chunks/_commonjsHelpers.js.map +1 -1
  22. package/chunks/index.js +36 -33
  23. package/chunks/index.js.map +1 -1
  24. package/chunks/plugin.js +57 -46
  25. package/chunks/plugin.js.map +1 -1
  26. package/contexts/Devices/Device.d.ts +3 -3
  27. package/contexts/Devices/hooks/useQueries.d.ts +2 -2
  28. package/contexts/Devices/reducers/reducer.d.ts +2 -2
  29. package/contexts/TridentUIConfig.d.ts +1 -1
  30. package/contexts/TridentUIConfig.js +1265 -653
  31. package/contexts/TridentUIConfig.js.map +1 -1
  32. package/helpers/colors/colors.d.ts +1 -1
  33. package/hooks/useKeyboardControls.d.ts +1 -1
  34. package/hooks/useResizeObserver.d.ts +1 -1
  35. package/hooks/useSafeBoop.d.ts +2 -2
  36. package/molecules/Arrows/Arrows.d.ts +2 -2
  37. package/molecules/Avatar.d.ts +1 -1
  38. package/molecules/Avatar.js +24 -24
  39. package/molecules/Avatar.js.map +1 -1
  40. package/molecules/Backdrop.d.ts +1 -1
  41. package/molecules/Breadcrumb.d.ts +2 -3
  42. package/molecules/Breadcrumb.js +25 -36
  43. package/molecules/Breadcrumb.js.map +1 -1
  44. package/molecules/Breadcrumb.themes.d.ts +1 -1
  45. package/molecules/Buttons/ArrowButton.d.ts +1 -1
  46. package/molecules/Buttons/Button.d.ts +3 -3
  47. package/molecules/Buttons/ButtonAnchor.d.ts +2 -2
  48. package/molecules/Buttons/ButtonContent.d.ts +2 -2
  49. package/molecules/Buttons/FakeButton.d.ts +2 -3
  50. package/molecules/Buttons/InertButton.d.ts +2 -2
  51. package/molecules/Buttons/v2/Button.d.ts +2081 -2082
  52. package/molecules/Buttons/v2/Button.type.d.ts +2 -2
  53. package/molecules/Cards/Card.d.ts +4 -4
  54. package/molecules/Cards/CardBackground.d.ts +2 -2
  55. package/molecules/Cards/CardBackground.js +17 -17
  56. package/molecules/Cards/CardBackground.js.map +1 -1
  57. package/molecules/Cards/CardBackgroundContext.d.ts +1 -1
  58. package/molecules/Cards/CardClickable.d.ts +1 -1
  59. package/molecules/Cards/ExpandableCard.d.ts +3 -3
  60. package/molecules/Cards/ExpandableCard.js +41 -41
  61. package/molecules/Cards/ExpandableCard.js.map +1 -1
  62. package/molecules/Cards/v2/Card.d.ts +1 -1
  63. package/molecules/Cards/v2/Card.js +13 -13
  64. package/molecules/Cards/v2/Card.js.map +1 -1
  65. package/molecules/Chip.d.ts +3 -3
  66. package/molecules/Chip.themes.d.ts +1 -1
  67. package/molecules/ElasticHeight.d.ts +1 -1
  68. package/molecules/ElasticHeight.js +20 -21
  69. package/molecules/ElasticHeight.js.map +1 -1
  70. package/molecules/Forms/Checkboxes/Checkbox.d.ts +1 -1
  71. package/molecules/Forms/Checkboxes/Checkbox.js +43 -43
  72. package/molecules/Forms/Checkboxes/Checkbox.js.map +1 -1
  73. package/molecules/Forms/Checkboxes/Checkboxes.d.ts +2 -2
  74. package/molecules/Forms/DateField.d.ts +2 -2
  75. package/molecules/Forms/DateField.js +60 -61
  76. package/molecules/Forms/DateField.js.map +1 -1
  77. package/molecules/Forms/Filter.d.ts +1 -2
  78. package/molecules/Forms/Filter.js +29 -29
  79. package/molecules/Forms/Filter.js.map +1 -1
  80. package/molecules/Forms/FormControl.d.ts +4 -4
  81. package/molecules/Forms/FormLabel.d.ts +1 -1
  82. package/molecules/Forms/NumberField.d.ts +278 -278
  83. package/molecules/Forms/Password/Password.d.ts +1 -1
  84. package/molecules/Forms/Password/ValidationMessage.d.ts +1 -1
  85. package/molecules/Forms/Radios/Radio.d.ts +1 -2
  86. package/molecules/Forms/Radios/Radio.js +30 -30
  87. package/molecules/Forms/Radios/Radio.js.map +1 -1
  88. package/molecules/Forms/Radios/RadioGroup.d.ts +2 -2
  89. package/molecules/Forms/Radios/RadioGroup.js +50 -52
  90. package/molecules/Forms/Radios/RadioGroup.js.map +1 -1
  91. package/molecules/Forms/Range.d.ts +1 -2
  92. package/molecules/Forms/Range.js +118 -113
  93. package/molecules/Forms/Range.js.map +1 -1
  94. package/molecules/Forms/Select.d.ts +3 -3
  95. package/molecules/Forms/Switch.d.ts +1 -1
  96. package/molecules/Forms/TextField.d.ts +3 -3
  97. package/molecules/HamburgerIcon.d.ts +1 -1
  98. package/molecules/Link.d.ts +2 -2
  99. package/molecules/Loader.d.ts +1 -1
  100. package/molecules/Pagination.d.ts +2 -2
  101. package/molecules/Popin.d.ts +1 -1
  102. package/molecules/Spinner.d.ts +1 -1
  103. package/molecules/Tabs/Tab.d.ts +2 -3
  104. package/molecules/Tabs/Tab.js +41 -42
  105. package/molecules/Tabs/Tab.js.map +1 -1
  106. package/molecules/Tabs/TabList.d.ts +1 -1
  107. package/molecules/Tabs/TabList.js +21 -21
  108. package/molecules/Tabs/TabList.js.map +1 -1
  109. package/molecules/Tabs/TabPanel.d.ts +1 -1
  110. package/molecules/Tabs/TabPanel.js +13 -13
  111. package/molecules/Tabs/TabPanel.js.map +1 -1
  112. package/molecules/Tabs/Tabs.d.ts +1 -1
  113. package/molecules/Tabs/TabsBody.d.ts +1 -1
  114. package/molecules/Tabs/context/TabControl.d.ts +2 -2
  115. package/molecules/Tabs/hooks/tabControl.d.ts +5 -5
  116. package/molecules/Tag.d.ts +4 -4
  117. package/package.json +29 -32
  118. package/tailwind/plugins/animationDelay.d.ts +2 -2
  119. package/tailwind/plugins/hocus.d.ts +2 -2
  120. package/tailwind/plugins/lineClampFix.d.ts +2 -2
  121. package/tailwind/plugins/popover.d.ts +2 -2
  122. package/tailwind/plugins/startingStyle.d.ts +2 -2
  123. package/tailwind/plugins/transitionBehavior.d.ts +2 -2
  124. package/tailwind/tailwind.preset.d.ts +50 -50
  125. package/tests/helpers/device.d.ts +14 -0
  126. package/tests/helpers/device.js +13426 -0
  127. package/tests/helpers/device.js.map +1 -0
@@ -1,4 +1,4 @@
1
- import { type FormControlProps } from '../FormControl';
1
+ import { FormControlProps } from '../FormControl';
2
2
  import { ValidationMessage } from './ValidationMessage';
3
3
  export interface PasswordProps<Value> extends FormControlProps<Value> {
4
4
  validationMessages?: ValidationMessage[];
@@ -1,4 +1,4 @@
1
- import type { ValidationStatus } from '../../../hooks/useInternalStatus';
1
+ import { ValidationStatus } from '../../../hooks/useInternalStatus';
2
2
  export interface ValidationMessage {
3
3
  label: string;
4
4
  status: ValidationStatus;
@@ -1,5 +1,4 @@
1
- import { type InputHTMLAttributes } from 'react';
2
- import '../controls.css';
1
+ import { InputHTMLAttributes } from 'react';
3
2
  export interface RadioProps<Value = string> extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
4
3
  /**
5
4
  * The data-testid to apply to the button.
@@ -1,49 +1,49 @@
1
- import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
- import { c as N } from "../../../chunks/index.js";
3
- import { useId as b } from "react";
4
- import { useValue as k } from "../../../hooks/useValue.js";
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
+ import { c as C } from "../../../chunks/index.js";
3
+ import { useId as N } from "react";
4
+ import { useValue as b } from "../../../hooks/useValue.js";
5
5
  /* empty css */
6
- function w(c) {
7
- const n = b(), {
8
- id: o = n,
9
- name: l = o,
10
- className: m,
11
- dataTestId: h,
6
+ function k(r) {
7
+ const d = N(), {
8
+ id: o = d,
9
+ name: t = o,
10
+ className: c,
11
+ dataTestId: m,
12
12
  disabled: a,
13
- checked: p = !1,
13
+ checked: h = !1,
14
14
  value: i,
15
15
  size: s = 24,
16
- tabIndex: f = 0,
17
- children: u,
18
- onChange: t,
16
+ tabIndex: p = 0,
17
+ children: f,
18
+ onChange: u,
19
19
  ...v
20
- } = c, { value: r, setValue: x } = k({
21
- name: l,
22
- initialValue: p,
23
- onChange(y, g) {
24
- t == null || t(y, i !== void 0 ? i : g);
20
+ } = r, { value: l, setValue: x } = b({
21
+ name: t,
22
+ initialValue: h,
23
+ onChange(g, y) {
24
+ u?.(g, i !== void 0 ? i : y);
25
25
  }
26
26
  });
27
- return /* @__PURE__ */ d(
27
+ return /* @__PURE__ */ n(
28
28
  "label",
29
29
  {
30
- className: N(m, "relative flex items-center gap-8", {
30
+ className: C(c, "relative flex items-center gap-8", {
31
31
  "text-grey": a
32
32
  }),
33
33
  children: [
34
- /* @__PURE__ */ d("span", { className: "relative", children: [
34
+ /* @__PURE__ */ n("span", { className: "relative", children: [
35
35
  /* @__PURE__ */ e(
36
36
  "input",
37
37
  {
38
38
  ...v,
39
- name: l,
40
- "data-testid": h,
39
+ name: t,
40
+ "data-testid": m,
41
41
  type: "radio",
42
- tabIndex: f,
42
+ tabIndex: p,
43
43
  onChange: () => {
44
- !a && x(!r);
44
+ !a && x(!l);
45
45
  },
46
- defaultChecked: r,
46
+ defaultChecked: l,
47
47
  "data-name": "Radio",
48
48
  disabled: a,
49
49
  value: i
@@ -51,13 +51,13 @@ function w(c) {
51
51
  ),
52
52
  /* @__PURE__ */ e("span", { style: { height: s, width: s }, children: /* @__PURE__ */ e("svg", { viewBox: "0 0 16 16", width: s * 2 / 3, className: "overflow-visible", children: /* @__PURE__ */ e("circle", { cx: "8", cy: "8", r: "8px", style: { fill: "hsl(var(--color-saffron))" } }) }) })
53
53
  ] }),
54
- u
54
+ f
55
55
  ]
56
56
  }
57
57
  );
58
58
  }
59
- w.displayName = "Radio";
59
+ k.displayName = "Radio";
60
60
  export {
61
- w as Radio
61
+ k as Radio
62
62
  };
63
63
  //# sourceMappingURL=Radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Radio.js","sources":["../../../../lib/molecules/Forms/Radios/Radio.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport { type InputHTMLAttributes, useId } from 'react';\nimport { useValue } from '@/hooks/useValue.js';\nimport '../controls.css';\n\nexport interface RadioProps<Value = string>\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n /**\n * The data-testid to apply to the button.\n * This is used for testing purposes.\n * */\n dataTestId?: string;\n /**\n * The diameter of the radio button.\n * */\n size?: number;\n\n onChange?: (name: string, value: Value | null) => void;\n}\n\nexport function Radio<Value = string>(props: RadioProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n className,\n dataTestId,\n disabled,\n checked: initialChecked = false,\n value,\n size = 24,\n tabIndex = 0,\n children,\n onChange,\n ...rest\n } = props;\n\n const { value: checked, setValue } = useValue<boolean>({\n name,\n initialValue: initialChecked,\n onChange(name, checked) {\n onChange?.(name, (value !== undefined ? value : checked) as Value);\n },\n });\n\n return (\n <label\n className={classnames(className, 'relative flex items-center gap-8', {\n 'text-grey': disabled,\n })}\n >\n <span className=\"relative\">\n <input\n {...rest}\n name={name}\n data-testid={dataTestId}\n type=\"radio\"\n tabIndex={tabIndex}\n onChange={() => {\n !disabled && setValue(!checked);\n }}\n defaultChecked={checked}\n data-name=\"Radio\"\n disabled={disabled}\n value={value}\n />\n\n <span style={{ height: size, width: size }}>\n <svg viewBox=\"0 0 16 16\" width={(size * 2) / 3} className=\"overflow-visible\">\n <circle cx=\"8\" cy=\"8\" r=\"8px\" style={{ fill: 'hsl(var(--color-saffron))' }} />\n </svg>\n </span>\n </span>\n\n {children}\n </label>\n );\n}\n\nRadio.displayName = 'Radio';\n"],"names":["Radio","props","internalId","useId","id","name","className","dataTestId","disabled","initialChecked","value","size","tabIndex","children","onChange","rest","checked","setValue","useValue","jsxs","classnames","jsx"],"mappings":";;;;;AAoBO,SAASA,EAAsBC,GAA0B;AAC9D,QAAMC,IAAaC,EAAA,GAEb;AAAA,IACJ,IAAAC,IAAKF;AAAA,IACL,MAAAG,IAAOD;AAAA,IACP,WAAAE;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAASC,IAAiB;AAAA,IAC1B,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC,IAAW;AAAA,IACX,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDd,GAEE,EAAE,OAAOe,GAAS,UAAAC,EAAA,IAAaC,EAAkB;AAAA,IACrD,MAAAb;AAAA,IACA,cAAcI;AAAA,IACd,SAASJ,GAAMW,GAAS;AACtB,MAAAF,KAAA,QAAAA,EAAWT,GAAOK,MAAU,SAAYA,IAAQM;AAAAA,IAClD;AAAA,EAAA,CACD;AAED,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAWd,GAAW,oCAAoC;AAAA,QACnE,aAAaE;AAAA,MAAA,CACd;AAAA,MAED,UAAA;AAAA,QAAA,gBAAAW,EAAC,QAAA,EAAK,WAAU,YACd,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAGN;AAAA,cACJ,MAAAV;AAAA,cACA,eAAaE;AAAA,cACb,MAAK;AAAA,cACL,UAAAK;AAAA,cACA,UAAU,MAAM;AACd,iBAACJ,KAAYS,EAAS,CAACD,CAAO;AAAA,cAChC;AAAA,cACA,gBAAgBA;AAAA,cAChB,aAAU;AAAA,cACV,UAAAR;AAAA,cACA,OAAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF,gBAAAW,EAAC,QAAA,EAAK,OAAO,EAAE,QAAQV,GAAM,OAAOA,EAAA,GAClC,UAAA,gBAAAU,EAAC,OAAA,EAAI,SAAQ,aAAY,OAAQV,IAAO,IAAK,GAAG,WAAU,oBACxD,UAAA,gBAAAU,EAAC,UAAA,EAAO,IAAG,KAAI,IAAG,KAAI,GAAE,OAAM,OAAO,EAAE,MAAM,4BAAA,EAA4B,CAAG,GAC9E,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAECR;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAb,EAAM,cAAc;"}
1
+ {"version":3,"file":"Radio.js","sources":["../../../../lib/molecules/Forms/Radios/Radio.tsx"],"sourcesContent":["import classnames from 'classnames';\nimport { type InputHTMLAttributes, useId } from 'react';\nimport { useValue } from '@/hooks/useValue.js';\nimport '../controls.css';\n\nexport interface RadioProps<Value = string>\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {\n /**\n * The data-testid to apply to the button.\n * This is used for testing purposes.\n * */\n dataTestId?: string;\n /**\n * The diameter of the radio button.\n * */\n size?: number;\n\n onChange?: (name: string, value: Value | null) => void;\n}\n\nexport function Radio<Value = string>(props: RadioProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n className,\n dataTestId,\n disabled,\n checked: initialChecked = false,\n value,\n size = 24,\n tabIndex = 0,\n children,\n onChange,\n ...rest\n } = props;\n\n const { value: checked, setValue } = useValue<boolean>({\n name,\n initialValue: initialChecked,\n onChange(name, checked) {\n onChange?.(name, (value !== undefined ? value : checked) as Value);\n },\n });\n\n return (\n <label\n className={classnames(className, 'relative flex items-center gap-8', {\n 'text-grey': disabled,\n })}\n >\n <span className=\"relative\">\n <input\n {...rest}\n name={name}\n data-testid={dataTestId}\n type=\"radio\"\n tabIndex={tabIndex}\n onChange={() => {\n !disabled && setValue(!checked);\n }}\n defaultChecked={checked}\n data-name=\"Radio\"\n disabled={disabled}\n value={value}\n />\n\n <span style={{ height: size, width: size }}>\n <svg viewBox=\"0 0 16 16\" width={(size * 2) / 3} className=\"overflow-visible\">\n <circle cx=\"8\" cy=\"8\" r=\"8px\" style={{ fill: 'hsl(var(--color-saffron))' }} />\n </svg>\n </span>\n </span>\n\n {children}\n </label>\n );\n}\n\nRadio.displayName = 'Radio';\n"],"names":["Radio","props","internalId","useId","id","name","className","dataTestId","disabled","initialChecked","value","size","tabIndex","children","onChange","rest","checked","setValue","useValue","jsxs","classnames","jsx"],"mappings":";;;;;AAoBO,SAASA,EAAsBC,GAA0B;AAC9D,QAAMC,IAAaC,EAAA,GAEb;AAAA,IACJ,IAAAC,IAAKF;AAAA,IACL,MAAAG,IAAOD;AAAA,IACP,WAAAE;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAASC,IAAiB;AAAA,IAC1B,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,UAAAC,IAAW;AAAA,IACX,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDd,GAEE,EAAE,OAAOe,GAAS,UAAAC,EAAA,IAAaC,EAAkB;AAAA,IACrD,MAAAb;AAAA,IACA,cAAcI;AAAA,IACd,SAASJ,GAAMW,GAAS;AACtB,MAAAF,IAAWT,GAAOK,MAAU,SAAYA,IAAQM,CAAiB;AAAA,IACnE;AAAA,EAAA,CACD;AAED,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAWd,GAAW,oCAAoC;AAAA,QACnE,aAAaE;AAAA,MAAA,CACd;AAAA,MAED,UAAA;AAAA,QAAA,gBAAAW,EAAC,QAAA,EAAK,WAAU,YACd,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAGN;AAAA,cACJ,MAAAV;AAAA,cACA,eAAaE;AAAA,cACb,MAAK;AAAA,cACL,UAAAK;AAAA,cACA,UAAU,MAAM;AACd,iBAACJ,KAAYS,EAAS,CAACD,CAAO;AAAA,cAChC;AAAA,cACA,gBAAgBA;AAAA,cAChB,aAAU;AAAA,cACV,UAAAR;AAAA,cACA,OAAAE;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF,gBAAAW,EAAC,QAAA,EAAK,OAAO,EAAE,QAAQV,GAAM,OAAOA,EAAA,GAClC,UAAA,gBAAAU,EAAC,OAAA,EAAI,SAAQ,aAAY,OAAQV,IAAO,IAAK,GAAG,WAAU,oBACxD,UAAA,gBAAAU,EAAC,UAAA,EAAO,IAAG,KAAI,IAAG,KAAI,GAAE,OAAM,OAAO,EAAE,MAAM,4BAAA,EAA4B,CAAG,GAC9E,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QAECR;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAb,EAAM,cAAc;"}
@@ -1,5 +1,5 @@
1
- import { type HTMLAttributes } from 'react';
2
- import type { FormControlProps } from '../FormControl.js';
1
+ import { HTMLAttributes } from 'react';
2
+ import { FormControlProps } from '../FormControl.js';
3
3
  export interface RadioGroupProps<Value = string> extends Pick<FormControlProps<Value>, 'id' | 'name' | 'value' | 'onChange' | 'disabled' | 'readOnly' | 'tabIndex' | 'description' | 'validationStatus' | 'errorMessage'>, Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
4
4
  }
5
5
  export declare function RadioGroup<Value = string>(props: RadioGroupProps<Value>): import("react/jsx-runtime").JSX.Element;
@@ -2,72 +2,70 @@ import { jsx as N } from "react/jsx-runtime";
2
2
  import { useId as O, Children as V, isValidElement as W, cloneElement as y } from "react";
3
3
  import { useValue as _ } from "../../../hooks/useValue.js";
4
4
  import { c as h } from "../../../chunks/index.js";
5
- import { KEY as l } from "../../../hooks/keyboard.constants.js";
6
- function G(R) {
7
- const g = O(), {
8
- id: i = g,
9
- name: p = i,
10
- children: v,
11
- value: I,
12
- defaultValue: E,
13
- onChange: b,
14
- disabled: m,
15
- readOnly: d,
16
- tabIndex: A = 0,
17
- ...f
18
- } = R, { value: s, setValue: c } = _({
19
- name: p,
20
- initialValue: I,
21
- defaultValue: E,
22
- onChange: b
23
- }), C = (e, o) => {
24
- var r, t;
25
- let a = o;
26
- const n = e.target.parentNode.querySelectorAll('[role="radio"]');
27
- if (e.key === l.ARROW_RIGHT || e.key === l.ARROW_DOWN)
28
- a = (o + 1) % n.length, (r = n[a]) == null || r.focus();
29
- else if (e.key === l.ARROW_LEFT || e.key === l.ARROW_UP)
30
- a = (o - 1 + n.length) % n.length, (t = n[a]) == null || t.focus();
31
- else if (e.key === l.SPACE || e.key === l.ENTER) {
32
- c(n[o].dataset.value);
5
+ import { KEY as a } from "../../../hooks/keyboard.constants.js";
6
+ function G(k) {
7
+ const R = O(), {
8
+ id: s = R,
9
+ name: u = s,
10
+ children: g,
11
+ value: v,
12
+ defaultValue: I,
13
+ onChange: E,
14
+ disabled: p,
15
+ readOnly: c,
16
+ tabIndex: b = 0,
17
+ ...m
18
+ } = k, { value: r, setValue: i } = _({
19
+ name: u,
20
+ initialValue: v,
21
+ defaultValue: I,
22
+ onChange: E
23
+ }), A = (e, o) => {
24
+ let n = o;
25
+ const t = e.target.parentNode.querySelectorAll('[role="radio"]');
26
+ if (e.key === a.ARROW_RIGHT || e.key === a.ARROW_DOWN)
27
+ n = (o + 1) % t.length, t[n]?.focus();
28
+ else if (e.key === a.ARROW_LEFT || e.key === a.ARROW_UP)
29
+ n = (o - 1 + t.length) % t.length, t[n]?.focus();
30
+ else if (e.key === a.SPACE || e.key === a.ENTER) {
31
+ i(t[o].dataset.value);
33
32
  return;
34
33
  }
35
34
  };
36
- function k(e, o) {
37
- return s == null || s === "" ? A === o ? 0 : -1 : e ? 0 : -1;
35
+ function d(e, o) {
36
+ return r == null || r === "" ? b === o ? 0 : -1 : e ? 0 : -1;
38
37
  }
39
- return /* @__PURE__ */ N("div", { ...f, className: h("flex gap-12", f.className), role: "radiogroup", children: V.map(v, (e, o) => {
38
+ return /* @__PURE__ */ N("div", { ...m, className: h("flex gap-12", m.className), role: "radiogroup", children: V.map(g, (e, o) => {
40
39
  if (!W(e))
41
40
  return e;
42
- const a = e.type.displayName, n = e.props.value, r = s === n;
43
- return a != null && a.includes("Button") ? y(e, {
41
+ const n = e.type.displayName, t = e.props.value, l = r === t;
42
+ return n?.includes("Button") ? y(e, {
44
43
  ...e.props,
45
44
  value: void 0,
46
45
  role: "radio",
47
- color: r ? "black" : "white",
48
- name: p,
46
+ color: l ? "black" : "white",
47
+ name: u,
49
48
  component: "span",
50
- id: `${i}-${o}`,
51
- disabled: m,
52
- readOnly: d,
53
- tabIndex: k(r, o),
54
- "data-value": n,
55
- "aria-checked": s === n,
56
- onKeyDown: (t) => C(t, o),
49
+ id: `${s}-${o}`,
50
+ disabled: p,
51
+ readOnly: c,
52
+ tabIndex: d(l, o),
53
+ "data-value": t,
54
+ "aria-checked": r === t,
55
+ onKeyDown: (f) => A(f, o),
57
56
  onClick() {
58
- var t, u;
59
- c(n), (u = (t = e.props) == null ? void 0 : t.onClick) == null || u.call(t, n);
57
+ i(t), e.props?.onClick?.(t);
60
58
  }
61
59
  }) : y(e, {
62
60
  ...e.props,
63
- name: p,
64
- id: `${i}-${o}`,
65
- disabled: m,
66
- readOnly: d,
67
- tabIndex: k(r, o),
68
- checked: r,
69
- onChange(t, u) {
70
- c(u);
61
+ name: u,
62
+ id: `${s}-${o}`,
63
+ disabled: p,
64
+ readOnly: c,
65
+ tabIndex: d(l, o),
66
+ checked: l,
67
+ onChange(f, C) {
68
+ i(C);
71
69
  }
72
70
  });
73
71
  }) });
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","sources":["../../../../lib/molecules/Forms/Radios/RadioGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n useId,\n type ReactElement,\n} from 'react';\nimport type { FormControlProps } from '@/molecules/Forms/FormControl.js';\nimport type { RadioProps } from '@/molecules/Forms/Radios/Radio.js';\nimport { useValue } from '@/hooks/useValue.js';\nimport classnames from 'classnames';\nimport type { ButtonProps } from '@/molecules/Buttons/v2/Button';\nimport { KEY } from '@/hooks/keyboard.constants';\n\nexport interface RadioGroupProps<Value = string>\n extends Pick<\n FormControlProps<Value>,\n | 'id'\n | 'name'\n | 'value'\n | 'onChange'\n | 'disabled'\n | 'readOnly'\n | 'tabIndex'\n | 'description'\n | 'validationStatus'\n | 'errorMessage'\n >,\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {}\n\nexport function RadioGroup<Value = string>(props: RadioGroupProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n children,\n value: initialValue,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n tabIndex = 0,\n ...rest\n } = props;\n\n const { value, setValue } = useValue<Value>({\n name,\n initialValue,\n defaultValue: defaultValue as Value,\n onChange,\n });\n\n const handleKeyDown = (e: KeyboardEvent, index: number) => {\n let newIndex = index;\n const options = (e.target as any)!.parentNode!.querySelectorAll('[role=\"radio\"]');\n\n if (e.key === KEY.ARROW_RIGHT || e.key === KEY.ARROW_DOWN) {\n newIndex = (index + 1) % options.length;\n options[newIndex]?.focus();\n } else if (e.key === KEY.ARROW_LEFT || e.key === KEY.ARROW_UP) {\n newIndex = (index - 1 + options.length) % options.length;\n options[newIndex]?.focus();\n } else if (e.key === KEY.SPACE || e.key === KEY.ENTER) {\n setValue(options[index].dataset.value as Value);\n return;\n }\n };\n\n function getTabIndex(checked: boolean, index: number) {\n if (value === undefined || value === null || value === '') {\n return tabIndex === index ? 0 : -1;\n }\n\n return checked ? 0 : -1;\n }\n\n return (\n <div {...rest} className={classnames('flex gap-12', rest.className)} role=\"radiogroup\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const type = (child.type as unknown as ReactElement & { displayName?: string }).displayName;\n const itemValue = (child.props as ButtonProps | RadioProps).value;\n const checked = value === itemValue;\n\n if (type?.includes('Button')) {\n return cloneElement(child, {\n ...child.props,\n value: undefined,\n role: 'radio',\n color: checked ? 'black' : 'white',\n name,\n component: 'span',\n id: `${id}-${index}`,\n disabled,\n readOnly,\n tabIndex: getTabIndex(checked, index),\n 'data-value': itemValue,\n 'aria-checked': value === itemValue,\n onKeyDown: (e: KeyboardEvent) => handleKeyDown(e, index),\n onClick() {\n setValue(itemValue as Value);\n child.props?.onClick?.(itemValue as Value);\n },\n } as ButtonProps);\n }\n\n return cloneElement(child, {\n ...child.props,\n name,\n id: `${id}-${index}`,\n disabled,\n readOnly,\n tabIndex: getTabIndex(checked, index),\n checked: checked,\n onChange(_: string, value: Value) {\n setValue(value);\n },\n } as RadioProps<Value>);\n })}\n </div>\n );\n}\n"],"names":["RadioGroup","props","internalId","useId","id","name","children","initialValue","defaultValue","onChange","disabled","readOnly","tabIndex","rest","value","setValue","useValue","handleKeyDown","index","newIndex","options","KEY","_a","_b","getTabIndex","checked","classnames","Children","child","isValidElement","type","itemValue","cloneElement","e","_"],"mappings":";;;;;AA+BO,SAASA,EAA2BC,GAA+B;AACxE,QAAMC,IAAaC,EAAA,GAEb;AAAA,IACJ,IAAAC,IAAKF;AAAA,IACL,MAAAG,IAAOD;AAAA,IACP,UAAAE;AAAA,IACA,OAAOC;AAAA,IACP,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,GAAGC;AAAA,EAAA,IACDZ,GAEE,EAAE,OAAAa,GAAO,UAAAC,EAAA,IAAaC,EAAgB;AAAA,IAC1C,MAAAX;AAAA,IACA,cAAAE;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,CACD,GAEKQ,IAAgB,CAAC,GAAkBC,MAAkB;;AACzD,QAAIC,IAAWD;AACf,UAAME,IAAW,EAAE,OAAgB,WAAY,iBAAiB,gBAAgB;AAEhF,QAAI,EAAE,QAAQC,EAAI,eAAe,EAAE,QAAQA,EAAI;AAC7C,MAAAF,KAAYD,IAAQ,KAAKE,EAAQ,SACjCE,IAAAF,EAAQD,CAAQ,MAAhB,QAAAG,EAAmB;AAAA,aACV,EAAE,QAAQD,EAAI,cAAc,EAAE,QAAQA,EAAI;AACnD,MAAAF,KAAYD,IAAQ,IAAIE,EAAQ,UAAUA,EAAQ,SAClDG,IAAAH,EAAQD,CAAQ,MAAhB,QAAAI,EAAmB;AAAA,aACV,EAAE,QAAQF,EAAI,SAAS,EAAE,QAAQA,EAAI,OAAO;AACrD,MAAAN,EAASK,EAAQF,CAAK,EAAE,QAAQ,KAAc;AAC9C;AAAA,IACF;AAAA,EACF;AAEA,WAASM,EAAYC,GAAkBP,GAAe;AACpD,WAA2BJ,KAAU,QAAQA,MAAU,KAC9CF,MAAaM,IAAQ,IAAI,KAG3BO,IAAU,IAAI;AAAA,EACvB;AAEA,2BACG,OAAA,EAAK,GAAGZ,GAAM,WAAWa,EAAW,eAAeb,EAAK,SAAS,GAAG,MAAK,cACvE,UAAAc,EAAS,IAAIrB,GAAU,CAACsB,GAAOV,MAAU;AACxC,QAAI,CAACW,EAAeD,CAAK;AACvB,aAAOA;AAGT,UAAME,IAAQF,EAAM,KAA4D,aAC1EG,IAAaH,EAAM,MAAmC,OACtDH,IAAUX,MAAUiB;AAE1B,WAAID,KAAA,QAAAA,EAAM,SAAS,YACVE,EAAaJ,GAAO;AAAA,MACzB,GAAGA,EAAM;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAOH,IAAU,UAAU;AAAA,MAC3B,MAAApB;AAAA,MACA,WAAW;AAAA,MACX,IAAI,GAAGD,CAAE,IAAIc,CAAK;AAAA,MAClB,UAAAR;AAAA,MACA,UAAAC;AAAA,MACA,UAAUa,EAAYC,GAASP,CAAK;AAAA,MACpC,cAAca;AAAA,MACd,gBAAgBjB,MAAUiB;AAAA,MAC1B,WAAW,CAACE,MAAqBhB,EAAcgB,GAAGf,CAAK;AAAA,MACvD,UAAU;;AACR,QAAAH,EAASgB,CAAkB,IAC3BR,KAAAD,IAAAM,EAAM,UAAN,gBAAAN,EAAa,YAAb,QAAAC,EAAA,KAAAD,GAAuBS;AAAA,MACzB;AAAA,IAAA,CACc,IAGXC,EAAaJ,GAAO;AAAA,MACzB,GAAGA,EAAM;AAAA,MACT,MAAAvB;AAAA,MACA,IAAI,GAAGD,CAAE,IAAIc,CAAK;AAAA,MAClB,UAAAR;AAAA,MACA,UAAAC;AAAA,MACA,UAAUa,EAAYC,GAASP,CAAK;AAAA,MACpC,SAAAO;AAAA,MACA,SAASS,GAAWpB,GAAc;AAChC,QAAAC,EAASD,CAAK;AAAA,MAChB;AAAA,IAAA,CACoB;AAAA,EACxB,CAAC,EAAA,CACH;AAEJ;"}
1
+ {"version":3,"file":"RadioGroup.js","sources":["../../../../lib/molecules/Forms/Radios/RadioGroup.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n useId,\n type ReactElement,\n} from 'react';\nimport type { FormControlProps } from '@/molecules/Forms/FormControl.js';\nimport type { RadioProps } from '@/molecules/Forms/Radios/Radio.js';\nimport { useValue } from '@/hooks/useValue.js';\nimport classnames from 'classnames';\nimport type { ButtonProps } from '@/molecules/Buttons/v2/Button';\nimport { KEY } from '@/hooks/keyboard.constants';\n\nexport interface RadioGroupProps<Value = string>\n extends Pick<\n FormControlProps<Value>,\n | 'id'\n | 'name'\n | 'value'\n | 'onChange'\n | 'disabled'\n | 'readOnly'\n | 'tabIndex'\n | 'description'\n | 'validationStatus'\n | 'errorMessage'\n >,\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {}\n\nexport function RadioGroup<Value = string>(props: RadioGroupProps<Value>) {\n const internalId = useId();\n\n const {\n id = internalId,\n name = id,\n children,\n value: initialValue,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n tabIndex = 0,\n ...rest\n } = props;\n\n const { value, setValue } = useValue<Value>({\n name,\n initialValue,\n defaultValue: defaultValue as Value,\n onChange,\n });\n\n const handleKeyDown = (e: KeyboardEvent, index: number) => {\n let newIndex = index;\n const options = (e.target as any)!.parentNode!.querySelectorAll('[role=\"radio\"]');\n\n if (e.key === KEY.ARROW_RIGHT || e.key === KEY.ARROW_DOWN) {\n newIndex = (index + 1) % options.length;\n options[newIndex]?.focus();\n } else if (e.key === KEY.ARROW_LEFT || e.key === KEY.ARROW_UP) {\n newIndex = (index - 1 + options.length) % options.length;\n options[newIndex]?.focus();\n } else if (e.key === KEY.SPACE || e.key === KEY.ENTER) {\n setValue(options[index].dataset.value as Value);\n return;\n }\n };\n\n function getTabIndex(checked: boolean, index: number) {\n if (value === undefined || value === null || value === '') {\n return tabIndex === index ? 0 : -1;\n }\n\n return checked ? 0 : -1;\n }\n\n return (\n <div {...rest} className={classnames('flex gap-12', rest.className)} role=\"radiogroup\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const type = (child.type as unknown as ReactElement & { displayName?: string }).displayName;\n const itemValue = (child.props as ButtonProps | RadioProps).value;\n const checked = value === itemValue;\n\n if (type?.includes('Button')) {\n return cloneElement(child, {\n ...child.props,\n value: undefined,\n role: 'radio',\n color: checked ? 'black' : 'white',\n name,\n component: 'span',\n id: `${id}-${index}`,\n disabled,\n readOnly,\n tabIndex: getTabIndex(checked, index),\n 'data-value': itemValue,\n 'aria-checked': value === itemValue,\n onKeyDown: (e: KeyboardEvent) => handleKeyDown(e, index),\n onClick() {\n setValue(itemValue as Value);\n child.props?.onClick?.(itemValue as Value);\n },\n } as ButtonProps);\n }\n\n return cloneElement(child, {\n ...child.props,\n name,\n id: `${id}-${index}`,\n disabled,\n readOnly,\n tabIndex: getTabIndex(checked, index),\n checked: checked,\n onChange(_: string, value: Value) {\n setValue(value);\n },\n } as RadioProps<Value>);\n })}\n </div>\n );\n}\n"],"names":["RadioGroup","props","internalId","useId","id","name","children","initialValue","defaultValue","onChange","disabled","readOnly","tabIndex","rest","value","setValue","useValue","handleKeyDown","index","newIndex","options","KEY","getTabIndex","checked","classnames","Children","child","isValidElement","type","itemValue","cloneElement","e","_"],"mappings":";;;;;AA+BO,SAASA,EAA2BC,GAA+B;AACxE,QAAMC,IAAaC,EAAA,GAEb;AAAA,IACJ,IAAAC,IAAKF;AAAA,IACL,MAAAG,IAAOD;AAAA,IACP,UAAAE;AAAA,IACA,OAAOC;AAAA,IACP,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,GAAGC;AAAA,EAAA,IACDZ,GAEE,EAAE,OAAAa,GAAO,UAAAC,EAAA,IAAaC,EAAgB;AAAA,IAC1C,MAAAX;AAAA,IACA,cAAAE;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,EAAA,CACD,GAEKQ,IAAgB,CAAC,GAAkBC,MAAkB;AACzD,QAAIC,IAAWD;AACf,UAAME,IAAW,EAAE,OAAgB,WAAY,iBAAiB,gBAAgB;AAEhF,QAAI,EAAE,QAAQC,EAAI,eAAe,EAAE,QAAQA,EAAI;AAC7C,MAAAF,KAAYD,IAAQ,KAAKE,EAAQ,QACjCA,EAAQD,CAAQ,GAAG,MAAA;AAAA,aACV,EAAE,QAAQE,EAAI,cAAc,EAAE,QAAQA,EAAI;AACnD,MAAAF,KAAYD,IAAQ,IAAIE,EAAQ,UAAUA,EAAQ,QAClDA,EAAQD,CAAQ,GAAG,MAAA;AAAA,aACV,EAAE,QAAQE,EAAI,SAAS,EAAE,QAAQA,EAAI,OAAO;AACrD,MAAAN,EAASK,EAAQF,CAAK,EAAE,QAAQ,KAAc;AAC9C;AAAA,IACF;AAAA,EACF;AAEA,WAASI,EAAYC,GAAkBL,GAAe;AACpD,WAA2BJ,KAAU,QAAQA,MAAU,KAC9CF,MAAaM,IAAQ,IAAI,KAG3BK,IAAU,IAAI;AAAA,EACvB;AAEA,2BACG,OAAA,EAAK,GAAGV,GAAM,WAAWW,EAAW,eAAeX,EAAK,SAAS,GAAG,MAAK,cACvE,UAAAY,EAAS,IAAInB,GAAU,CAACoB,GAAOR,MAAU;AACxC,QAAI,CAACS,EAAeD,CAAK;AACvB,aAAOA;AAGT,UAAME,IAAQF,EAAM,KAA4D,aAC1EG,IAAaH,EAAM,MAAmC,OACtDH,IAAUT,MAAUe;AAE1B,WAAID,GAAM,SAAS,QAAQ,IAClBE,EAAaJ,GAAO;AAAA,MACzB,GAAGA,EAAM;AAAA,MACT,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAOH,IAAU,UAAU;AAAA,MAC3B,MAAAlB;AAAA,MACA,WAAW;AAAA,MACX,IAAI,GAAGD,CAAE,IAAIc,CAAK;AAAA,MAClB,UAAAR;AAAA,MACA,UAAAC;AAAA,MACA,UAAUW,EAAYC,GAASL,CAAK;AAAA,MACpC,cAAcW;AAAA,MACd,gBAAgBf,MAAUe;AAAA,MAC1B,WAAW,CAACE,MAAqBd,EAAcc,GAAGb,CAAK;AAAA,MACvD,UAAU;AACR,QAAAH,EAASc,CAAkB,GAC3BH,EAAM,OAAO,UAAUG,CAAkB;AAAA,MAC3C;AAAA,IAAA,CACc,IAGXC,EAAaJ,GAAO;AAAA,MACzB,GAAGA,EAAM;AAAA,MACT,MAAArB;AAAA,MACA,IAAI,GAAGD,CAAE,IAAIc,CAAK;AAAA,MAClB,UAAAR;AAAA,MACA,UAAAC;AAAA,MACA,UAAUW,EAAYC,GAASL,CAAK;AAAA,MACpC,SAAAK;AAAA,MACA,SAASS,GAAWlB,GAAc;AAChC,QAAAC,EAASD,CAAK;AAAA,MAChB;AAAA,IAAA,CACoB;AAAA,EACxB,CAAC,EAAA,CACH;AAEJ;"}
@@ -1,5 +1,4 @@
1
- import { type InputHTMLAttributes } from 'react';
2
- import './range.css';
1
+ import { InputHTMLAttributes } from 'react';
3
2
  interface RangeProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
4
3
  /**
5
4
  * Aria label