@j2-health/design-system 0.6.0 → 0.6.2
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/README.md +10 -9
- package/dist/index.cjs +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/index2.js +3 -1
- package/dist/src/components/bareButton/BareButton.cjs +31 -0
- package/dist/src/components/bareButton/BareButton.cjs.map +1 -0
- package/dist/src/components/bareButton/BareButton.d.ts +16 -0
- package/dist/src/components/bareButton/BareButton.js +29 -0
- package/dist/src/components/bareButton/BareButton.js.map +1 -0
- package/dist/src/components/bareButton/index.d.ts +1 -0
- package/dist/src/components/changeChip/ChangeChip.cjs +36 -30
- package/dist/src/components/changeChip/ChangeChip.cjs.map +1 -1
- package/dist/src/components/changeChip/ChangeChip.d.ts +22 -5
- package/dist/src/components/changeChip/ChangeChip.js +37 -31
- package/dist/src/components/changeChip/ChangeChip.js.map +1 -1
- package/dist/src/components/input/AntdInput.d.ts +10 -10
- package/dist/src/components/input/AntdSearchInput.d.ts +10 -10
- package/dist/src/components/select/SummarizedSelect.cjs +11 -2
- package/dist/src/components/select/SummarizedSelect.cjs.map +1 -1
- package/dist/src/components/select/SummarizedSelect.d.ts +10 -3
- package/dist/src/components/select/SummarizedSelect.js +11 -2
- package/dist/src/components/select/SummarizedSelect.js.map +1 -1
- package/dist/src/components/select/SummarizedSelect.module.css.cjs +10 -10
- package/dist/src/components/select/SummarizedSelect.module.css.cjs.map +1 -1
- package/dist/src/components/select/SummarizedSelect.module.css.js +10 -10
- package/dist/src/components/select/SummarizedSelect.module.css.js.map +1 -1
- package/dist/src/components/swatch/Swatch.cjs +12 -6
- package/dist/src/components/swatch/Swatch.cjs.map +1 -1
- package/dist/src/components/swatch/Swatch.d.ts +10 -3
- package/dist/src/components/swatch/Swatch.js +12 -6
- package/dist/src/components/swatch/Swatch.js.map +1 -1
- package/dist/src/components/swatch/index.d.ts +1 -1
- package/dist/src/components/swatchStrip/SwatchStrip.cjs +67 -28
- package/dist/src/components/swatchStrip/SwatchStrip.cjs.map +1 -1
- package/dist/src/components/swatchStrip/SwatchStrip.d.ts +56 -5
- package/dist/src/components/swatchStrip/SwatchStrip.js +67 -28
- package/dist/src/components/swatchStrip/SwatchStrip.js.map +1 -1
- package/dist/src/components/swatchStrip/index.d.ts +1 -1
- package/dist/src/utils/useRender.cjs +76 -0
- package/dist/src/utils/useRender.cjs.map +1 -0
- package/dist/src/utils/useRender.d.ts +29 -0
- package/dist/src/utils/useRender.js +73 -0
- package/dist/src/utils/useRender.js.map +1 -0
- package/dist/style.css +33 -37
- package/package.json +15 -16
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { cloneElement, createElement, isValidElement, useCallback, version } from "react";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
//#region src/utils/useRender.ts
|
|
4
|
+
/** Sets one ref. Returns a callback ref's cleanup, if it gave one. */
|
|
5
|
+
var setRef = (ref, value) => {
|
|
6
|
+
if (typeof ref === "function") return ref(value);
|
|
7
|
+
if (ref) ref.current = value;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* One callback ref that feeds every ref given to it. When a callback ref
|
|
11
|
+
* returns a cleanup (React 19), detaching runs it instead of passing null.
|
|
12
|
+
*/
|
|
13
|
+
var composeRefs = (...refs) => (value) => {
|
|
14
|
+
const cleanups = refs.map((ref) => setRef(ref, value));
|
|
15
|
+
if (!cleanups.some((cleanup) => typeof cleanup === "function")) return;
|
|
16
|
+
return () => cleanups.forEach((cleanup, index) => typeof cleanup === "function" ? cleanup() : setRef(refs[index], null));
|
|
17
|
+
};
|
|
18
|
+
/** `composeRefs`, kept stable while the refs are. */
|
|
19
|
+
var useMergedRefs = (...refs) => useCallback((value) => composeRefs(...refs)(value), refs);
|
|
20
|
+
/**
|
|
21
|
+
* Merges prop objects left to right. Later props win, except that event
|
|
22
|
+
* handlers all run (last first), classNames join, styles combine and refs
|
|
23
|
+
* all receive the element. An `undefined` handler or ref leaves an earlier
|
|
24
|
+
* one in place. The merged ref is a new function on every call, so React
|
|
25
|
+
* reattaches it on each render, as with any inline callback ref.
|
|
26
|
+
*/
|
|
27
|
+
var mergeProps = (...sources) => {
|
|
28
|
+
const merged = {};
|
|
29
|
+
for (const source of sources) {
|
|
30
|
+
if (!source) continue;
|
|
31
|
+
for (const [key, value] of Object.entries(source)) {
|
|
32
|
+
const existing = merged[key];
|
|
33
|
+
if ((key === "ref" || /^on[A-Z]/.test(key)) && value === void 0) continue;
|
|
34
|
+
else if (key === "ref" && existing) merged.ref = composeRefs(existing, value);
|
|
35
|
+
else if (/^on[A-Z]/.test(key) && typeof existing === "function" && typeof value === "function") merged[key] = (...args) => {
|
|
36
|
+
value(...args);
|
|
37
|
+
existing(...args);
|
|
38
|
+
};
|
|
39
|
+
else if (key === "className") merged.className = cx(existing, value);
|
|
40
|
+
else if (key === "style") merged.style = {
|
|
41
|
+
...existing,
|
|
42
|
+
...value
|
|
43
|
+
};
|
|
44
|
+
else merged[key] = value;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return merged;
|
|
48
|
+
};
|
|
49
|
+
var isReact19 = Number(version.split(".")[0]) >= 19;
|
|
50
|
+
/**
|
|
51
|
+
* The ref an element was created with: a prop in React 19, a field in 18.
|
|
52
|
+
* Reading the field in 19 logs a deprecation warning, so branch on version.
|
|
53
|
+
*/
|
|
54
|
+
var elementRef = (element) => isReact19 ? element.props.ref : element.ref;
|
|
55
|
+
var useRender = ({ render, props, ref, state, defaultTagName = "div" }) => {
|
|
56
|
+
const element = isValidElement(render) ? render : void 0;
|
|
57
|
+
const mergedRef = useMergedRefs(ref, element && elementRef(element));
|
|
58
|
+
const rendered = typeof render === "function" ? render({
|
|
59
|
+
...props,
|
|
60
|
+
ref: mergedRef
|
|
61
|
+
}, state) : element ? cloneElement(element, {
|
|
62
|
+
...mergeProps(props, element.props),
|
|
63
|
+
ref: mergedRef
|
|
64
|
+
}) : createElement(defaultTagName, {
|
|
65
|
+
...props,
|
|
66
|
+
ref: mergedRef
|
|
67
|
+
});
|
|
68
|
+
return rendered.type === "button" && rendered.props.type === void 0 ? cloneElement(rendered, { type: "button" }) : rendered;
|
|
69
|
+
};
|
|
70
|
+
//#endregion
|
|
71
|
+
export { mergeProps, useRender };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=useRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRender.js","names":[],"sources":["../../../src/utils/useRender.ts"],"sourcesContent":["// A port of Base UI's `render` prop: its `useRender` hook and `mergeProps`\n// utility (https://base-ui.com/react/utils/use-render), adapted without the\n// dependency and cut down to what this library uses. Base UI also maps state\n// to data-* attributes and takes arrays of refs; neither is needed here.\n//\n// A component keeps its own element and props, and lets the app swap the\n// element: pass an element to merge onto, or a function that receives the\n// props (and the component's state) and returns the element. Unlike Base UI,\n// a <button> that ends up with no `type` gets `type=\"button\"`, so swapping\n// an element in never makes a form submit button by accident.\n//\n// Base UI is distributed under the MIT License:\n//\n// Copyright (c) 2019 Material-UI SAS\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\nimport {\n cloneElement,\n createElement,\n isValidElement,\n useCallback,\n version,\n type HTMLAttributes,\n type JSX,\n type ReactElement,\n type Ref,\n type RefCallback,\n} from 'react'\nimport cx from 'classnames'\n\nexport type RenderProps = HTMLAttributes<HTMLElement> & {\n [key: string]: unknown\n}\n\n/**\n * Replaces a component's element. Pass an element to merge the component's\n * props onto, e.g. `<button />`, or a function that spreads them:\n * `(props, state) => <button {...props} onClick={…} />`.\n */\nexport type RenderProp<State> =\n | ReactElement\n | ((\n props: RenderProps & { ref: RefCallback<HTMLElement> },\n state: State\n ) => ReactElement)\n\n/** Sets one ref. Returns a callback ref's cleanup, if it gave one. */\nconst setRef = <T>(ref: Ref<T> | undefined, value: T | null) => {\n if (typeof ref === 'function') return ref(value)\n if (ref) (ref as { current: T | null }).current = value\n}\n\n/**\n * One callback ref that feeds every ref given to it. When a callback ref\n * returns a cleanup (React 19), detaching runs it instead of passing null.\n */\nconst composeRefs =\n <T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> =>\n (value: T | null) => {\n const cleanups = refs.map((ref) => setRef(ref, value))\n if (!cleanups.some((cleanup) => typeof cleanup === 'function')) return\n return () =>\n cleanups.forEach((cleanup, index) =>\n typeof cleanup === 'function' ? cleanup() : setRef(refs[index], null)\n )\n }\n\n/** `composeRefs`, kept stable while the refs are. */\nconst useMergedRefs = <T>(...refs: (Ref<T> | undefined)[]): RefCallback<T> =>\n useCallback((value: T | null) => composeRefs(...refs)(value), refs)\n\n/**\n * Merges prop objects left to right. Later props win, except that event\n * handlers all run (last first), classNames join, styles combine and refs\n * all receive the element. An `undefined` handler or ref leaves an earlier\n * one in place. The merged ref is a new function on every call, so React\n * reattaches it on each render, as with any inline callback ref.\n */\nexport const mergeProps = (\n ...sources: (RenderProps | undefined)[]\n): RenderProps => {\n const merged: RenderProps = {}\n for (const source of sources) {\n if (!source) continue\n for (const [key, value] of Object.entries(source)) {\n const existing = merged[key]\n if ((key === 'ref' || /^on[A-Z]/.test(key)) && value === undefined) {\n continue\n } else if (key === 'ref' && existing) {\n merged.ref = composeRefs(\n existing as Ref<unknown>,\n value as Ref<unknown>\n )\n } else if (\n /^on[A-Z]/.test(key) &&\n typeof existing === 'function' &&\n typeof value === 'function'\n ) {\n merged[key] = (...args: unknown[]) => {\n value(...args)\n existing(...args)\n }\n } else if (key === 'className') {\n merged.className = cx(existing as string, value as string)\n } else if (key === 'style') {\n merged.style = { ...(existing as object), ...(value as object) }\n } else {\n merged[key] = value\n }\n }\n }\n return merged\n}\n\nconst isReact19 = Number(version.split('.')[0]) >= 19\n\n/**\n * The ref an element was created with: a prop in React 19, a field in 18.\n * Reading the field in 19 logs a deprecation warning, so branch on version.\n */\nconst elementRef = (element: ReactElement): Ref<HTMLElement> | undefined =>\n isReact19\n ? (element.props as { ref?: Ref<HTMLElement> }).ref\n : (element as unknown as { ref?: Ref<HTMLElement> }).ref\n\nexport const useRender = <State>({\n render,\n props,\n ref,\n state,\n defaultTagName = 'div',\n}: {\n render?: RenderProp<State>\n /** The component's own props, already merged with what it was given. */\n props: RenderProps\n ref?: Ref<HTMLElement>\n /** Passed to a `render` function as its second argument. */\n state: State\n defaultTagName?: keyof JSX.IntrinsicElements\n}): ReactElement => {\n const element = isValidElement(render) ? render : undefined\n const mergedRef = useMergedRefs(ref, element && elementRef(element))\n\n const rendered =\n typeof render === 'function'\n ? render({ ...props, ref: mergedRef }, state)\n : element\n ? cloneElement(element, {\n ...mergeProps(props, element.props as RenderProps),\n ref: mergedRef,\n } as RenderProps)\n : createElement(defaultTagName, { ...props, ref: mergedRef })\n return rendered.type === 'button' &&\n (rendered.props as RenderProps).type === undefined\n ? cloneElement(rendered, { type: 'button' } as RenderProps)\n : rendered\n}\n"],"mappings":";;;;AA+DA,IAAM,UAAa,KAAyB,UAAoB;CAC9D,IAAI,OAAO,QAAQ,YAAY,OAAO,IAAI,KAAK;CAC/C,IAAI,KAAK,IAA+B,UAAU;AACpD;;;;;AAMA,IAAM,eACA,GAAG,UACN,UAAoB;CACnB,MAAM,WAAW,KAAK,KAAK,QAAQ,OAAO,KAAK,KAAK,CAAC;CACrD,IAAI,CAAC,SAAS,MAAM,YAAY,OAAO,YAAY,UAAU,GAAG;CAChE,aACE,SAAS,SAAS,SAAS,UACzB,OAAO,YAAY,aAAa,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,CACtE;AACJ;;AAGF,IAAM,iBAAoB,GAAG,SAC3B,aAAa,UAAoB,YAAY,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI;;;;;;;;AASpE,IAAa,cACX,GAAG,YACa;CAChB,MAAM,SAAsB,CAAC;CAC7B,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,CAAC,QAAQ;EACb,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;GACjD,MAAM,WAAW,OAAO;GACxB,KAAK,QAAQ,SAAS,WAAW,KAAK,GAAG,MAAM,UAAU,KAAA,GACvD;QACK,IAAI,QAAQ,SAAS,UAC1B,OAAO,MAAM,YACX,UACA,KACF;QACK,IACL,WAAW,KAAK,GAAG,KACnB,OAAO,aAAa,cACpB,OAAO,UAAU,YAEjB,OAAO,QAAQ,GAAG,SAAoB;IACpC,MAAM,GAAG,IAAI;IACb,SAAS,GAAG,IAAI;GAClB;QACK,IAAI,QAAQ,aACjB,OAAO,YAAY,GAAG,UAAoB,KAAe;QACpD,IAAI,QAAQ,SACjB,OAAO,QAAQ;IAAE,GAAI;IAAqB,GAAI;GAAiB;QAE/D,OAAO,OAAO;EAElB;CACF;CACA,OAAO;AACT;AAEA,IAAM,YAAY,OAAO,QAAQ,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK;;;;;AAMnD,IAAM,cAAc,YAClB,YACK,QAAQ,MAAqC,MAC7C,QAAkD;AAEzD,IAAa,aAAoB,EAC/B,QACA,OACA,KACA,OACA,iBAAiB,YASC;CAClB,MAAM,UAAU,eAAe,MAAM,IAAI,SAAS,KAAA;CAClD,MAAM,YAAY,cAAc,KAAK,WAAW,WAAW,OAAO,CAAC;CAEnE,MAAM,WACJ,OAAO,WAAW,aACd,OAAO;EAAE,GAAG;EAAO,KAAK;CAAU,GAAG,KAAK,IAC1C,UACE,aAAa,SAAS;EACpB,GAAG,WAAW,OAAO,QAAQ,KAAoB;EACjD,KAAK;CACP,CAAgB,IAChB,cAAc,gBAAgB;EAAE,GAAG;EAAO,KAAK;CAAU,CAAC;CAClE,OAAO,SAAS,SAAS,YACtB,SAAS,MAAsB,SAAS,KAAA,IACvC,aAAa,UAAU,EAAE,MAAM,SAAS,CAAgB,IACxD;AACN"}
|
package/dist/style.css
CHANGED
|
@@ -792,7 +792,7 @@
|
|
|
792
792
|
color: white;
|
|
793
793
|
font-weight: 700;
|
|
794
794
|
}
|
|
795
|
-
.
|
|
795
|
+
._hemisphericSelect_3wupe_1 {
|
|
796
796
|
border-radius: 9999px !important;
|
|
797
797
|
|
|
798
798
|
.ant-select-placeholder {
|
|
@@ -800,7 +800,7 @@
|
|
|
800
800
|
}
|
|
801
801
|
}
|
|
802
802
|
|
|
803
|
-
.
|
|
803
|
+
._summarizedSelect_3wupe_9 {
|
|
804
804
|
.ant-select-suffix {
|
|
805
805
|
color: var(--j2-color-primary);
|
|
806
806
|
}
|
|
@@ -837,7 +837,7 @@
|
|
|
837
837
|
}
|
|
838
838
|
}
|
|
839
839
|
|
|
840
|
-
.
|
|
840
|
+
._isActive_3wupe_46 {
|
|
841
841
|
background: var(--j2-color-primary) !important;
|
|
842
842
|
|
|
843
843
|
.ant-select-selection-item-content {
|
|
@@ -849,21 +849,21 @@
|
|
|
849
849
|
}
|
|
850
850
|
}
|
|
851
851
|
|
|
852
|
-
.
|
|
852
|
+
._menuContainer_3wupe_58 .ant-select-item-option-selected {
|
|
853
853
|
background: var(--j2-color-primary) !important;
|
|
854
854
|
}
|
|
855
855
|
|
|
856
|
-
.
|
|
856
|
+
._menuContainer_3wupe_58
|
|
857
857
|
.ant-select-item-option-selected
|
|
858
858
|
.ant-select-item-option-content {
|
|
859
859
|
color: white;
|
|
860
860
|
}
|
|
861
861
|
|
|
862
|
-
.
|
|
862
|
+
._menuContainerMultiple_3wupe_68 .ant-select-item-option-selected {
|
|
863
863
|
background: var(--j2-color-primary-bg-hover) !important;
|
|
864
864
|
}
|
|
865
865
|
|
|
866
|
-
.
|
|
866
|
+
._menuContainerMultiple_3wupe_68
|
|
867
867
|
.ant-select-item-option-selected
|
|
868
868
|
.ant-select-item-option-content {
|
|
869
869
|
color: inherit;
|
|
@@ -874,14 +874,14 @@
|
|
|
874
874
|
* The select root owns its border and background in Ant Design 6.
|
|
875
875
|
*/
|
|
876
876
|
|
|
877
|
-
.
|
|
877
|
+
._headlinedSelect_3wupe_83.ant-select.ant-select-single {
|
|
878
878
|
font-size: var(--j2-font-size-heading-2);
|
|
879
879
|
height: 40px;
|
|
880
880
|
width: -moz-fit-content !important;
|
|
881
881
|
width: fit-content !important;
|
|
882
882
|
}
|
|
883
883
|
|
|
884
|
-
.
|
|
884
|
+
._headlinedSelect_3wupe_83.ant-select {
|
|
885
885
|
background: transparent;
|
|
886
886
|
padding-left: 0;
|
|
887
887
|
padding-right: 4px;
|
|
@@ -890,13 +890,13 @@
|
|
|
890
890
|
border-radius: 0;
|
|
891
891
|
}
|
|
892
892
|
|
|
893
|
-
.
|
|
893
|
+
._headlinedSelect_3wupe_83.ant-select .ant-select-suffix {
|
|
894
894
|
height: 16px;
|
|
895
895
|
width: 16px;
|
|
896
896
|
right: 0;
|
|
897
897
|
}
|
|
898
898
|
|
|
899
|
-
.
|
|
899
|
+
._headlinedSelect_3wupe_83.ant-select .ant-select-content {
|
|
900
900
|
font-weight: 600;
|
|
901
901
|
line-height: 1.3;
|
|
902
902
|
}
|
|
@@ -906,43 +906,43 @@
|
|
|
906
906
|
too, so every click boxed the headline. The underline below already marks
|
|
907
907
|
focus. `!important` because antd's status variants of that rule reach
|
|
908
908
|
(0,5,1) specificity. */
|
|
909
|
-
.
|
|
909
|
+
._headlinedSelect_3wupe_83.ant-select {
|
|
910
910
|
outline: none !important;
|
|
911
911
|
}
|
|
912
912
|
|
|
913
913
|
/* Hover state - show underline */
|
|
914
|
-
.
|
|
914
|
+
._headlinedSelect_3wupe_83.ant-select:hover {
|
|
915
915
|
border-bottom-color: var(--j2-color-primary);
|
|
916
916
|
}
|
|
917
917
|
|
|
918
918
|
/* Open/focused state - keep underline and text color */
|
|
919
|
-
.
|
|
920
|
-
.
|
|
919
|
+
._headlinedSelect_3wupe_83.ant-select-open,
|
|
920
|
+
._headlinedSelect_3wupe_83.ant-select-focused {
|
|
921
921
|
border-bottom-color: var(--j2-color-primary);
|
|
922
922
|
}
|
|
923
923
|
|
|
924
|
-
.
|
|
925
|
-
.
|
|
924
|
+
._headlinedSelect_3wupe_83.ant-select-open .ant-select-content,
|
|
925
|
+
._headlinedSelect_3wupe_83.ant-select-focused .ant-select-content {
|
|
926
926
|
color: inherit;
|
|
927
927
|
}
|
|
928
928
|
|
|
929
929
|
/* Headline dropdown styles - needs !important to override .menuContainer */
|
|
930
|
-
.
|
|
930
|
+
._menuContainer_3wupe_58._headlinedMenuContainer_3wupe_135
|
|
931
931
|
.ant-select-item-option-selected {
|
|
932
932
|
background: var(--j2-color-primary) !important;
|
|
933
933
|
}
|
|
934
934
|
|
|
935
|
-
.
|
|
935
|
+
._menuContainer_3wupe_58._headlinedMenuContainer_3wupe_135
|
|
936
936
|
.ant-select-item-option-selected
|
|
937
937
|
.ant-select-item-option-content {
|
|
938
938
|
color: white;
|
|
939
939
|
}
|
|
940
940
|
|
|
941
|
-
.
|
|
941
|
+
._clearAllButton_3wupe_146 {
|
|
942
942
|
color: var(--j2-color-primary);
|
|
943
943
|
}
|
|
944
944
|
|
|
945
|
-
.
|
|
945
|
+
._clearAllButton_3wupe_146:hover {
|
|
946
946
|
background-color: var(--j2-color-primary-bg-hover);
|
|
947
947
|
}
|
|
948
948
|
|
|
@@ -950,30 +950,26 @@
|
|
|
950
950
|
* Dropdown trigger (`trigger="dropdown"`)
|
|
951
951
|
* Reads as emphasized text with an affordance, not as a link: semibold
|
|
952
952
|
* primary text, no underline, and a fade on hover instead of a color shift.
|
|
953
|
-
*
|
|
954
|
-
*
|
|
955
|
-
*
|
|
956
|
-
*
|
|
953
|
+
* The semibold weight is a utility class added in the component, skipped when
|
|
954
|
+
* the consumer passes its own `font-*` weight. No cascade layers here: this
|
|
955
|
+
* file is compiled into dist/style.css, and Tailwind 3 refuses a stylesheet
|
|
956
|
+
* that declares a components layer without its own Tailwind directives.
|
|
957
|
+
* Color needs `.ant-typography` to beat antd's link color.
|
|
957
958
|
*/
|
|
958
|
-
@layer components {
|
|
959
|
-
._dropdownTrigger_1jnt4_164 {
|
|
960
|
-
font-weight: 600;
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
959
|
|
|
964
|
-
.
|
|
965
|
-
.
|
|
966
|
-
.
|
|
960
|
+
._dropdownTrigger_3wupe_165.ant-typography,
|
|
961
|
+
._dropdownTrigger_3wupe_165.ant-typography:hover,
|
|
962
|
+
._dropdownTrigger_3wupe_165.ant-typography:focus {
|
|
967
963
|
color: var(--j2-color-primary);
|
|
968
964
|
text-decoration: none;
|
|
969
965
|
}
|
|
970
966
|
|
|
971
|
-
.
|
|
967
|
+
._dropdownTrigger_3wupe_165.ant-typography:hover {
|
|
972
968
|
opacity: 0.7;
|
|
973
969
|
}
|
|
974
970
|
|
|
975
|
-
.
|
|
976
|
-
.
|
|
971
|
+
._dropdownTrigger_3wupe_165.ant-typography-disabled,
|
|
972
|
+
._dropdownTrigger_3wupe_165.ant-typography-disabled:hover {
|
|
977
973
|
color: var(--j2-color-text-disabled);
|
|
978
974
|
opacity: 1;
|
|
979
975
|
}
|
|
@@ -982,7 +978,7 @@
|
|
|
982
978
|
* Field variant (`variant="field"`)
|
|
983
979
|
* A form field: full width, the field's own text color, a muted caret.
|
|
984
980
|
*/
|
|
985
|
-
.
|
|
981
|
+
._fieldSelect_3wupe_186 .ant-select-suffix {
|
|
986
982
|
color: var(--j2-color-text-secondary);
|
|
987
983
|
}
|
|
988
984
|
._pill_16f8w_1 {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@j2-health/design-system",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "J2 Health shared React component library",
|
|
6
6
|
"repository": {
|
|
@@ -71,7 +71,6 @@
|
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@ant-design/icons": "^6.3.4",
|
|
74
|
-
"@chromatic-com/storybook": "^5.3.1",
|
|
75
74
|
"@dnd-kit/core": "^6.3.1",
|
|
76
75
|
"@dnd-kit/sortable": "^10.0.0",
|
|
77
76
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -79,49 +78,49 @@
|
|
|
79
78
|
"@eslint/js": "^10.0.1",
|
|
80
79
|
"@highcharts/react": "^5.3.0",
|
|
81
80
|
"@phosphor-icons/react": "^2.1.7",
|
|
82
|
-
"@storybook/addon-docs": "^10.6.
|
|
83
|
-
"@storybook/addon-links": "^10.6.
|
|
84
|
-
"@storybook/react-vite": "^10.6.
|
|
81
|
+
"@storybook/addon-docs": "^10.6.1",
|
|
82
|
+
"@storybook/addon-links": "^10.6.1",
|
|
83
|
+
"@storybook/react-vite": "^10.6.1",
|
|
85
84
|
"@tailwindcss/postcss": "^4.3.3",
|
|
86
85
|
"@testing-library/jest-dom": "^7.0.1",
|
|
87
86
|
"@testing-library/react": "^16.3.3",
|
|
88
87
|
"@types/lodash": "^4.17.14",
|
|
89
88
|
"@types/react": "^19.2.18",
|
|
90
89
|
"@types/react-dom": "^19.2.5",
|
|
91
|
-
"@vitejs/plugin-react": "^6.1.
|
|
90
|
+
"@vitejs/plugin-react": "^6.1.2",
|
|
92
91
|
"@vitest/coverage-v8": "^5.0.1",
|
|
93
92
|
"antd": "^6.6.5",
|
|
94
93
|
"autoprefixer": "^10.6.1",
|
|
95
94
|
"classnames": "^2.5.1",
|
|
96
|
-
"eslint": "^10.
|
|
95
|
+
"eslint": "^10.12.0",
|
|
97
96
|
"eslint-config-prettier": "^10.1.8",
|
|
98
97
|
"eslint-plugin-react": "^7.37.2",
|
|
99
98
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
100
99
|
"eslint-plugin-react-refresh": "^0.5.7",
|
|
101
|
-
"eslint-plugin-storybook": "^10.6.
|
|
100
|
+
"eslint-plugin-storybook": "^10.6.1",
|
|
102
101
|
"formik": "^2.4.6",
|
|
103
|
-
"globals": "^17.
|
|
102
|
+
"globals": "^17.13.0",
|
|
104
103
|
"happy-dom": "^20.14.5",
|
|
105
104
|
"highcharts": "^13.1.1",
|
|
106
105
|
"lodash": "^4.18.1",
|
|
107
|
-
"postcss": "^8.5.
|
|
106
|
+
"postcss": "^8.5.29",
|
|
108
107
|
"prettier": "^3.9.9",
|
|
109
108
|
"react": "^19.2.8",
|
|
110
109
|
"react-dom": "^19.2.8",
|
|
111
110
|
"semver": "^7.8.5",
|
|
112
|
-
"storybook": "^10.6.
|
|
111
|
+
"storybook": "^10.6.1",
|
|
113
112
|
"tailwindcss": "^4.3.3",
|
|
114
113
|
"ts-node": "^10.9.2",
|
|
115
114
|
"typescript": "^5.5.3",
|
|
116
|
-
"typescript-eslint": "^8.71.
|
|
117
|
-
"vite": "^8.3.
|
|
118
|
-
"vite-plugin-dts": "^5.1.
|
|
115
|
+
"typescript-eslint": "^8.71.1",
|
|
116
|
+
"vite": "^8.3.3",
|
|
117
|
+
"vite-plugin-dts": "^5.1.2",
|
|
119
118
|
"vite-plugin-svgr": "^5.2.0",
|
|
120
|
-
"vitest": "^5.0.
|
|
119
|
+
"vitest": "^5.0.3",
|
|
121
120
|
"yup": "^1.4.0"
|
|
122
121
|
},
|
|
123
122
|
"optionalDependencies": {
|
|
124
|
-
"@rollup/rollup-linux-x64-gnu": "^4.
|
|
123
|
+
"@rollup/rollup-linux-x64-gnu": "^4.64.0"
|
|
125
124
|
},
|
|
126
125
|
"eslintConfig": {
|
|
127
126
|
"extends": [
|