@clubmed/trident-ui 1.2.0 → 1.3.0-beta.10

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 (227) hide show
  1. package/CHANGELOG.md +961 -860
  2. package/README.md +11 -1
  3. package/assets/style.css +1 -1
  4. package/atoms/Clickable/Clickable.d.ts +5 -0
  5. package/atoms/Clickable/Clickable.js +25 -0
  6. package/atoms/Clickable/Clickable.js.map +1 -0
  7. package/atoms/Heading/Heading.d.ts +6 -0
  8. package/atoms/Heading/Heading.js +14 -0
  9. package/atoms/Heading/Heading.js.map +1 -0
  10. package/atoms/Heading/HeadingGroup.d.ts +7 -0
  11. package/atoms/Heading/HeadingGroup.js +15 -0
  12. package/atoms/Heading/HeadingGroup.js.map +1 -0
  13. package/atoms/Image/Image.d.ts +7 -0
  14. package/atoms/Image/Image.js +18 -0
  15. package/atoms/Image/Image.js.map +1 -0
  16. package/atoms/Prose/Prose.d.ts +5 -0
  17. package/atoms/Prose/Prose.js +18 -0
  18. package/atoms/Prose/Prose.js.map +1 -0
  19. package/chunks/ResizeObserver.js +287 -0
  20. package/chunks/ResizeObserver.js.map +1 -0
  21. package/chunks/_commonjsHelpers.js +24 -4
  22. package/chunks/_commonjsHelpers.js.map +1 -1
  23. package/chunks/index.js.map +1 -1
  24. package/chunks/plugin.js +53 -0
  25. package/chunks/plugin.js.map +1 -0
  26. package/contexts/Device.d.ts +2 -22
  27. package/contexts/Device.js +5 -59
  28. package/contexts/Device.js.map +1 -1
  29. package/contexts/Devices/Device.d.ts +11 -0
  30. package/contexts/Devices/Device.js +23 -0
  31. package/contexts/Devices/Device.js.map +1 -0
  32. package/contexts/Devices/hooks/useQueries.d.ts +6 -0
  33. package/contexts/Devices/hooks/useQueries.js +24 -0
  34. package/contexts/Devices/hooks/useQueries.js.map +1 -0
  35. package/contexts/Devices/reducers/reducer.d.ts +25 -0
  36. package/contexts/Devices/reducers/reducer.js +50 -0
  37. package/contexts/Devices/reducers/reducer.js.map +1 -0
  38. package/contexts/TridentUIConfig.js +228 -228
  39. package/contexts/TridentUIConfig.js.map +1 -1
  40. package/helpers/colors/colors.d.ts +108 -0
  41. package/helpers/colors/colors.js +132 -0
  42. package/helpers/colors/colors.js.map +1 -0
  43. package/hooks/keyboard.constants.js.map +1 -1
  44. package/hooks/useInternalStatus.js.map +1 -1
  45. package/hooks/useKeyboardControls.js.map +1 -1
  46. package/hooks/useResizeObserver.d.ts +2 -0
  47. package/hooks/useResizeObserver.js +84 -0
  48. package/hooks/useResizeObserver.js.map +1 -0
  49. package/hooks/useSafeBoop.js.map +1 -1
  50. package/hooks/useValue.js.map +1 -1
  51. package/molecules/Arrows/Arrows.d.ts +16 -0
  52. package/molecules/Arrows/Arrows.js +66 -0
  53. package/molecules/Arrows/Arrows.js.map +1 -0
  54. package/molecules/Arrows/ArrowsLabels.d.js +2 -0
  55. package/molecules/Arrows/ArrowsLabels.d.js.map +1 -0
  56. package/molecules/Arrows.d.ts +1 -50
  57. package/molecules/Arrows.js +2 -56
  58. package/molecules/Arrows.js.map +1 -1
  59. package/molecules/Avatar.js.map +1 -1
  60. package/molecules/Backdrop.js.map +1 -1
  61. package/molecules/Breadcrumb.js +8 -9
  62. package/molecules/Breadcrumb.js.map +1 -1
  63. package/molecules/Buttons/ArrowButton.d.ts +7 -0
  64. package/molecules/Buttons/ArrowButton.js +14 -0
  65. package/molecules/Buttons/ArrowButton.js.map +1 -0
  66. package/molecules/Buttons/Button.d.ts +15 -32
  67. package/molecules/Buttons/Button.js +52 -42
  68. package/molecules/Buttons/Button.js.map +1 -1
  69. package/molecules/Buttons/ButtonAnchor.d.ts +7 -3
  70. package/molecules/Buttons/ButtonAnchor.js +17 -36
  71. package/molecules/Buttons/ButtonAnchor.js.map +1 -1
  72. package/molecules/Buttons/ButtonContent.d.ts +12 -4
  73. package/molecules/Buttons/ButtonContent.js +14 -8
  74. package/molecules/Buttons/ButtonContent.js.map +1 -1
  75. package/molecules/Buttons/FakeButton.d.ts +8 -0
  76. package/molecules/Buttons/FakeButton.js +8 -0
  77. package/molecules/Buttons/FakeButton.js.map +1 -0
  78. package/molecules/Buttons/InertButton.d.ts +4 -0
  79. package/molecules/Buttons/InertButton.js +15 -31
  80. package/molecules/Buttons/InertButton.js.map +1 -1
  81. package/molecules/Buttons/v2/Button.d.ts +2289 -0
  82. package/molecules/Buttons/v2/Button.js +57 -0
  83. package/molecules/Buttons/v2/Button.js.map +1 -0
  84. package/molecules/Buttons/v2/Button.type.d.ts +57 -0
  85. package/molecules/Buttons/v2/Button.type.js +45 -0
  86. package/molecules/Buttons/v2/Button.type.js.map +1 -0
  87. package/molecules/Card.d.ts +1 -11
  88. package/molecules/Card.js +2 -35
  89. package/molecules/Card.js.map +1 -1
  90. package/molecules/Cards/Card.d.ts +13 -0
  91. package/molecules/Cards/Card.js +22 -0
  92. package/molecules/Cards/Card.js.map +1 -0
  93. package/molecules/Cards/CardAspectRatios.d.ts +6 -0
  94. package/molecules/Cards/CardAspectRatios.js +10 -0
  95. package/molecules/Cards/CardAspectRatios.js.map +1 -0
  96. package/molecules/Cards/CardBackground.d.ts +4 -0
  97. package/molecules/Cards/CardBackground.js +30 -0
  98. package/molecules/Cards/CardBackground.js.map +1 -0
  99. package/molecules/Cards/CardBackgroundContext.d.ts +6 -0
  100. package/molecules/Cards/CardBackgroundContext.js +10 -0
  101. package/molecules/Cards/CardBackgroundContext.js.map +1 -0
  102. package/molecules/Cards/CardClickable.d.ts +6 -0
  103. package/molecules/Cards/CardClickable.js +37 -0
  104. package/molecules/Cards/CardClickable.js.map +1 -0
  105. package/molecules/Cards/ExpandableCard.d.ts +14 -0
  106. package/molecules/Cards/ExpandableCard.js +80 -0
  107. package/molecules/Cards/ExpandableCard.js.map +1 -0
  108. package/molecules/Cards/v2/Card.d.ts +15 -0
  109. package/molecules/Cards/v2/Card.js +34 -0
  110. package/molecules/Cards/v2/Card.js.map +1 -0
  111. package/molecules/Chip.d.ts +9 -0
  112. package/molecules/Chip.js +31 -0
  113. package/molecules/Chip.js.map +1 -0
  114. package/molecules/Chip.themes.d.ts +12 -0
  115. package/molecules/Chip.themes.js +24 -0
  116. package/molecules/Chip.themes.js.map +1 -0
  117. package/molecules/ElasticHeight.d.ts +6 -27
  118. package/molecules/ElasticHeight.js +28 -33
  119. package/molecules/ElasticHeight.js.map +1 -1
  120. package/molecules/Forms/Checkboxes/Checkbox.js +12 -13
  121. package/molecules/Forms/Checkboxes/Checkbox.js.map +1 -1
  122. package/molecules/Forms/Checkboxes/Checkboxes.js.map +1 -1
  123. package/molecules/Forms/DateField.d.ts +1 -1
  124. package/molecules/Forms/DateField.js +142 -116
  125. package/molecules/Forms/DateField.js.map +1 -1
  126. package/molecules/Forms/Filter.js +12 -13
  127. package/molecules/Forms/Filter.js.map +1 -1
  128. package/molecules/Forms/FormControl.js +15 -16
  129. package/molecules/Forms/FormControl.js.map +1 -1
  130. package/molecules/Forms/FormLabel.js.map +1 -1
  131. package/molecules/Forms/NumberField.d.ts +29 -29
  132. package/molecules/Forms/NumberField.js +68 -68
  133. package/molecules/Forms/NumberField.js.map +1 -1
  134. package/molecules/Forms/Password/Password.js +10 -11
  135. package/molecules/Forms/Password/Password.js.map +1 -1
  136. package/molecules/Forms/Password/ValidationMessage.js +8 -9
  137. package/molecules/Forms/Password/ValidationMessage.js.map +1 -1
  138. package/molecules/Forms/Radios/Radio.js.map +1 -1
  139. package/molecules/Forms/Radios/RadioGroup.js +2 -2
  140. package/molecules/Forms/Radios/RadioGroup.js.map +1 -1
  141. package/molecules/Forms/Range.js +124 -406
  142. package/molecules/Forms/Range.js.map +1 -1
  143. package/molecules/Forms/Select.d.ts +1 -1
  144. package/molecules/Forms/Select.js +3 -4
  145. package/molecules/Forms/Select.js.map +1 -1
  146. package/molecules/Forms/Switch.js.map +1 -1
  147. package/molecules/Forms/TextField.d.ts +1 -1
  148. package/molecules/Forms/TextField.js +7 -8
  149. package/molecules/Forms/TextField.js.map +1 -1
  150. package/molecules/HamburgerIcon.js.map +1 -1
  151. package/molecules/Link.d.ts +1 -1
  152. package/molecules/Link.js +8 -9
  153. package/molecules/Link.js.map +1 -1
  154. package/molecules/Loader.js.map +1 -1
  155. package/molecules/Pagination.d.ts +38 -0
  156. package/molecules/Pagination.helper.d.ts +48 -0
  157. package/molecules/Pagination.helper.js +30 -0
  158. package/molecules/Pagination.helper.js.map +1 -0
  159. package/molecules/Pagination.js +154 -0
  160. package/molecules/Pagination.js.map +1 -0
  161. package/molecules/Popin.js +16 -16
  162. package/molecules/Popin.js.map +1 -1
  163. package/molecules/Spinner.js.map +1 -1
  164. package/molecules/Tabs/Tab.d.ts +1 -1
  165. package/molecules/Tabs/Tab.js +51 -49
  166. package/molecules/Tabs/Tab.js.map +1 -1
  167. package/molecules/Tabs/TabList.js.map +1 -1
  168. package/molecules/Tabs/TabPanel.js +31 -29
  169. package/molecules/Tabs/TabPanel.js.map +1 -1
  170. package/molecules/Tabs/Tabs.js +7 -9
  171. package/molecules/Tabs/Tabs.js.map +1 -1
  172. package/molecules/Tabs/TabsBody.js.map +1 -1
  173. package/molecules/Tabs/context/TabControl.d.ts +29 -27
  174. package/molecules/Tabs/context/TabControl.js +67 -66
  175. package/molecules/Tabs/context/TabControl.js.map +1 -1
  176. package/molecules/Tabs/hooks/tabControl.d.ts +25 -14
  177. package/molecules/Tabs/hooks/tabControl.js +26 -23
  178. package/molecules/Tabs/hooks/tabControl.js.map +1 -1
  179. package/molecules/Tabs/theme.js.map +1 -1
  180. package/molecules/Tag.d.ts +43 -0
  181. package/molecules/Tag.js +73 -0
  182. package/molecules/Tag.js.map +1 -0
  183. package/package.json +29 -5
  184. package/styles/globals.css +16 -15
  185. package/tailwind/colors.d.ts +38 -0
  186. package/tailwind/colors.js +44 -0
  187. package/tailwind/colors.js.map +1 -0
  188. package/tailwind/plugins/animationDelay.d.ts +4 -0
  189. package/tailwind/plugins/animationDelay.js +15 -0
  190. package/tailwind/plugins/animationDelay.js.map +1 -0
  191. package/tailwind/plugins/hocus.d.ts +4 -0
  192. package/tailwind/plugins/hocus.js +11 -0
  193. package/tailwind/plugins/hocus.js.map +1 -0
  194. package/tailwind/plugins/lineClampFix.d.ts +4 -0
  195. package/tailwind/plugins/lineClampFix.js +13 -0
  196. package/tailwind/plugins/lineClampFix.js.map +1 -0
  197. package/tailwind/plugins/popover.d.ts +4 -0
  198. package/tailwind/plugins/popover.js +8 -0
  199. package/tailwind/plugins/popover.js.map +1 -0
  200. package/tailwind/plugins/startingStyle.d.ts +4 -0
  201. package/tailwind/plugins/startingStyle.js +8 -0
  202. package/tailwind/plugins/startingStyle.js.map +1 -0
  203. package/tailwind/plugins/transitionBehavior.d.ts +4 -0
  204. package/tailwind/plugins/transitionBehavior.js +11 -0
  205. package/tailwind/plugins/transitionBehavior.js.map +1 -0
  206. package/tailwind/tailwind.preset.d.ts +733 -510
  207. package/tailwind/tailwind.preset.js +706 -629
  208. package/tailwind/tailwind.preset.js.map +1 -1
  209. package/types/Colors.d.js +2 -0
  210. package/types/Colors.d.js.map +1 -0
  211. package/types/Devices.d.ts +8 -0
  212. package/types/Devices.js +11 -0
  213. package/types/Devices.js.map +1 -0
  214. package/types/Direction.d.js +2 -0
  215. package/types/Direction.d.js.map +1 -0
  216. package/types/LiteralUnion.d.js +2 -0
  217. package/types/LiteralUnion.d.js.map +1 -0
  218. package/types/ScrollerLabels.d.js +2 -0
  219. package/types/ScrollerLabels.d.js.map +1 -0
  220. package/types/Theme.d.js +2 -0
  221. package/types/Theme.d.js.map +1 -0
  222. package/molecules/Buttons/Button.helpers.d.ts +0 -7
  223. package/molecules/Buttons/Button.helpers.js +0 -11
  224. package/molecules/Buttons/Button.helpers.js.map +0 -1
  225. package/molecules/Buttons/Button.themes.d.ts +0 -1
  226. package/molecules/Buttons/Button.themes.js +0 -25
  227. package/molecules/Buttons/Button.themes.js.map +0 -1
@@ -0,0 +1,43 @@
1
+ import { type IconicNames } from '@clubmed/trident-icons';
2
+ import type { FunctionComponent } from 'react';
3
+ import { type BgColor, type BorderColor, type TextColor } from '../helpers/colors/colors.js';
4
+ import type { LiteralUnion } from '../types/LiteralUnion';
5
+ export interface TagProps {
6
+ /**
7
+ * Additional class names
8
+ */
9
+ className?: string;
10
+ /**
11
+ * Background color
12
+ */
13
+ backgroundColor?: LiteralUnion<BgColor>;
14
+ /**
15
+ * Text color
16
+ */
17
+ color?: LiteralUnion<TextColor>;
18
+ /**
19
+ * Border color
20
+ */
21
+ border?: LiteralUnion<BorderColor>;
22
+ /**
23
+ * Optional icon name
24
+ */
25
+ icon?: IconicNames;
26
+ /**
27
+ * Tag label
28
+ */
29
+ label?: string;
30
+ /**
31
+ * theme mode
32
+ */
33
+ theme?: 'icon' | 'label' | 'both' | 'swap' | 'unfold' | 'monogram' | 'pill' | 'none';
34
+ /**
35
+ * Icon class name
36
+ */
37
+ iconClassName?: string;
38
+ /**
39
+ * Label class name
40
+ */
41
+ labelClassName?: string;
42
+ }
43
+ export declare const Tag: FunctionComponent<TagProps>;
@@ -0,0 +1,73 @@
1
+ import { jsxs as u, jsx as s } from "react/jsx-runtime";
2
+ import { Icon as C } from "@clubmed/trident-icons";
3
+ import { c as n } from "../chunks/index.js";
4
+ import { getBorderColor as y, getBgColor as N, getTextColor as j } from "../helpers/colors/colors.js";
5
+ const z = ({
6
+ className: i,
7
+ backgroundColor: l = "saffron",
8
+ border: m = l,
9
+ color: c = "black",
10
+ icon: t,
11
+ label: e = "",
12
+ theme: r = "both",
13
+ iconClassName: d,
14
+ labelClassName: b
15
+ }) => {
16
+ if (!e && !t)
17
+ return null;
18
+ const h = y(m), f = N(l), x = j(c), a = !!t, o = r === "both" && !a ? "label" : r, p = o === "both" || o === "swap" || o === "unfold" || o === "none", g = a && (o === "icon" || p), w = o === "label" || o === "pill" || p;
19
+ return /* @__PURE__ */ u(
20
+ "span",
21
+ {
22
+ "data-name": "Tag",
23
+ className: n(
24
+ "box-border inline-flex items-center justify-center gap-x-4 whitespace-nowrap rounded-pill border align-middle font-sans font-semibold",
25
+ {
26
+ "text-b4": o !== "pill",
27
+ "text-b5": o === "pill"
28
+ },
29
+ {
30
+ "p-4": o !== "label" && o !== "both",
31
+ "px-16 py-6": o === "label",
32
+ "py-4 pe-16 ps-12": o === "both",
33
+ "px-8 py-4": o === "pill",
34
+ "sm:px-16": o === "swap",
35
+ "sm:pe-16 sm:ps-12": o === "unfold"
36
+ },
37
+ h,
38
+ f,
39
+ x,
40
+ i
41
+ ),
42
+ title: e,
43
+ role: "note",
44
+ children: [
45
+ o === "monogram" && /* @__PURE__ */ s("span", { className: "size-24 text-center leading-[1.5rem]", children: e }),
46
+ g && /* @__PURE__ */ s(
47
+ C,
48
+ {
49
+ width: "1.5rem",
50
+ name: t,
51
+ className: n({ "sm:hidden": o === "swap" }, d)
52
+ }
53
+ ),
54
+ w && /* @__PURE__ */ s(
55
+ "span",
56
+ {
57
+ className: n(
58
+ {
59
+ "hidden sm:block": o === "swap" || o === "unfold"
60
+ },
61
+ b
62
+ ),
63
+ children: e
64
+ }
65
+ )
66
+ ]
67
+ }
68
+ );
69
+ };
70
+ export {
71
+ z as Tag
72
+ };
73
+ //# sourceMappingURL=Tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.js","sources":["../../lib/molecules/Tag.tsx"],"sourcesContent":["import { Icon, type IconicNames } from '@clubmed/trident-icons';\nimport classNames from 'classnames';\nimport type { FunctionComponent } from 'react';\n\nimport {\n type BgColor,\n type BorderColor,\n getBgColor,\n getBorderColor,\n getTextColor,\n type TextColor,\n} from '@/helpers/colors/colors.js';\nimport type { LiteralUnion } from '@/types/LiteralUnion';\n\nexport interface TagProps {\n /**\n * Additional class names\n */\n className?: string;\n /**\n * Background color\n */\n backgroundColor?: LiteralUnion<BgColor>;\n /**\n * Text color\n */\n color?: LiteralUnion<TextColor>;\n /**\n * Border color\n */\n border?: LiteralUnion<BorderColor>;\n /**\n * Optional icon name\n */\n icon?: IconicNames;\n /**\n * Tag label\n */\n label?: string;\n /**\n * theme mode\n */\n theme?: 'icon' | 'label' | 'both' | 'swap' | 'unfold' | 'monogram' | 'pill' | 'none';\n /**\n * Icon class name\n */\n iconClassName?: string;\n /**\n * Label class name\n */\n labelClassName?: string;\n}\n\nexport const Tag: FunctionComponent<TagProps> = ({\n className,\n backgroundColor = 'saffron',\n border = backgroundColor,\n color = 'black',\n icon,\n label = '',\n theme = 'both',\n iconClassName,\n labelClassName,\n}) => {\n if (!label && !icon) {\n return null;\n }\n\n const borderColor = getBorderColor(border);\n const bgColor = getBgColor(backgroundColor);\n const textColor = getTextColor(color);\n\n const hasIcon = !!icon;\n const mode = theme === 'both' && !hasIcon ? 'label' : theme;\n\n const withBoth = mode === 'both' || mode === 'swap' || mode === 'unfold' || mode === 'none';\n const withIcon = hasIcon && (mode === 'icon' || withBoth);\n const withLabel = mode === 'label' || mode === 'pill' || withBoth;\n\n return (\n <span\n data-name=\"Tag\"\n className={classNames(\n 'box-border inline-flex items-center justify-center gap-x-4 whitespace-nowrap rounded-pill border align-middle font-sans font-semibold',\n {\n 'text-b4': mode !== 'pill',\n 'text-b5': mode === 'pill',\n },\n {\n 'p-4': mode !== 'label' && mode !== 'both',\n 'px-16 py-6': mode === 'label',\n 'py-4 pe-16 ps-12': mode === 'both',\n 'px-8 py-4': mode === 'pill',\n 'sm:px-16': mode === 'swap',\n 'sm:pe-16 sm:ps-12': mode === 'unfold',\n },\n borderColor,\n bgColor,\n textColor,\n className,\n )}\n title={label}\n role=\"note\"\n >\n {mode === 'monogram' && <span className=\"size-24 text-center leading-[1.5rem]\">{label}</span>}\n {withIcon && (\n <Icon\n width=\"1.5rem\"\n name={icon}\n className={classNames({ 'sm:hidden': mode === 'swap' }, iconClassName)}\n />\n )}\n {withLabel && (\n <span\n className={classNames(\n {\n 'hidden sm:block': mode === 'swap' || mode === 'unfold',\n },\n labelClassName,\n )}\n >\n {label}\n </span>\n )}\n </span>\n );\n};\n"],"names":["Tag","className","backgroundColor","border","color","icon","label","theme","iconClassName","labelClassName","borderColor","getBorderColor","bgColor","getBgColor","textColor","getTextColor","hasIcon","mode","withBoth","withIcon","withLabel","jsxs","classNames","jsx","Icon"],"mappings":";;;;AAqDO,MAAMA,IAAmC,CAAC;AAAA,EAC/C,WAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,QAAAC,IAASD;AAAA,EACT,OAAAE,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,eAAAC;AAAA,EACA,gBAAAC;AACF,MAAM;AACJ,MAAI,CAACH,KAAS,CAACD;AACb,WAAO;AAGT,QAAMK,IAAcC,EAAeR,CAAM,GACnCS,IAAUC,EAAWX,CAAe,GACpCY,IAAYC,EAAaX,CAAK,GAE9BY,IAAU,CAAC,CAACX,GACZY,IAAOV,MAAU,UAAU,CAACS,IAAU,UAAUT,GAEhDW,IAAWD,MAAS,UAAUA,MAAS,UAAUA,MAAS,YAAYA,MAAS,QAC/EE,IAAWH,MAAYC,MAAS,UAAUC,IAC1CE,IAAYH,MAAS,WAAWA,MAAS,UAAUC;AAEzD,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAAA,QACT;AAAA,QACA;AAAA,UACE,WAAWL,MAAS;AAAA,UACpB,WAAWA,MAAS;AAAA,QAAA;AAAA,QAEtB;AAAA,UACE,OAAOA,MAAS,WAAWA,MAAS;AAAA,UACpC,cAAcA,MAAS;AAAA,UACvB,oBAAoBA,MAAS;AAAA,UAC7B,aAAaA,MAAS;AAAA,UACtB,YAAYA,MAAS;AAAA,UACrB,qBAAqBA,MAAS;AAAA,QAAA;AAAA,QAEhCP;AAAA,QACAE;AAAA,QACAE;AAAA,QACAb;AAAA,MAAA;AAAA,MAEF,OAAOK;AAAA,MACP,MAAK;AAAA,MAEJ,UAAA;AAAA,QAAAW,MAAS,cAAc,gBAAAM,EAAC,QAAA,EAAK,WAAU,wCAAwC,UAAAjB,GAAM;AAAA,QACrFa,KACC,gBAAAI;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,MAAMnB;AAAA,YACN,WAAWiB,EAAW,EAAE,aAAaL,MAAS,OAAA,GAAUT,CAAa;AAAA,UAAA;AAAA,QAAA;AAAA,QAGxEY,KACC,gBAAAG;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD;AAAAA,cACT;AAAA,gBACE,mBAAmBL,MAAS,UAAUA,MAAS;AAAA,cAAA;AAAA,cAEjDR;AAAA,YAAA;AAAA,YAGD,UAAAH;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAIR;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clubmed/trident-ui",
3
- "version": "1.2.0",
3
+ "version": "1.3.0-beta.10",
4
4
  "type": "module",
5
5
  "description": "Shared ClubMed React UI components",
6
6
  "keywords": [
@@ -18,7 +18,7 @@
18
18
  "license": "BSD-3-Clause",
19
19
  "repository": {
20
20
  "type": "git",
21
- "url": "https://scm.clubmed.com/clubmed/cm-trident-ui.git"
21
+ "url": "https://scm.clubmed.com/clubmed/ui/trident-ui.git"
22
22
  },
23
23
  "main": "index.js",
24
24
  "exports": {
@@ -86,6 +86,11 @@
86
86
  "types": "./tests/*.d.ts",
87
87
  "import": "./tests/*.js",
88
88
  "default": "./tests/*.js"
89
+ },
90
+ "./utils/*": {
91
+ "types": "./utils/*.d.ts",
92
+ "import": "./utils/*.js",
93
+ "default": "./utils/*.js"
89
94
  }
90
95
  },
91
96
  "scripts": {
@@ -102,9 +107,7 @@
102
107
  "build:exports": "NODE_NO_WARNINGS=1 node --loader ts-node/esm tools/exports-builder/index.ts"
103
108
  },
104
109
  "dependencies": {
105
- "@clubmed/trident-icons": ">=1.0.1",
106
110
  "@juggle/resize-observer": "^3.4.0",
107
- "@react-spring/web": "^9.7.3",
108
111
  "@use-gesture/react": "^10.2.26",
109
112
  "@whitespace/storybook-addon-html": "6.0.5",
110
113
  "build": "^0.1.4",
@@ -118,6 +121,8 @@
118
121
  "use-resize-observer": "^9.1.0"
119
122
  },
120
123
  "devDependencies": {
124
+ "@react-spring/web": "^9.7.3",
125
+ "@clubmed/trident-icons": ">=1.0.1",
121
126
  "@commitlint/cli": "18.6.1",
122
127
  "@commitlint/config-conventional": "18.6.2",
123
128
  "@netsells/storybook-mockdate": "^0.3.2",
@@ -181,7 +186,26 @@
181
186
  "peerDependencies": {
182
187
  "react": ">=17.0.2",
183
188
  "react-dom": ">=17.0.2",
184
- "tailwindcss": ">=3.3.5"
189
+ "tailwindcss": ">=3.3.5",
190
+ "@clubmed/trident-icons": ">=1.0.1",
191
+ "@react-spring/web": ">=9"
192
+ },
193
+ "peerDependenciesMeta": {
194
+ "@clubmed/trident-icons": {
195
+ "optional": false
196
+ },
197
+ "react": {
198
+ "optional": false
199
+ },
200
+ "react-dom": {
201
+ "optional": false
202
+ },
203
+ "tailwindcss": {
204
+ "optional": false
205
+ },
206
+ "@react-spring/web": {
207
+ "optional": false
208
+ }
185
209
  },
186
210
  "sideEffects": [
187
211
  "**/*.css"
@@ -25,6 +25,8 @@
25
25
  --color-sienna-active: 13deg 48% 44%;
26
26
  --color-wave: 180 100% 25%;
27
27
  --color-wave-active: 180 100% 22%;
28
+ --color-marygold: 35 100% 49%;
29
+ --color-marygold-active: 35 100% 49%;
28
30
  --color-white: 0deg 0% 100%;
29
31
  --color-white-active: 0deg 0% 80%;
30
32
 
@@ -35,16 +37,17 @@
35
37
  --color-lightGrey: 0deg 0% 80%;
36
38
  --color-pearl: 0deg 0% 97%;
37
39
  --color-green: 131deg 89% 29%;
40
+ --color-green-active: 131deg 89% 19%;
38
41
  --color-red: 9deg 79% 42%;
42
+ --color-red-active: 9deg 79% 32%;
39
43
  --color-orange: 25deg 100% 39%;
44
+ --color-orange-active: 25deg 100% 29%;
40
45
 
41
46
  /* TRANSITION */
42
47
  --transition-fn-boop: cubic-bezier(0.47, 1.64, 0.41, 0.8);
43
48
  --transition-duration-boop: 0.4s;
44
49
  }
45
- }
46
50
 
47
- @layer components {
48
51
  html {
49
52
  --xDirCoefficient: 1;
50
53
  scroll-behavior: smooth;
@@ -69,7 +72,9 @@
69
72
  }
70
73
 
71
74
  .link-container:hover .link-underline.hoverable,
72
- .link-container:focus .link-underline.hoverable {
75
+ .link-container:focus .link-underline.hoverable,
76
+ .group:hover .link-underline.hoverable,
77
+ .group:focus .link-underline.hoverable {
73
78
  background-size: calc(0% - 0px) 100%;
74
79
  }
75
80
 
@@ -78,12 +83,18 @@
78
83
  background-size: calc(0% - 0px) 100%;
79
84
  }
80
85
 
86
+ [dir='rtl'] .link-underline {
87
+ background-position: right;
88
+ }
89
+
81
90
  /* INPUTS */
91
+
92
+ /* Remove the reset button in active inputs */
93
+ input[type='search']::-webkit-search-cancel-button,
82
94
  input[type='number']::-webkit-inner-spin-button,
83
95
  input[type='number']::-webkit-outer-spin-button {
84
- appearance: none;
96
+ @apply appearance-none;
85
97
  }
86
-
87
98
  input[type='password']::-ms-reveal {
88
99
  display: none;
89
100
  }
@@ -110,14 +121,4 @@
110
121
  @apply justify-between;
111
122
  @apply uppercase;
112
123
  }
113
-
114
- /* SCROLLS */
115
- .scrollbar-hide::-webkit-scrollbar {
116
- display: none;
117
- }
118
-
119
- .scrollbar-hide {
120
- -ms-overflow-style: none;
121
- scrollbar-width: none;
122
- }
123
124
  }
@@ -0,0 +1,38 @@
1
+ export declare const COLORS: {
2
+ current: string;
3
+ transparent: string;
4
+ inherit: string;
5
+ black: string;
6
+ 'black-active': string;
7
+ ultramarine: string;
8
+ 'ultramarine-active': string;
9
+ lavender: string;
10
+ 'lavender-active': string;
11
+ verdigris: string;
12
+ 'verdigris-active': string;
13
+ sand: string;
14
+ 'sand-active': string;
15
+ lightSand: string;
16
+ 'lightSand-active': string;
17
+ saffron: string;
18
+ 'saffron-active': string;
19
+ sienna: string;
20
+ 'sienna-active': string;
21
+ wave: string;
22
+ 'wave-active': string;
23
+ marygold: string;
24
+ 'marygold-active': string;
25
+ white: string;
26
+ 'white-active': string;
27
+ darkGrey: string;
28
+ middleGrey: string;
29
+ grey: string;
30
+ lightGrey: string;
31
+ pearl: string;
32
+ green: string;
33
+ 'green-active': string;
34
+ red: string;
35
+ 'red-active': string;
36
+ orange: string;
37
+ 'orange-active': string;
38
+ };
@@ -0,0 +1,44 @@
1
+ const a = {
2
+ current: "currentColor",
3
+ transparent: "transparent",
4
+ inherit: "inherit",
5
+ /* BRAND */
6
+ black: "hsl(var(--color-black) / <alpha-value>)",
7
+ "black-active": "hsl(var(--color-black-active) / <alpha-value>)",
8
+ ultramarine: "hsl(var(--color-ultramarine) / <alpha-value>)",
9
+ "ultramarine-active": "hsl(var(--color-ultramarine-active) / <alpha-value>)",
10
+ lavender: "hsl(var(--color-lavender) / <alpha-value>)",
11
+ "lavender-active": "hsl(var(--color-lavender-active) / <alpha-value>)",
12
+ verdigris: "hsl(var(--color-verdigris) / <alpha-value>)",
13
+ "verdigris-active": "hsl(var(--color-verdigris-active) / <alpha-value>)",
14
+ sand: "hsl(var(--color-sand) / <alpha-value>)",
15
+ "sand-active": "hsl(var(--color-sand-active) / <alpha-value>)",
16
+ lightSand: "hsl(var(--color-lightSand) / <alpha-value>)",
17
+ "lightSand-active": "hsl(var(--color-lightSand-active) / <alpha-value>)",
18
+ saffron: "hsl(var(--color-saffron) / <alpha-value>)",
19
+ "saffron-active": "hsl(var(--color-saffron-active) / <alpha-value>)",
20
+ sienna: "hsl(var(--color-sienna) / <alpha-value>)",
21
+ "sienna-active": "hsl(var(--color-sienna-active) / <alpha-value>)",
22
+ wave: "hsl(var(--color-wave) / <alpha-value>)",
23
+ "wave-active": "hsl(var(--color-wave-active) / <alpha-value>)",
24
+ marygold: "hsl(var(--color-marygold) / <alpha-value>)",
25
+ "marygold-active": "hsl(var(--color-marygold-active) / <alpha-value>)",
26
+ white: "hsl(var(--color-white) / <alpha-value>)",
27
+ "white-active": "hsl(var(--color-white-active) / <alpha-value>)",
28
+ /* LAYOUT */
29
+ darkGrey: "hsl(var(--color-darkGrey) / <alpha-value>)",
30
+ middleGrey: "hsl(var(--color-middleGrey) / <alpha-value>)",
31
+ grey: "hsl(var(--color-grey) / <alpha-value>)",
32
+ lightGrey: "hsl(var(--color-lightGrey) / <alpha-value>)",
33
+ pearl: "hsl(var(--color-pearl) / <alpha-value>)",
34
+ green: "hsl(var(--color-green) / <alpha-value>)",
35
+ "green-active": "hsl(var(--color-green-active) / <alpha-value>)",
36
+ red: "hsl(var(--color-red) / <alpha-value>)",
37
+ "red-active": "hsl(var(--color-red-active) / <alpha-value>)",
38
+ orange: "hsl(var(--color-orange) / <alpha-value>)",
39
+ "orange-active": "hsl(var(--color-orange-active) / <alpha-value>)"
40
+ };
41
+ export {
42
+ a as COLORS
43
+ };
44
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sources":["../../lib/tailwind/colors.ts"],"sourcesContent":["export const COLORS = {\n current: 'currentColor',\n transparent: 'transparent',\n inherit: 'inherit',\n\n /* BRAND */\n black: 'hsl(var(--color-black) / <alpha-value>)',\n 'black-active': 'hsl(var(--color-black-active) / <alpha-value>)',\n ultramarine: 'hsl(var(--color-ultramarine) / <alpha-value>)',\n 'ultramarine-active': 'hsl(var(--color-ultramarine-active) / <alpha-value>)',\n lavender: 'hsl(var(--color-lavender) / <alpha-value>)',\n 'lavender-active': 'hsl(var(--color-lavender-active) / <alpha-value>)',\n verdigris: 'hsl(var(--color-verdigris) / <alpha-value>)',\n 'verdigris-active': 'hsl(var(--color-verdigris-active) / <alpha-value>)',\n sand: 'hsl(var(--color-sand) / <alpha-value>)',\n 'sand-active': 'hsl(var(--color-sand-active) / <alpha-value>)',\n lightSand: 'hsl(var(--color-lightSand) / <alpha-value>)',\n 'lightSand-active': 'hsl(var(--color-lightSand-active) / <alpha-value>)',\n saffron: 'hsl(var(--color-saffron) / <alpha-value>)',\n 'saffron-active': 'hsl(var(--color-saffron-active) / <alpha-value>)',\n sienna: 'hsl(var(--color-sienna) / <alpha-value>)',\n 'sienna-active': 'hsl(var(--color-sienna-active) / <alpha-value>)',\n wave: 'hsl(var(--color-wave) / <alpha-value>)',\n 'wave-active': 'hsl(var(--color-wave-active) / <alpha-value>)',\n marygold: 'hsl(var(--color-marygold) / <alpha-value>)',\n 'marygold-active': 'hsl(var(--color-marygold-active) / <alpha-value>)',\n white: 'hsl(var(--color-white) / <alpha-value>)',\n 'white-active': 'hsl(var(--color-white-active) / <alpha-value>)',\n\n /* LAYOUT */\n darkGrey: 'hsl(var(--color-darkGrey) / <alpha-value>)',\n middleGrey: 'hsl(var(--color-middleGrey) / <alpha-value>)',\n grey: 'hsl(var(--color-grey) / <alpha-value>)',\n lightGrey: 'hsl(var(--color-lightGrey) / <alpha-value>)',\n pearl: 'hsl(var(--color-pearl) / <alpha-value>)',\n green: 'hsl(var(--color-green) / <alpha-value>)',\n 'green-active': 'hsl(var(--color-green-active) / <alpha-value>)',\n red: 'hsl(var(--color-red) / <alpha-value>)',\n 'red-active': 'hsl(var(--color-red-active) / <alpha-value>)',\n orange: 'hsl(var(--color-orange) / <alpha-value>)',\n 'orange-active': 'hsl(var(--color-orange-active) / <alpha-value>)',\n};\n"],"names":["COLORS"],"mappings":"AAAO,MAAMA,IAAS;AAAA,EACpB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA;AAAA,EAGT,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP,gBAAgB;AAAA;AAAA,EAGhB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,KAAK;AAAA,EACL,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,iBAAiB;AACnB;"}
@@ -0,0 +1,4 @@
1
+ export declare const animationDelay: {
2
+ handler: import("tailwindcss/types/config").PluginCreator;
3
+ config?: Partial<import("tailwindcss/types/config").Config> | undefined;
4
+ };
@@ -0,0 +1,15 @@
1
+ import { p as o } from "../../chunks/plugin.js";
2
+ const e = o(({ matchUtilities: a, theme: i }) => {
3
+ a(
4
+ {
5
+ "animation-delay": (n) => ({
6
+ animationDelay: n
7
+ })
8
+ },
9
+ { values: i("animationDelay") }
10
+ );
11
+ });
12
+ export {
13
+ e as animationDelay
14
+ };
15
+ //# sourceMappingURL=animationDelay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animationDelay.js","sources":["../../../lib/tailwind/plugins/animationDelay.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\nexport const animationDelay = plugin(({ matchUtilities, theme }) => {\n matchUtilities(\n {\n 'animation-delay': (value) => ({\n animationDelay: value,\n }),\n },\n { values: theme('animationDelay') },\n );\n});\n"],"names":["animationDelay","plugin","matchUtilities","theme","value"],"mappings":";AAEO,MAAMA,IAAiBC,EAAO,CAAC,EAAE,gBAAAC,GAAgB,OAAAC,QAAY;AAClE,EAAAD;AAAA,IACE;AAAA,MACE,mBAAmB,CAACE,OAAW;AAAA,QAC7B,gBAAgBA;AAAA,MAAA;AAAA,IAClB;AAAA,IAEF,EAAE,QAAQD,EAAM,gBAAgB,EAAA;AAAA,EAAE;AAEtC,CAAC;"}
@@ -0,0 +1,4 @@
1
+ export declare const hocus: {
2
+ handler: import("tailwindcss/types/config").PluginCreator;
3
+ config?: Partial<import("tailwindcss/types/config").Config> | undefined;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { p as e } from "../../chunks/plugin.js";
2
+ const i = e(({ addVariant: o }) => {
3
+ o("hocus", [
4
+ "@media (hover:hover) and (pointer: fine) { &:hover }",
5
+ "@media (hover:hover) and (pointer: fine) { &:focus }"
6
+ ]);
7
+ });
8
+ export {
9
+ i as hocus
10
+ };
11
+ //# sourceMappingURL=hocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hocus.js","sources":["../../../lib/tailwind/plugins/hocus.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\nexport const hocus = plugin(({ addVariant }) => {\n addVariant('hocus', [\n '@media (hover:hover) and (pointer: fine) { &:hover }',\n '@media (hover:hover) and (pointer: fine) { &:focus }',\n ]);\n});\n"],"names":["hocus","plugin","addVariant"],"mappings":";AAEO,MAAMA,IAAQC,EAAO,CAAC,EAAE,YAAAC,QAAiB;AAC9C,EAAAA,EAAW,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,EAAA,CACD;AACH,CAAC;"}
@@ -0,0 +1,4 @@
1
+ export declare const lineClampSafariFix: {
2
+ handler: import("tailwindcss/types/config").PluginCreator;
3
+ config?: Partial<import("tailwindcss/types/config").Config> | undefined;
4
+ };
@@ -0,0 +1,13 @@
1
+ import { p as a } from "../../chunks/plugin.js";
2
+ const n = 7, p = a(({ addUtilities: t }) => {
3
+ const l = {};
4
+ for (let i = 1; i <= n; i++)
5
+ l[`.line-clamp-${i}`] = {
6
+ maxHeight: `${i}lh`
7
+ };
8
+ t(l);
9
+ });
10
+ export {
11
+ p as lineClampSafariFix
12
+ };
13
+ //# sourceMappingURL=lineClampFix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineClampFix.js","sources":["../../../lib/tailwind/plugins/lineClampFix.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\nimport type { CSSRuleObject } from 'tailwindcss/types/config';\n\nconst MAX_LINE_CLAMP = 7;\n\nexport const lineClampSafariFix = plugin(({ addUtilities }) => {\n const lineclampUtility: CSSRuleObject = {};\n\n // Generate dynamic classes for line clamp\n for (let i = 1; i <= MAX_LINE_CLAMP; i++) {\n lineclampUtility[`.line-clamp-${i}`] = {\n maxHeight: `${i}lh`,\n };\n }\n\n addUtilities(lineclampUtility);\n});\n"],"names":["MAX_LINE_CLAMP","lineClampSafariFix","plugin","addUtilities","lineclampUtility"],"mappings":";AAGA,MAAMA,IAAiB,GAEVC,IAAqBC,EAAO,CAAC,EAAE,cAAAC,QAAmB;AAC7D,QAAMC,IAAkC,CAAA;AAGxC,WAAS,IAAI,GAAG,KAAKJ,GAAgB;AACnC,IAAAI,EAAiB,eAAe,CAAC,EAAE,IAAI;AAAA,MACrC,WAAW,GAAG,CAAC;AAAA,IAAA;AAInB,EAAAD,EAAaC,CAAgB;AAC/B,CAAC;"}
@@ -0,0 +1,4 @@
1
+ export declare const popover: {
2
+ handler: import("tailwindcss/types/config").PluginCreator;
3
+ config?: Partial<import("tailwindcss/types/config").Config> | undefined;
4
+ };
@@ -0,0 +1,8 @@
1
+ import { p } from "../../chunks/plugin.js";
2
+ const r = p(({ addVariant: o }) => {
3
+ o("open", "&:popover-open");
4
+ });
5
+ export {
6
+ r as popover
7
+ };
8
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.js","sources":["../../../lib/tailwind/plugins/popover.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\nexport const popover = plugin(({ addVariant }) => {\n addVariant('open', '&:popover-open');\n});\n"],"names":["popover","plugin","addVariant"],"mappings":";AAEO,MAAMA,IAAUC,EAAO,CAAC,EAAE,YAAAC,QAAiB;AAChD,EAAAA,EAAW,QAAQ,gBAAgB;AACrC,CAAC;"}
@@ -0,0 +1,4 @@
1
+ export declare const startingStyle: {
2
+ handler: import("tailwindcss/types/config").PluginCreator;
3
+ config?: Partial<import("tailwindcss/types/config").Config> | undefined;
4
+ };
@@ -0,0 +1,8 @@
1
+ import { p as r } from "../../chunks/plugin.js";
2
+ const i = r(({ addVariant: t }) => {
3
+ t("starting", "@starting-style");
4
+ });
5
+ export {
6
+ i as startingStyle
7
+ };
8
+ //# sourceMappingURL=startingStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startingStyle.js","sources":["../../../lib/tailwind/plugins/startingStyle.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\nexport const startingStyle = plugin(({ addVariant }) => {\n addVariant('starting', '@starting-style');\n});\n"],"names":["startingStyle","plugin","addVariant"],"mappings":";AAEO,MAAMA,IAAgBC,EAAO,CAAC,EAAE,YAAAC,QAAiB;AACtD,EAAAA,EAAW,YAAY,iBAAiB;AAC1C,CAAC;"}
@@ -0,0 +1,4 @@
1
+ export declare const transitionBehavior: {
2
+ handler: import("tailwindcss/types/config").PluginCreator;
3
+ config?: Partial<import("tailwindcss/types/config").Config> | undefined;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { p as o } from "../../chunks/plugin.js";
2
+ const t = o(({ addUtilities: i }) => {
3
+ i({
4
+ ".transition-discrete": { transitionBehavior: "allow-discrete" },
5
+ ".transition-normal": { transitionBehavior: "normal" }
6
+ });
7
+ });
8
+ export {
9
+ t as transitionBehavior
10
+ };
11
+ //# sourceMappingURL=transitionBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitionBehavior.js","sources":["../../../lib/tailwind/plugins/transitionBehavior.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\nexport const transitionBehavior = plugin(({ addUtilities }) => {\n addUtilities({\n '.transition-discrete': { transitionBehavior: 'allow-discrete' },\n '.transition-normal': { transitionBehavior: 'normal' },\n });\n});\n"],"names":["transitionBehavior","plugin","addUtilities"],"mappings":";AAEO,MAAMA,IAAqBC,EAAO,CAAC,EAAE,cAAAC,QAAmB;AAC7D,EAAAA,EAAa;AAAA,IACX,wBAAwB,EAAE,oBAAoB,iBAAA;AAAA,IAC9C,sBAAsB,EAAE,oBAAoB,SAAA;AAAA,EAAS,CACtD;AACH,CAAC;"}