@planningcenter/tapestry 2.8.0-rc.1 → 2.8.0-rc.3

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 (40) hide show
  1. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  2. package/dist/components/checkbox/Checkbox.js +4 -1
  3. package/dist/components/checkbox/Checkbox.js.map +1 -1
  4. package/dist/components/page-header/PageHeader.d.ts.map +1 -1
  5. package/dist/components/page-header/PageHeader.js +39 -7
  6. package/dist/components/page-header/PageHeader.js.map +1 -1
  7. package/dist/components/page-header/index.js +1 -1
  8. package/dist/components/sidenav/index.js +1 -1
  9. package/dist/index.css +2 -2
  10. package/dist/reactRender.css +13 -3
  11. package/dist/reactRender.css.map +1 -1
  12. package/dist/reactRenderLegacy.css +13 -3
  13. package/dist/reactRenderLegacy.css.map +1 -1
  14. package/dist/tapestry-wc/dist/components/{p-DyuxdWHB.js → p-B61u0ZCm.js} +2 -2
  15. package/dist/tapestry-wc/dist/components/{p-DyuxdWHB.js.map → p-B61u0ZCm.js.map} +1 -1
  16. package/dist/tapestry-wc/dist/components/{p-5mZYbcme.js → p-DcqdbjQJ.js} +3 -3
  17. package/dist/tapestry-wc/dist/components/{p-5mZYbcme.js.map → p-DcqdbjQJ.js.map} +1 -1
  18. package/dist/tapestry-wc/dist/components/{p-0A08CXL_.js → p-Dt6ZlYln.js} +2 -2
  19. package/dist/tapestry-wc/dist/components/{p-0A08CXL_.js.map → p-Dt6ZlYln.js.map} +1 -1
  20. package/dist/tapestry-wc/dist/components/{p-BhPfBZD-.js → p-bZ_u5Viy.js} +3 -3
  21. package/dist/tapestry-wc/dist/components/{p-BhPfBZD-.js.map → p-bZ_u5Viy.js.map} +1 -1
  22. package/dist/tapestry-wc/dist/components/{p-DhVoKIg5.js → p-lXXhc-2f.js} +3 -3
  23. package/dist/tapestry-wc/dist/components/{p-DhVoKIg5.js.map → p-lXXhc-2f.js.map} +1 -1
  24. package/dist/tapestry-wc/dist/components/tds-page-header-nav.js +2 -2
  25. package/dist/tapestry-wc/dist/components/tds-page-header-nav.js.map +1 -1
  26. package/dist/tapestry-wc/dist/components/tds-page-header.js +3 -3
  27. package/dist/tapestry-wc/dist/components/tds-page-header.js.map +1 -1
  28. package/dist/tapestry-wc/dist/components/tds-sidenav-item.js +3 -3
  29. package/dist/tapestry-wc/dist/components/tds-sidenav-item.js.map +1 -1
  30. package/dist/tapestry-wc/dist/components/tds-sidenav-responsive-header.js +2 -2
  31. package/dist/tapestry-wc/dist/components/tds-sidenav-responsive-header.js.map +1 -1
  32. package/dist/tapestry-wc/dist/components/tds-sidenav-section.js +3 -3
  33. package/dist/tapestry-wc/dist/components/tds-sidenav-section.js.map +1 -1
  34. package/dist/tapestry-wc/dist/components/tds-sidenav.js +5 -5
  35. package/dist/tapestry-wc/dist/components/tds-sidenav.js.map +1 -1
  36. package/dist/unstable.css +13 -3
  37. package/dist/unstable.css.map +1 -1
  38. package/dist/unstable.js +1 -0
  39. package/dist/unstable.js.map +1 -1
  40. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,EAAc,mBAAmB,EAAe,MAAM,OAAO,CAAA;AAE3E,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtC,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,aAAa,GAAG,MAAM,CAC7B,GACC,aAAa,CAAA;AAwBf;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,0KAmEpB,CAAA"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,EAAc,mBAAmB,EAAe,MAAM,OAAO,CAAA;AAE3E,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtC,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,aAAa,GAAG,MAAM,CAC7B,GACC,aAAa,CAAA;AAwBf;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,0KAwEpB,CAAA"}
@@ -1,3 +1,4 @@
1
+ import Icon from '../../utilities/Icon.js';
1
2
  import classNames from 'classnames';
2
3
  import React, { forwardRef, useCallback } from 'react';
3
4
 
@@ -35,7 +36,9 @@ const Checkbox = forwardRef(({ className, description, disabled, id, indetermina
35
36
  return (React.createElement("div", { className: combinedClassName },
36
37
  React.createElement("input", { ...restProps, "aria-describedby": description ? `${checkboxId}-description` : undefined, "aria-invalid": invalid, disabled: disabled, id: checkboxId, ref: callbackRef, required: required, type: "checkbox" }),
37
38
  React.createElement("label", { htmlFor: checkboxId }, label),
38
- description && (React.createElement("p", { id: `${checkboxId}-description`, className: "tds-checkbox-description" }, description))));
39
+ description && (React.createElement("p", { id: `${checkboxId}-description`, className: "tds-checkbox-description" },
40
+ React.createElement(Icon, { className: "tds-checkbox-description-invalid-icon", symbol: "general#exclamation-triangle", "aria-hidden": true }),
41
+ description))));
39
42
  });
40
43
  Checkbox.displayName = "Checkbox";
41
44
 
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport classNames from \"classnames\"\nimport React, { forwardRef, InputHTMLAttributes, useCallback } from \"react\"\n\nexport type CheckboxSize = \"md\" | \"sm\"\n\nexport interface CheckboxProps {\n description?: string\n disabled?: boolean\n id?: string\n indeterminate?: boolean\n invalid?: boolean\n label: string\n required?: boolean\n size?: CheckboxSize\n}\n\nexport type CheckboxElementProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n keyof CheckboxProps | \"type\"\n> &\n CheckboxProps\n\nlet idCounter = 0\n\nconst buildCheckboxClassName = ({\n className,\n invalid,\n indeterminate,\n size,\n}: {\n className?: string\n indeterminate?: boolean\n invalid?: boolean\n size?: CheckboxSize\n}): string => {\n return classNames(\n \"tds-checkbox\",\n size && size !== \"md\" && `tds-checkbox--${size}`,\n invalid && \"tds-checkbox--invalid\",\n indeterminate && \"tds-checkbox--indeterminate\",\n className\n )\n}\n\n/**\n * A checkbox component that renders as a checkbox input with label.\n * Supports various sizes, error states, and disabled states.\n * Label must be a string.\n *\n * @component\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxElementProps>(\n (\n {\n className,\n description,\n disabled,\n id,\n indeterminate = false,\n invalid,\n label,\n required = false,\n size = \"md\",\n ...restProps\n }: CheckboxElementProps,\n ref\n ) => {\n const callbackRef = useCallback(\n (element: HTMLInputElement | null) => {\n if (element) {\n element.indeterminate = indeterminate\n }\n\n // Handle the forwarded ref\n if (typeof ref === \"function\") {\n ref(element)\n } else if (ref && typeof ref === \"object\") {\n ref.current = element\n }\n },\n [ref, indeterminate]\n )\n\n const combinedClassName = buildCheckboxClassName({\n className,\n indeterminate,\n invalid,\n size,\n })\n\n const checkboxId = id || `tds-checkbox-${idCounter++}`\n\n return (\n <div className={combinedClassName}>\n <input\n {...restProps}\n aria-describedby={\n description ? `${checkboxId}-description` : undefined\n }\n aria-invalid={invalid}\n disabled={disabled}\n id={checkboxId}\n ref={callbackRef}\n required={required}\n type=\"checkbox\"\n />\n <label htmlFor={checkboxId}>{label}</label>\n {description && (\n <p\n id={`${checkboxId}-description`}\n className=\"tds-checkbox-description\"\n >\n {description}\n </p>\n )}\n </div>\n )\n }\n)\n\nCheckbox.displayName = \"Checkbox\"\n"],"names":[],"mappings":";;;AAwBA,IAAI,SAAS,GAAG,CAAC;AAEjB,MAAM,sBAAsB,GAAG,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,GAML,KAAY;IACX,OAAO,UAAU,CACf,cAAc,EACd,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAA,cAAA,EAAiB,IAAI,EAAE,EAChD,OAAO,IAAI,uBAAuB,EAClC,aAAa,IAAI,6BAA6B,EAC9C,SAAS,CACV;AACH,CAAC;AAED;;;;;;AAMG;AACI,MAAM,QAAQ,GAAG,UAAU,CAChC,CACE,EACE,SAAS,EACT,WAAW,EACX,QAAQ,EACR,EAAE,EACF,aAAa,GAAG,KAAK,EACrB,OAAO,EACP,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,IAAI,EACX,GAAG,SAAS,EACS,EACvB,GAAG,KACD;AACF,IAAA,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,OAAgC,KAAI;QACnC,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,aAAa,GAAG,aAAa;QACvC;;AAGA,QAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;YAC7B,GAAG,CAAC,OAAO,CAAC;QACd;AAAO,aAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzC,YAAA,GAAG,CAAC,OAAO,GAAG,OAAO;QACvB;AACF,IAAA,CAAC,EACD,CAAC,GAAG,EAAE,aAAa,CAAC,CACrB;IAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;QAC/C,SAAS;QACT,aAAa;QACb,OAAO;QACP,IAAI;AACL,KAAA,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE,IAAI,gBAAgB,SAAS,EAAE,EAAE;AAEtD,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA;AAC/B,QAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,GACM,SAAS,EAAA,kBAAA,EAEX,WAAW,GAAG,CAAA,EAAG,UAAU,CAAA,YAAA,CAAc,GAAG,SAAS,EAAA,cAAA,EAEzC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,UAAU,EAAA,CACf;AACF,QAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,UAAU,EAAA,EAAG,KAAK,CAAS;AAC1C,QAAA,WAAW,KACV,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,EAAE,EAAE,CAAA,EAAG,UAAU,CAAA,YAAA,CAAc,EAC/B,SAAS,EAAC,0BAA0B,EAAA,EAEnC,WAAW,CACV,CACL,CACG;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport Icon from \"@utilities/Icon\"\nimport classNames from \"classnames\"\nimport React, { forwardRef, InputHTMLAttributes, useCallback } from \"react\"\n\nexport type CheckboxSize = \"md\" | \"sm\"\n\nexport interface CheckboxProps {\n description?: string\n disabled?: boolean\n id?: string\n indeterminate?: boolean\n invalid?: boolean\n label: string\n required?: boolean\n size?: CheckboxSize\n}\n\nexport type CheckboxElementProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n keyof CheckboxProps | \"type\"\n> &\n CheckboxProps\n\nlet idCounter = 0\n\nconst buildCheckboxClassName = ({\n className,\n invalid,\n indeterminate,\n size,\n}: {\n className?: string\n indeterminate?: boolean\n invalid?: boolean\n size?: CheckboxSize\n}): string => {\n return classNames(\n \"tds-checkbox\",\n size && size !== \"md\" && `tds-checkbox--${size}`,\n invalid && \"tds-checkbox--invalid\",\n indeterminate && \"tds-checkbox--indeterminate\",\n className\n )\n}\n\n/**\n * A checkbox component that renders as a checkbox input with label.\n * Supports various sizes, error states, and disabled states.\n * Label must be a string.\n *\n * @component\n */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxElementProps>(\n (\n {\n className,\n description,\n disabled,\n id,\n indeterminate = false,\n invalid,\n label,\n required = false,\n size = \"md\",\n ...restProps\n }: CheckboxElementProps,\n ref\n ) => {\n const callbackRef = useCallback(\n (element: HTMLInputElement | null) => {\n if (element) {\n element.indeterminate = indeterminate\n }\n\n // Handle the forwarded ref\n if (typeof ref === \"function\") {\n ref(element)\n } else if (ref && typeof ref === \"object\") {\n ref.current = element\n }\n },\n [ref, indeterminate]\n )\n\n const combinedClassName = buildCheckboxClassName({\n className,\n indeterminate,\n invalid,\n size,\n })\n\n const checkboxId = id || `tds-checkbox-${idCounter++}`\n\n return (\n <div className={combinedClassName}>\n <input\n {...restProps}\n aria-describedby={\n description ? `${checkboxId}-description` : undefined\n }\n aria-invalid={invalid}\n disabled={disabled}\n id={checkboxId}\n ref={callbackRef}\n required={required}\n type=\"checkbox\"\n />\n <label htmlFor={checkboxId}>{label}</label>\n {description && (\n <p\n id={`${checkboxId}-description`}\n className=\"tds-checkbox-description\"\n >\n <Icon\n className=\"tds-checkbox-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n aria-hidden\n />\n {description}\n </p>\n )}\n </div>\n )\n }\n)\n\nCheckbox.displayName = \"Checkbox\"\n"],"names":[],"mappings":";;;;AAyBA,IAAI,SAAS,GAAG,CAAC;AAEjB,MAAM,sBAAsB,GAAG,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,GAML,KAAY;IACX,OAAO,UAAU,CACf,cAAc,EACd,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAA,cAAA,EAAiB,IAAI,EAAE,EAChD,OAAO,IAAI,uBAAuB,EAClC,aAAa,IAAI,6BAA6B,EAC9C,SAAS,CACV;AACH,CAAC;AAED;;;;;;AAMG;AACI,MAAM,QAAQ,GAAG,UAAU,CAChC,CACE,EACE,SAAS,EACT,WAAW,EACX,QAAQ,EACR,EAAE,EACF,aAAa,GAAG,KAAK,EACrB,OAAO,EACP,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,IAAI,EACX,GAAG,SAAS,EACS,EACvB,GAAG,KACD;AACF,IAAA,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,OAAgC,KAAI;QACnC,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,aAAa,GAAG,aAAa;QACvC;;AAGA,QAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;YAC7B,GAAG,CAAC,OAAO,CAAC;QACd;AAAO,aAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACzC,YAAA,GAAG,CAAC,OAAO,GAAG,OAAO;QACvB;AACF,IAAA,CAAC,EACD,CAAC,GAAG,EAAE,aAAa,CAAC,CACrB;IAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;QAC/C,SAAS;QACT,aAAa;QACb,OAAO;QACP,IAAI;AACL,KAAA,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE,IAAI,gBAAgB,SAAS,EAAE,EAAE;AAEtD,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA;AAC/B,QAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,GACM,SAAS,EAAA,kBAAA,EAEX,WAAW,GAAG,CAAA,EAAG,UAAU,CAAA,YAAA,CAAc,GAAG,SAAS,EAAA,cAAA,EAEzC,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,UAAU,EAAA,CACf;AACF,QAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,UAAU,EAAA,EAAG,KAAK,CAAS;QAC1C,WAAW,KACV,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,EAAE,EAAE,CAAA,EAAG,UAAU,CAAA,YAAA,CAAc,EAC/B,SAAS,EAAC,0BAA0B,EAAA;YAEpC,KAAA,CAAA,aAAA,CAAC,IAAI,IACH,SAAS,EAAC,uCAAuC,EACjD,MAAM,EAAC,8BAA8B,EAAA,aAAA,EAAA,IAAA,EAAA,CAErC;AACD,YAAA,WAAW,CACV,CACL,CACG;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/page-header/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAgB,EAChB,OAAe,GAChB,EAAE;IACD;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBAUA"}
1
+ {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/page-header/PageHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAgB,EAChB,OAAe,GAChB,EAAE;IACD;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBA+BA"}
@@ -1,12 +1,44 @@
1
- import React from 'react';
1
+ import classNames from 'classnames';
2
+ import React, { useRef, useEffect } from 'react';
2
3
 
3
4
  function PageHeader({ children, actions, navigation, className, inactive = false, profile = false, }) {
4
- const inactiveProps = inactive ? { inactive } : {};
5
- const profileProps = profile ? { profile } : {};
6
- return (React.createElement("tds-page-header", { ...inactiveProps, ...profileProps, class: className },
7
- children,
8
- actions && React.createElement("div", { slot: "actions" }, actions),
9
- navigation && React.createElement("nav", { slot: "navigation" }, navigation)));
5
+ const hasMultiActions = actions
6
+ ? React.isValidElement(actions) && actions.type === React.Fragment
7
+ ? React.Children.count(actions.props.children) > 1
8
+ : React.Children.count(actions) > 1
9
+ : false;
10
+ const nav = useScrollToSelected(navigation);
11
+ return (React.createElement("header", { className: classNames("tds-page-header", className, {
12
+ "has-multi-actions": hasMultiActions,
13
+ "has-nav": !!navigation,
14
+ inactive,
15
+ "tds-page-header--profile": profile,
16
+ }) },
17
+ React.createElement("div", { className: "tds-page-header__title-bar" },
18
+ React.createElement("div", { className: "tds-page-header__primary" }, children),
19
+ actions && (React.createElement("div", { className: "tds-page-header__actions tds-no-print" }, actions))),
20
+ navigation && (React.createElement("nav", { ref: nav, className: "tds-page-header__nav tds-no-print" }, navigation))));
21
+ }
22
+ function useScrollToSelected(navigation) {
23
+ const nav = useRef(null);
24
+ useEffect(() => {
25
+ if (!nav.current)
26
+ return;
27
+ const ulElement = nav.current.querySelector("ul");
28
+ if (!ulElement)
29
+ return;
30
+ const selectedItem = ulElement.querySelector(".selected");
31
+ if (selectedItem) {
32
+ const bounds = selectedItem.getBoundingClientRect();
33
+ const ulBounds = ulElement.getBoundingClientRect();
34
+ if (bounds.right > ulBounds.right || bounds.left < ulBounds.left) {
35
+ ulElement.scrollTo({
36
+ left: ulElement.scrollLeft + bounds.left - ulBounds.left,
37
+ });
38
+ }
39
+ }
40
+ }, [navigation]);
41
+ return nav;
10
42
  }
11
43
 
12
44
  export { PageHeader };
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.js","sources":["../../../src/components/page-header/PageHeader.tsx"],"sourcesContent":["import React from \"react\"\n\nexport function PageHeader({\n children,\n actions,\n navigation,\n className,\n inactive = false,\n profile = false,\n}: {\n /**\n * Additional content (typically actions) that complements the primary slot.\n */\n actions?: React.ReactNode\n /**\n * The main content of the page header. It will be displayed prominently. For simple pages, providing a h1 will suffice.\n */\n children: React.ReactNode\n className?: string\n /**\n * Indicates whether the page header is inactive or not. When set to true, the page header is visually inactive\n */\n inactive?: boolean\n /**\n * Navigation for the page. Should contain an unstyled unordered list (ul)\n * that contains a list of links or buttons.\n */\n navigation?: React.ReactNode\n /**\n * Indicates whether the page header is a profile page header or not. When set to true, the page header will visually center the title and actions at mobile breakpoints.\n */\n profile?: boolean\n}) {\n const inactiveProps = inactive ? { inactive } : {}\n const profileProps = profile ? { profile } : {}\n return (\n <tds-page-header {...inactiveProps} {...profileProps} class={className}>\n {children}\n {actions && <div slot=\"actions\">{actions}</div>}\n {navigation && <nav slot=\"navigation\">{navigation}</nav>}\n </tds-page-header>\n )\n}\n"],"names":[],"mappings":";;SAEgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,GAwBhB,EAAA;AACC,IAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;AAClD,IAAA,MAAM,YAAY,GAAG,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;IAC/C,QACE,4CAAqB,aAAa,EAAA,GAAM,YAAY,EAAE,KAAK,EAAE,SAAS,EAAA;QACnE,QAAQ;AACR,QAAA,OAAO,IAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,IAAI,EAAC,SAAS,EAAA,EAAE,OAAO,CAAO;QAC9C,UAAU,IAAI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,IAAI,EAAC,YAAY,IAAE,UAAU,CAAO,CACxC;AAEtB;;;;"}
1
+ {"version":3,"file":"PageHeader.js","sources":["../../../src/components/page-header/PageHeader.tsx"],"sourcesContent":["import classNames from \"classnames\"\nimport React, { useEffect, useRef } from \"react\"\n\nexport function PageHeader({\n children,\n actions,\n navigation,\n className,\n inactive = false,\n profile = false,\n}: {\n /**\n * Additional content (typically actions) that complements the primary slot.\n */\n actions?: React.ReactNode\n /**\n * The main content of the page header. It will be displayed prominently. For simple pages, providing a h1 will suffice.\n */\n children: React.ReactNode\n className?: string\n /**\n * Indicates whether the page header is inactive or not. When set to true, the page header is visually inactive\n */\n inactive?: boolean\n /**\n * Navigation for the page. Should contain an unstyled unordered list (ul)\n * that contains a list of links or buttons.\n */\n navigation?: React.ReactNode\n /**\n * Indicates whether the page header is a profile page header or not. When set to true, the page header will visually center the title and actions at mobile breakpoints.\n */\n profile?: boolean\n}) {\n const hasMultiActions = actions\n ? React.isValidElement(actions) && actions.type === React.Fragment\n ? React.Children.count(actions.props.children) > 1\n : React.Children.count(actions) > 1\n : false\n\n const nav = useScrollToSelected(navigation)\n\n return (\n <header\n className={classNames(\"tds-page-header\", className, {\n \"has-multi-actions\": hasMultiActions,\n \"has-nav\": !!navigation,\n inactive,\n \"tds-page-header--profile\": profile,\n })}\n >\n <div className=\"tds-page-header__title-bar\">\n <div className=\"tds-page-header__primary\">{children}</div>\n {actions && (\n <div className=\"tds-page-header__actions tds-no-print\">{actions}</div>\n )}\n </div>\n {navigation && (\n <nav ref={nav} className=\"tds-page-header__nav tds-no-print\">\n {navigation}\n </nav>\n )}\n </header>\n )\n}\n\nfunction useScrollToSelected(navigation: React.ReactNode) {\n const nav = useRef<HTMLElement>(null)\n useEffect(() => {\n if (!nav.current) return\n const ulElement = nav.current.querySelector(\"ul\")\n if (!ulElement) return\n const selectedItem = ulElement.querySelector(\".selected\")\n if (selectedItem) {\n const bounds = selectedItem.getBoundingClientRect()\n const ulBounds = ulElement.getBoundingClientRect()\n if (bounds.right > ulBounds.right || bounds.left < ulBounds.left) {\n ulElement.scrollTo({\n left: ulElement.scrollLeft + bounds.left - ulBounds.left,\n })\n }\n }\n }, [navigation])\n return nav\n}\n"],"names":[],"mappings":";;;SAGgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,GAwBhB,EAAA;IACC,MAAM,eAAe,GAAG;AACtB,UAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC;AACxD,cAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;cAC/C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;UAClC,KAAK;AAET,IAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAE3C,QACE,gCACE,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,EAAE;AAClD,YAAA,mBAAmB,EAAE,eAAe;YACpC,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,QAAQ;AACR,YAAA,0BAA0B,EAAE,OAAO;SACpC,CAAC,EAAA;QAEF,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA;AACzC,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,EAAE,QAAQ,CAAO;YACzD,OAAO,KACN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,EAAE,OAAO,CAAO,CACvE,CACG;AACL,QAAA,UAAU,KACT,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,mCAAmC,IACzD,UAAU,CACP,CACP,CACM;AAEb;AAEA,SAAS,mBAAmB,CAAC,UAA2B,EAAA;AACtD,IAAA,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC;IACrC,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE;QAClB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AACjD,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC;QACzD,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,qBAAqB,EAAE;AACnD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE;AAClD,YAAA,IAAI,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE;gBAChE,SAAS,CAAC,QAAQ,CAAC;oBACjB,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACzD,iBAAA,CAAC;YACJ;QACF;AACF,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAChB,IAAA,OAAO,GAAG;AACZ;;;;"}
@@ -1,4 +1,4 @@
1
- import '../../tapestry-wc/dist/components/p-DyuxdWHB.js';
1
+ import '../../tapestry-wc/dist/components/p-B61u0ZCm.js';
2
2
  import { defineCustomElement } from '../../tapestry-wc/dist/components/tds-page-header.js';
3
3
  import { defineCustomElement as defineCustomElement$1 } from '../../tapestry-wc/dist/components/tds-page-header-nav.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import '../../tapestry-wc/dist/components/p-DyuxdWHB.js';
1
+ import '../../tapestry-wc/dist/components/p-B61u0ZCm.js';
2
2
  import { defineCustomElement } from '../../tapestry-wc/dist/components/tds-sidenav.js';
3
3
  import { defineCustomElement as defineCustomElement$1 } from '../../tapestry-wc/dist/components/tds-sidenav-item.js';
4
4
  import { defineCustomElement as defineCustomElement$3 } from '../../tapestry-wc/dist/components/tds-sidenav-responsive-header.js';
package/dist/index.css CHANGED
@@ -1077,7 +1077,7 @@
1077
1077
  overflow-wrap:break-word;
1078
1078
  }
1079
1079
 
1080
- .tds-page-header [slot="actions"]{
1080
+ .tds-page-header [slot="actions"], .tds-page-header .tds-page-header__actions{
1081
1081
  width:100%;
1082
1082
  }
1083
1083
 
@@ -1206,7 +1206,7 @@
1206
1206
  align-items:flex-start;
1207
1207
  }
1208
1208
 
1209
- .tds-page-header [slot="actions"]{
1209
+ .tds-page-header [slot="actions"], .tds-page-header .tds-page-header__actions{
1210
1210
  width:auto;
1211
1211
  }
1212
1212
 
@@ -106,7 +106,7 @@
106
106
  overflow-wrap:break-word;
107
107
  }
108
108
 
109
- .tds-page-header [slot="actions"]{
109
+ .tds-page-header [slot="actions"], .tds-page-header .tds-page-header__actions{
110
110
  width:100%;
111
111
  }
112
112
 
@@ -235,7 +235,7 @@
235
235
  align-items:flex-start;
236
236
  }
237
237
 
238
- .tds-page-header [slot="actions"]{
238
+ .tds-page-header [slot="actions"], .tds-page-header .tds-page-header__actions{
239
239
  width:auto;
240
240
  }
241
241
 
@@ -2087,6 +2087,8 @@ a[class="tds-btn"]{
2087
2087
  --tds-checkbox-description-line-height:1.35;
2088
2088
  --tds-checkbox-description-color:var(--t-text-color-secondary);
2089
2089
 
2090
+ --tds-checkbox-description-invalid-icon-display:none;
2091
+
2090
2092
  position:relative;
2091
2093
  display:inline-grid;
2092
2094
  grid-template-areas:"checkbox label" ". description";
@@ -2194,7 +2196,10 @@ a[class="tds-btn"]{
2194
2196
  }
2195
2197
 
2196
2198
  .tds-checkbox-description{
2199
+ display:flex;
2197
2200
  grid-area:description;
2201
+ gap:4px;
2202
+ align-items:center;
2198
2203
  margin:0;
2199
2204
  margin-top:var(--t-spacing-fourth);
2200
2205
  font-size:var(--tds-checkbox-description-font-size);
@@ -2203,14 +2208,19 @@ a[class="tds-btn"]{
2203
2208
  cursor:text;
2204
2209
  }
2205
2210
 
2211
+ .tds-checkbox-description-invalid-icon{
2212
+ display:var(--tds-checkbox-description-invalid-icon-display);
2213
+ }
2214
+
2206
2215
  .tds-checkbox--invalid,
2207
- .tds-checkbox:has(input:invalid){
2216
+ .tds-checkbox:has(input:user-invalid){
2208
2217
  --tds-checkbox-input-border-color:var(--t-border-color-button-delete);
2209
2218
  --tds-checkbox-input-border-color-hover:var(--t-border-color-button-delete);
2210
2219
  --tds-checkbox-input-background-color-hover:var(--t-fill-color-button-delete-outline-hover);
2211
2220
  --tds-checkbox-input-border-color-checked:var(--t-fill-color-button-delete-solid);
2212
2221
  --tds-checkbox-input-background-color-checked:var(--t-fill-color-button-delete-solid);
2213
2222
  --tds-checkbox-description-color:var(--t-text-color-status-error);
2223
+ --tds-checkbox-description-invalid-icon-display:inline-block;
2214
2224
  }
2215
2225
 
2216
2226
  .tds-checkbox:has(input:required) label::after{