@cambly/syntax-core 9.0.1 → 9.1.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.
package/dist/index.mjs CHANGED
@@ -545,6 +545,16 @@ var loadingIconSize_default = loadingIconSize;
545
545
  // css-module:./Button.module.css#css-module
546
546
  var Button_module_default2 = { "button": "_button_1iunh_1", "buttonGap": "_buttonGap_1iunh_9", "fullWidth": "_fullWidth_1iunh_50", "sm": "_sm_1iunh_54", "md": "_md_1iunh_61", "lg": "_lg_1iunh_68", "icon": "_icon_1iunh_75", "smIcon": "_smIcon_1iunh_79", "mdIcon": "_mdIcon_1iunh_86", "lgIcon": "_lgIcon_1iunh_93", "secondaryBorder": "_secondaryBorder_1iunh_100", "secondaryDestructiveBorder": "_secondaryDestructiveBorder_1iunh_104", "loading": "_loading_1iunh_118", "syntaxButtonLoadingRotate": "_syntaxButtonLoadingRotate_1iunh_1", "loadingCircle": "_loadingCircle_1iunh_122" };
547
547
 
548
+ // src/useIsHydrated.tsx
549
+ import { useEffect, useState } from "react";
550
+ function useIsHydrated() {
551
+ const [isHydrated, setIsHydrated] = useState(false);
552
+ useEffect(() => {
553
+ setIsHydrated(true);
554
+ }, []);
555
+ return isHydrated;
556
+ }
557
+
548
558
  // src/Button/Button.tsx
549
559
  import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
550
560
  var Button = forwardRef2(
@@ -564,6 +574,7 @@ var Button = forwardRef2(
564
574
  tooltip,
565
575
  type = "button"
566
576
  }, ref) => {
577
+ const isHydrated = useIsHydrated();
567
578
  return /* @__PURE__ */ jsxs2(
568
579
  "button",
569
580
  {
@@ -572,7 +583,7 @@ var Button = forwardRef2(
572
583
  "aria-label": accessibilityLabel,
573
584
  type,
574
585
  title: tooltip,
575
- disabled: disabled || loading,
586
+ disabled: !isHydrated || disabled || loading,
576
587
  onClick,
577
588
  className: (0, import_classnames4.default)(
578
589
  Button_module_default2.button,
@@ -678,10 +689,10 @@ function Card({
678
689
 
679
690
  // src/Checkbox/Checkbox.tsx
680
691
  var import_classnames6 = __toESM(require_classnames());
681
- import { useState as useState2 } from "react";
692
+ import { useState as useState3 } from "react";
682
693
 
683
694
  // src/useFocusVisible.tsx
684
- import { useState, useEffect } from "react";
695
+ import { useState as useState2, useEffect as useEffect2 } from "react";
685
696
  var hasSetupGlobalListeners = false;
686
697
  var currentModality = null;
687
698
  var changeHandlers = /* @__PURE__ */ new Set();
@@ -757,8 +768,8 @@ function setupGlobalFocusEvents() {
757
768
  }
758
769
  function useFocusVisible() {
759
770
  setupGlobalFocusEvents();
760
- const [isFocusVisibleState, setFocusVisible] = useState(isFocusVisible());
761
- useEffect(() => {
771
+ const [isFocusVisibleState, setFocusVisible] = useState2(isFocusVisible());
772
+ useEffect2(() => {
762
773
  const handler = () => {
763
774
  setFocusVisible(isFocusVisible());
764
775
  };
@@ -771,7 +782,7 @@ function useFocusVisible() {
771
782
  }
772
783
 
773
784
  // css-module:./Checkbox.module.css#css-module
774
- var Checkbox_module_default = { "mainContainer": "_mainContainer_1omm6_1", "inputOverlay": "_inputOverlay_1omm6_8", "checkbox": "_checkbox_1omm6_14", "disabled": "_disabled_1omm6_22", "cursorDisabled": "_cursorDisabled_1omm6_26", "cursorEnabled": "_cursorEnabled_1omm6_30", "uncheckedBox": "_uncheckedBox_1omm6_34", "uncheckedBorder": "_uncheckedBorder_1omm6_38", "uncheckedErrorBorder": "_uncheckedErrorBorder_1omm6_42", "checkedBox": "_checkedBox_1omm6_46", "checkedNonError": "_checkedNonError_1omm6_50", "checkedError": "_checkedError_1omm6_54", "sm": "_sm_1omm6_58", "md": "_md_1omm6_64" };
785
+ var Checkbox_module_default = { "mainContainer": "_mainContainer_an7al_1", "inputOverlay": "_inputOverlay_an7al_9", "checkbox": "_checkbox_an7al_17", "disabled": "_disabled_an7al_25", "cursorDisabled": "_cursorDisabled_an7al_29", "cursorEnabled": "_cursorEnabled_an7al_33", "uncheckedBox": "_uncheckedBox_an7al_37", "uncheckedBorder": "_uncheckedBorder_an7al_41", "uncheckedErrorBorder": "_uncheckedErrorBorder_an7al_45", "checkedBox": "_checkedBox_an7al_49", "checkedNonError": "_checkedNonError_an7al_53", "checkedError": "_checkedError_an7al_57", "sm": "_sm_an7al_61", "md": "_md_an7al_67" };
775
786
 
776
787
  // css-module:../Focus.module.css#css-module
777
788
  var Focus_module_default = { "accessibilityOutlineFocus": "_accessibilityOutlineFocus_1h8bq_1" };
@@ -789,13 +800,15 @@ var iconWidth = {
789
800
  var Checkbox = ({
790
801
  checked = false,
791
802
  "data-testid": dataTestId,
792
- disabled = false,
803
+ disabled: disabledProp = false,
793
804
  size = "md",
794
805
  label,
795
806
  error = false,
796
807
  onChange
797
808
  }) => {
798
- const [isFocused, setIsFocused] = useState2(false);
809
+ const isHydrated = useIsHydrated();
810
+ const disabled = !isHydrated || disabledProp;
811
+ const [isFocused, setIsFocused] = useState3(false);
799
812
  const { isFocusVisible: isFocusVisible2 } = useFocusVisible();
800
813
  const checkboxStyling = (0, import_classnames6.default)(Checkbox_module_default.checkbox, Checkbox_module_default[size]);
801
814
  const uncheckedStyling = (0, import_classnames6.default)(checkboxStyling, Checkbox_module_default.uncheckedBox, {
@@ -866,7 +879,7 @@ var import_classnames7 = __toESM(require_classnames());
866
879
  import { forwardRef as forwardRef3 } from "react";
867
880
 
868
881
  // css-module:./Chip.module.css#css-module
869
- var Chip_module_default = { "chip": "_chip_1rwvt_1", "selectedChip": "_selectedChip_1rwvt_12", "icon": "_icon_1rwvt_17", "selectedIcon": "_selectedIcon_1rwvt_25", "sm": "_sm_1rwvt_29", "lg": "_lg_1rwvt_35" };
882
+ var Chip_module_default = { "chip": "_chip_nvvgx_1", "disabled": "_disabled_nvvgx_12", "selectedChip": "_selectedChip_nvvgx_17", "icon": "_icon_nvvgx_22", "selectedIcon": "_selectedIcon_nvvgx_30", "sm": "_sm_nvvgx_34", "lg": "_lg_nvvgx_40" };
870
883
 
871
884
  // src/Chip/Chip.tsx
872
885
  import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
@@ -879,8 +892,11 @@ var Chip = forwardRef3(
879
892
  onChange,
880
893
  icon: Icon
881
894
  }, ref) => {
895
+ const isHydrated = useIsHydrated();
896
+ const disabled = !isHydrated;
882
897
  const chipStyles = (0, import_classnames7.default)(Chip_module_default.chip, Chip_module_default[size], {
883
- [Chip_module_default.selectedChip]: selected
898
+ [Chip_module_default.selectedChip]: selected,
899
+ [Chip_module_default.disabled]: disabled
884
900
  });
885
901
  const iconStyles = (0, import_classnames7.default)(Chip_module_default.icon, {
886
902
  [Chip_module_default.selectedIcon]: selected
@@ -893,6 +909,7 @@ var Chip = forwardRef3(
893
909
  "button",
894
910
  {
895
911
  className: chipStyles,
912
+ disabled,
896
913
  "data-testid": dataTestId,
897
914
  ref,
898
915
  type: "button",
@@ -961,6 +978,7 @@ var IconButton_module_default = { "iconButton": "_iconButton_4e8qe_1", "sm": "_s
961
978
 
962
979
  // src/IconButton/IconButton.tsx
963
980
  import { jsx as jsx12 } from "react/jsx-runtime";
981
+ "use client";
964
982
  var iconSize2 = {
965
983
  ["sm"]: IconButton_module_default.smIcon,
966
984
  ["md"]: IconButton_module_default.mdIcon,
@@ -977,6 +995,7 @@ var IconButton = forwardRef4(
977
995
  tooltip,
978
996
  onClick
979
997
  }, ref) => {
998
+ const isHydrated = useIsHydrated();
980
999
  return /* @__PURE__ */ jsx12(
981
1000
  "button",
982
1001
  {
@@ -984,7 +1003,7 @@ var IconButton = forwardRef4(
984
1003
  "data-testid": dataTestId,
985
1004
  type: "button",
986
1005
  title: tooltip,
987
- disabled,
1006
+ disabled: !isHydrated || disabled,
988
1007
  onClick,
989
1008
  className: (0, import_classnames8.default)(
990
1009
  IconButton_module_default.iconButton,
@@ -1082,7 +1101,7 @@ var LinkButton_default = LinkButton;
1082
1101
  var import_classnames10 = __toESM(require_classnames());
1083
1102
 
1084
1103
  // src/Modal/FocusTrap.tsx
1085
- import { useEffect as useEffect2, useRef } from "react";
1104
+ import { useEffect as useEffect3, useRef } from "react";
1086
1105
  import { jsx as jsx14 } from "react/jsx-runtime";
1087
1106
  function queryFocusableAll(el) {
1088
1107
  const selector = [
@@ -1114,7 +1133,7 @@ function FocusTrap({
1114
1133
  }) {
1115
1134
  const elRef = useRef(null);
1116
1135
  const previouslyFocusedElRef = useRef(null);
1117
- useEffect2(() => {
1136
+ useEffect3(() => {
1118
1137
  const { current: element } = elRef;
1119
1138
  const focusFirstChild = () => {
1120
1139
  const withinIframe = window !== window.parent;
@@ -1148,9 +1167,9 @@ function FocusTrap({
1148
1167
  }
1149
1168
 
1150
1169
  // src/Modal/StopScroll.tsx
1151
- import { useEffect as useEffect3 } from "react";
1170
+ import { useEffect as useEffect4 } from "react";
1152
1171
  function StopScroll(props) {
1153
- useEffect3(() => {
1172
+ useEffect4(() => {
1154
1173
  const originalStyle = window.getComputedStyle(document.body).overflow;
1155
1174
  document.body.style.overflow = "hidden";
1156
1175
  return () => {
@@ -1272,7 +1291,7 @@ Modal.displayName = "Modal";
1272
1291
 
1273
1292
  // src/RadioButton/RadioButton.tsx
1274
1293
  var import_classnames11 = __toESM(require_classnames());
1275
- import { useState as useState3 } from "react";
1294
+ import { useState as useState4 } from "react";
1276
1295
 
1277
1296
  // css-module:./RadioButton.module.css#css-module
1278
1297
  var RadioButton_module_default = { "radioBaseContainer": "_radioBaseContainer_6h2zg_1", "disabled": "_disabled_6h2zg_9", "cursorDisabled": "_cursorDisabled_6h2zg_13", "cursorEnabled": "_cursorEnabled_6h2zg_17", "smBase": "_smBase_6h2zg_21", "mdBase": "_mdBase_6h2zg_25", "radioStyleOverride": "_radioStyleOverride_6h2zg_29", "smOverride": "_smOverride_6h2zg_34", "mdOverride": "_mdOverride_6h2zg_39", "background": "_background_6h2zg_44", "sm": "_sm_6h2zg_21", "md": "_md_6h2zg_25", "neutralBorder": "_neutralBorder_6h2zg_61", "smCheckedBorder": "_smCheckedBorder_6h2zg_65", "mdCheckedBorder": "_mdCheckedBorder_6h2zg_69", "errorBorderColor": "_errorBorderColor_6h2zg_73", "borderColor": "_borderColor_6h2zg_77" };
@@ -1282,7 +1301,7 @@ import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
1282
1301
  var RadioButton = ({
1283
1302
  checked = false,
1284
1303
  "data-testid": dataTestId,
1285
- disabled = false,
1304
+ disabled: disabledProp = false,
1286
1305
  error = false,
1287
1306
  id,
1288
1307
  label,
@@ -1291,7 +1310,9 @@ var RadioButton = ({
1291
1310
  size = "md",
1292
1311
  value
1293
1312
  }) => {
1294
- const [isFocused, setIsFocused] = useState3(false);
1313
+ const isHydrated = useIsHydrated();
1314
+ const disabled = !isHydrated || disabledProp;
1315
+ const [isFocused, setIsFocused] = useState4(false);
1295
1316
  const { isFocusVisible: isFocusVisible2 } = useFocusVisible();
1296
1317
  const sharedStyles = (0, import_classnames11.default)(RadioButton_module_default.background, RadioButton_module_default[size], {
1297
1318
  [RadioButton_module_default.errorBorderColor]: error,
@@ -1365,7 +1386,7 @@ var RadioButton_default = RadioButton;
1365
1386
  var import_classnames12 = __toESM(require_classnames());
1366
1387
  import {
1367
1388
  useId,
1368
- useState as useState4
1389
+ useState as useState5
1369
1390
  } from "react";
1370
1391
 
1371
1392
  // ../syntax-design-tokens/dist/js/index.js
@@ -1395,7 +1416,7 @@ var iconSize3 = {
1395
1416
  function SelectList({
1396
1417
  children,
1397
1418
  "data-testid": dataTestId,
1398
- disabled = false,
1419
+ disabled: disabledProp = false,
1399
1420
  errorText,
1400
1421
  helperText,
1401
1422
  id,
@@ -1407,9 +1428,11 @@ function SelectList({
1407
1428
  size = "md"
1408
1429
  }) {
1409
1430
  const reactId = useId();
1431
+ const isHydrated = useIsHydrated();
1432
+ const disabled = !isHydrated || disabledProp;
1410
1433
  const selectId = id != null ? id : reactId;
1411
1434
  const { isFocusVisible: isFocusVisible2 } = useFocusVisible();
1412
- const [isFocused, setIsFocused] = useState4(false);
1435
+ const [isFocused, setIsFocused] = useState5(false);
1413
1436
  return /* @__PURE__ */ jsxs8(
1414
1437
  "div",
1415
1438
  {
@@ -1490,12 +1513,14 @@ var TapArea = forwardRef6(
1490
1513
  children,
1491
1514
  accessibilityLabel,
1492
1515
  "data-testid": dataTestId,
1493
- disabled = false,
1516
+ disabled: disabledProp = false,
1494
1517
  fullWidth = true,
1495
1518
  onClick,
1496
1519
  rounding = "none",
1497
1520
  tabIndex = 0
1498
1521
  }, ref) => {
1522
+ const isHydrated = useIsHydrated();
1523
+ const disabled = !isHydrated || disabledProp;
1499
1524
  const handleClick = (event) => !disabled ? onClick(event) : void 0;
1500
1525
  const handleKeyDown = (event) => {
1501
1526
  if (disabled)
@@ -1544,7 +1569,7 @@ import { jsx as jsx21, jsxs as jsxs9 } from "react/jsx-runtime";
1544
1569
  function TextField({
1545
1570
  autoComplete,
1546
1571
  "data-testid": dataTestId,
1547
- disabled = false,
1572
+ disabled: disabledProp = false,
1548
1573
  errorText = "",
1549
1574
  helperText = "",
1550
1575
  id,
@@ -1555,6 +1580,8 @@ function TextField({
1555
1580
  type = "text",
1556
1581
  value = ""
1557
1582
  }) {
1583
+ const isHydrated = useIsHydrated();
1584
+ const disabled = !isHydrated || disabledProp;
1558
1585
  const reactId = useId2();
1559
1586
  const inputId = id != null ? id : reactId;
1560
1587
  return /* @__PURE__ */ jsxs9(