@olenbetong/synergi-react 1.0.6 → 2.0.1

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 (58) hide show
  1. package/dist/esm/ob.react.css +216 -146
  2. package/dist/esm/ob.react.js +201 -102
  3. package/dist/esm/ob.react.min.css +1 -1
  4. package/dist/esm/ob.react.min.css.map +3 -3
  5. package/dist/esm/ob.react.min.js +1 -1
  6. package/dist/esm/ob.react.min.js.map +4 -4
  7. package/dist/iife/ob.react.css +216 -146
  8. package/dist/iife/ob.react.js +201 -102
  9. package/dist/iife/ob.react.min.css +1 -1
  10. package/dist/iife/ob.react.min.css.map +3 -3
  11. package/dist/iife/ob.react.min.js +1 -1
  12. package/dist/iife/ob.react.min.js.map +4 -4
  13. package/dist/styles/styles.css +1 -1
  14. package/dist/styles/styles.css.map +1 -1
  15. package/es/Checkbox/index.css +1 -1
  16. package/es/Checkbox/index.d.ts +11 -0
  17. package/es/Checkbox/index.js +7 -5
  18. package/es/ColorCard/index.d.ts +5 -2
  19. package/es/ColorCard/index.js +6 -0
  20. package/es/DateNavigator/index.css +1 -1
  21. package/es/DateNavigator/index.d.ts +3 -1
  22. package/es/DateNavigator/index.js +82 -28
  23. package/es/LinkedCardList/index.css +1 -1
  24. package/es/LinkedCardList/index.d.ts +2 -2
  25. package/es/LinkedCardList/index.js +2 -2
  26. package/es/ProgressBar/index.css +1 -1
  27. package/es/SplitContainer/index.d.ts +3 -1
  28. package/es/SplitContainer/index.js +45 -14
  29. package/es/ValueToggleGroup/index.d.ts +18 -0
  30. package/es/ValueToggleGroup/index.js +12 -0
  31. package/es/index.css +1 -1
  32. package/es/index.d.ts +8 -8
  33. package/es/index.js +3 -3
  34. package/package.json +88 -90
  35. package/src/Checkbox/index.scss +12 -5
  36. package/src/Checkbox/index.tsx +23 -6
  37. package/src/ColorCard/{index.scss → index.css} +50 -59
  38. package/src/ColorCard/index.tsx +21 -9
  39. package/src/DateNavigator/index.scss +66 -33
  40. package/src/DateNavigator/index.tsx +98 -33
  41. package/src/LinkedCardList/index.scss +8 -1
  42. package/src/LinkedCardList/index.tsx +2 -2
  43. package/src/ProgressBar/index.scss +2 -2
  44. package/src/Spinner/{index.scss → index.css} +13 -10
  45. package/src/Spinner/index.tsx +1 -1
  46. package/src/SplitContainer/index.tsx +71 -15
  47. package/src/ValueToggleGroup/index.css +79 -0
  48. package/src/ValueToggleGroup/index.tsx +52 -0
  49. package/src/index.scss +3 -2
  50. package/src/index.ts +12 -12
  51. package/LICENSE +0 -21
  52. package/es/ColorCard/index.css +0 -1
  53. package/es/Spinner/index.css +0 -1
  54. package/es/ValueToggle/index.css +0 -1
  55. package/es/ValueToggle/index.d.ts +0 -18
  56. package/es/ValueToggle/index.js +0 -38
  57. package/src/ValueToggle/index.scss +0 -50
  58. package/src/ValueToggle/index.tsx +0 -75
package/es/index.css CHANGED
@@ -1 +1 @@
1
- .ObCheckbox-root{--check-width: 2rem;--bg-color: var(--brand-dark, rgba(42, 65, 50, 0.5));--bg-color-hover: var(--brand-primary, rgba(42, 65, 50, 0.8));--bg-color-selected: var(--brand-light);display:inline-block;height:var(--check-width);margin-bottom:0}.ObCheckbox-root:focus-within .ObCheckbox-box{border:.1rem solid #000}.ObCheckbox-root.Ob-disabled{--bg-color: rgba(150, 150, 150, 0.5);--bg-color-hover: var(--bg-color)}.ObCheckbox-box{position:relative;background:var(--bg-color);transition:background 300ms ease;overflow:hidden;border-radius:calc(var(--check-width)/15);height:var(--check-width);width:var(--check-width)}.ObCheckbox-box:hover{background:var(--bg-color-hover)}.ObCheckbox-label{position:relative;margin-bottom:0;overflow:hidden}.ObCheckbox-label:focus{outline:none}.ObCheckbox-mark{color:#fff;display:inline-block;font-size:calc(var(--check-width)*.4);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transition:all 300ms ease-in-out;transition-delay:0ms;transform:translate(-50%, -50%) scale(6)}.ObCheckbox-input{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.ObCheckbox-input:focus{outline:none}.check_Label{margin-bottom:0;flex-grow:1}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label{animation:animOn 800ms 1 forwards}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label .ObCheckbox-box{background:var(--bg-color-selected)}.ObCheckbox-input:checked+.ObCheckbox-label .ObCheckbox-box .ObCheckbox-mark{transform:translate(-50%, -50%) scale(1);transition-delay:200ms;opacity:1}.ObCheckbox-root.Ob-disabled .ObCheckbox-box{cursor:not-allowed}@keyframes animOn{40%{transform:scaleY(0.4) scaleX(2)}50%{transform:scaleY(1.2) scaleX(0.6)}60%{transform:scaleY(0.8) scaleX(1.4)}70%{transform:scaleY(1.1) scaleX(0.9)}100%{transform:scaleY(1) scaleX(1)}}.ObColorCard-root{--bg-color-border: black;--bg-color-main: white;--bg-size: 0.75rem;--card-color: rgb(0, 0, 0);align-items:stretch;background-image:linear-gradient(to right, hsl(186, 72%, 24%), hsl(186, 72%, 24%) 0.75rem, white 0.75rem, white);background-image:linear-gradient(to right, var(--bg-color-border), var(--bg-color-border) var(--bg-size), var(--bg-color-main) var(--bg-size), var(--bg-color-main));border-radius:.25rem;box-shadow:0 1px 12px rgba(0,0,0,.15),0 1px 6px rgba(0,0,0,.25);color:#666;cursor:pointer;display:flex;font-family:"Variable Bahnschrift","Bahnschrift","Open Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;min-height:10rem;overflow:hidden;transition:all ease-in-out 300ms}.ObColorCard-root:nth-of-type(5n + 1){--bg-color-border: rgb(178, 108, 190)}.ObColorCard-root:nth-of-type(5n + 2){--bg-color-border: rgb(79, 164, 61)}.ObColorCard-root:nth-of-type(5n + 3){--bg-color-border: rgb(246, 170, 23)}.ObColorCard-root:nth-of-type(5n + 4){--bg-color-border: rgb(218, 93, 83)}.ObColorCard-root:nth-of-type(5n + 5){--bg-color-border: rgb(23, 162, 184)}.ObColorCard-root:hover,.ObColorCard-root:focus{--bg-color-main: #f5f5f5;box-shadow:0 3px 18px rgba(0,0,0,.15),0 3px 12px rgba(0,0,0,.25);color:#666;text-decoration:none}@media screen and (min-width: 48rem){.ObColorCard-root{font-size:1.2rem}}.ObColorCard-column{display:flex;flex:1 1 100%;flex-direction:column;justify-content:space-between;margin:1rem 0;overflow:hidden;padding:.5rem 1.5rem .5rem 1rem;text-overflow:ellipsis}.ObColorCard-column:first-child{margin-left:.75rem;margin-left:var(--bg-size)}.ObColorCard-column.ObColorCard-minor{border-right:1px solid #e3e3e3;flex:0 0 4rem;transition:margin ease-in-out 300ms}@media screen and (min-width: 48rem){.ObColorCard-column.ObColorCard-minor{flex:0 0 8rem}}.ObColorCard-detailLabel{color:#ccc;font-size:.8rem;text-transform:uppercase}.ObColorCard-detail:not(:last-child){margin-right:1.5rem}.ObColorCard-detail.ObColorCard-primary,.ObColorCard-detail.ObColorCard-primary .ObColorCard-detailValue{font-size:1.25rem;font-weight:300}.ObColorCard-detail.ObColorCard-primary .ObColorCard-detailValue{color:unset}@media screen and (min-width: 48rem){.ObColorCard-detail{font-size:1rem}}.ObColorCard-detailValue{color:#999}.ObColorCard-label{position:relative;padding-left:1.5rem}.ObColorCard-label:not(:last-child){margin-bottom:1rem}.ObColorCard-label:not(:last-child)::after{content:"";position:absolute;width:.2rem;height:calc(100% + 1rem);border-left:.2rem dotted #666;left:.25rem;top:.5rem;z-index:0}.ObColorCard-label::before{background:#fff;border:.2rem solid hsl(186,72%,24%);border:.2rem solid var(--bg-color-border);border-radius:50%;content:"";display:block;height:.75rem;left:0;position:absolute;top:.3rem;width:.75rem;z-index:1}.ObDateNavigator-icon{display:inline-block}.ObDateNavigator-icon svg{width:.625em;position:relative;top:-1px}.ObDateNavigator-root{background-color:hsl(220,20%,96%);background-color:var(--block-header-color-bg);display:flex;font-size:1rem}.ObDateNavigator-arrow{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;align-items:center;flex:0 0 3rem;justify-content:center;height:3rem;cursor:pointer;text-align:center}.ObDateNavigator-arrow::-moz-focus-inner{border:0;padding:0}.ObDateNavigator-arrow:hover{background-color:#e3e3e3;background-color:var(--block-header-button-hover)}.ObDateNavigator-arrowLeft{border-right:1px solid #ddd;order:1}.ObDateNavigator-arrowRight{border-left:1px solid #ddd;order:3}.ObDateNavigator-date{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;order:2;height:3rem;text-align:center}.ObLinkedList-root{list-style-type:none;margin-left:0;padding-left:0}.ObLinkedList-item{display:flex;align-items:center;flex-direction:row}.ObLinkedList-leftColumn{flex:1 1 4em;font-size:.75em;padding:0 1em;text-align:center}.ObLinkedList-rightColumn{flex:1 1 100%;padding:1em 1em 1em 1.5em}.ObLinkedList-line{display:flex;align-self:stretch;flex:0 0 .2em;background:#fff;position:relative}.ObLinkedList-bullet{background:#fff;border:1px solid rgba(50,50,50,.25);border-radius:.55em;height:.7em;width:.7em;position:absolute;left:0;top:50%;transform:translate(-0.25em, -50%)}.ObLinkedList-card{background:#fff;border:1px solid;border-color:#e5e6e9 #dfe0e4 #d0d1d5;border-radius:.1875em;color:inherit;cursor:pointer;flex:100% 1 1;position:relative}.ObLinkedList-card::before{border-bottom:.5em solid rgba(0,0,0,0);border-right:1em solid #fff;border-top:.5em solid rgba(0,0,0,0);content:" ";filter:drop-shadow(-1px 0px 1px rgba(50, 50, 50, 0.2));height:1em;left:-1em;margin-top:-0.5em;position:absolute;top:50%;width:1em}.ObLinkedList-card:hover{background-color:hsl(220,20%,94%) !important;color:inherit;text-decoration:inherit}.ObLinkedList-card:hover::before{border-right-color:hsl(220,20%,94%) !important}.ObPageBanner-root{background-color:hsl(186,72%,24%);background-color:var(--brand-dark);box-shadow:0px 8px 8px rgba(0,0,0,.2);color:#fff}.ObPageBanner-root a{color:hsl(200,50%,80%)}.ObPageBanner-inner{display:flex;align-items:center;flex-direction:column}@media screen and (min-width: 768px){.ObPageBanner-inner{align-items:flex-start;flex-direction:row}}.ObPageBanner-plantTitle{font-size:2rem}@media screen and (min-width: 992px){.ObPageBanner-plantTitle{font-size:3rem}}.ObPageBanner-bannerImage{align-self:stretch;background-color:#ddd;display:inline-block;height:20vh;object-fit:cover;object-position:center center;width:100%}@media screen and (min-width: 576px){.ObPageBanner-bannerImage{align-self:center;margin:0;margin-right:1rem;border:.4rem solid #fff;border-radius:50%;height:150px;width:150px}}@media screen and (min-width: 992px){.ObPageBanner-bannerImage{height:250px;width:250px}}.ObPageBanner-bannerTitle{margin-bottom:1rem;margin-top:1rem;font-size:2rem}@media screen and (min-width: 768px){.ObPageBanner-bannerTitle{margin-top:0}}@media screen and (min-width: 992px){.ObPageBanner-bannerTitle{font-size:3rem}}.ObPageBanner-tabList.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:1000}.ObPageBanner-tabListInner{overflow-x:auto;scrollbar-width:thin;white-space:nowrap}.ObPageBanner-tab{border-bottom:.25rem solid rgba(0,0,0,0);display:inline-block;margin-top:.5rem;min-width:8rem;padding:.5rem 1rem;text-align:center;text-transform:capitalize}.ObPageBanner-tab.active{border-color:#fff}.ObProgressBar-root{height:1.5em;width:100%;appearance:none;-webkit-appearance:none;background-color:#f5f5f5;border:none;border-radius:3px;box-shadow:0 2px 3px rgba(0,0,0,.2) inset;color:#4169e1;position:relative}.ObProgressBar-root::-webkit-progress-bar{background-color:#f5f5f5;border-radius:3px;box-shadow:0 2px 3px rgba(0,0,0,.2) inset}.ObProgressBar-root::-webkit-progress-value{background-image:linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),linear-gradient(left, var(--brand-primary, hsl(186, 72%, 24%)), var(--brand-light, hsl(186, 72%, 37%)));background-image:-webkit-linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),-webkit-linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),-webkit-linear-gradient(left, var(--brand-primary), hsl(186, 72%, 24%), var(--brand-light, hsl(186, 72%, 37%)));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;position:relative;transition:width .5s ease-out}.ObProgressBar-root::-webkit-progress-value:after{background-color:#fff;content:"";border-radius:100%;height:5px;position:absolute;right:7px;top:7px;width:5px}.ObProgressBar-root::-moz-progress-bar{background-image:linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),linear-gradient(left, var(--brand-primary), var(--brand-light));background-image:-moz-linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),-moz-linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),-moz-linear-gradient(left, var(--brand-primary), var(--brand-light));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;transition:width .5s ease-out}.ObSidebar-root{position:fixed;bottom:0;left:0;top:0;z-index:2;background-color:#fff;transform:translateX(-100%);transition:transform .2s ease-out;will-change:transform;overflow-y:auto}.ObSidebar-root.Ob-right{left:unset;right:0;transform:translateX(100%)}.ObSidebar-root.Ob-open{transform:translateX(0)}.ObSidebar-root.ObSidebar-shadow{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.ObSidebar-root.ObSidebar-shadow.Ob-right{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.ObSidebar-overlay{position:fixed;bottom:0;left:0;right:0;top:0;z-index:1;opacity:0;visibility:hidden;transition:opacity .3s ease-out,visibility .3s ease-out;background-color:rgba(0,0,0,.3)}.ObSidebar-overlay.Ob-open{opacity:1;visibility:visible}.😖{display:initial}.ObSplitContainer-root{display:flex;flex-direction:column;height:100%;width:100%}.ObSplitContainer-root.horizontal{flex-direction:row}.ObSplitContainer-panel{overflow:hidden}.ObSplitContainer-divider{flex:0 0 .5rem;background-color:rgba(0,0,0,0);line-height:.75;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.ObSplitContainer-divider:focus{background-color:rgba(0,0,0,.3)}.ObSplitContainer-root.horizontal>.ObSplitContainer-divider{cursor:ew-resize;writing-mode:vertical-lr}.ObSplitContainer-panel.dragging{pointer-events:none}.ObValueToggle-root{display:flex;align-items:center}.ObValueToggle-option{margin-bottom:0}.ObValueToggle-label{cursor:pointer;font-size:.8em;margin:0 .2em;padding:.3em .5em;text-transform:uppercase}.ObValueToggle-label:hover{background:#ccc}.ObValueToggle-input:checked+.ObValueToggle-label{--color-bg: var(--brand-dark);background-color:#666;background-color:var(--color-bg);cursor:default;color:#fff}.ObValueToggle-input:checked:focus-within+.ObValueToggle-label{--color-bg: var(--brand-light)}.ObValueToggle-input:checked:hover+.ObValueToggle-label{background-color:#666;background-color:var(--color-bg)}.ObValueToggle-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}
1
+ .ObCheckbox-root{--check-width: 2rem;--bg-color: var(--brand-dark, rgba(42, 65, 50, 0.5));--bg-color-hover: var(--brand-primary, rgba(42, 65, 50, 0.8));--bg-color-selected: var(--brand-light);display:inline-block;height:var(--check-width);margin-bottom:0}.ObCheckbox-root:focus-within .ObCheckbox-box{border:.1rem solid #000}.ObCheckbox-root.Ob-disabled{--bg-color: rgba(150, 150, 150, 0.5);--bg-color-hover: var(--bg-color)}.ObCheckbox-box{position:relative;background:var(--bg-color);transition:background 300ms ease;overflow:hidden;border-radius:calc(var(--check-width)/15);height:var(--check-width);width:var(--check-width)}.ObCheckbox-box:hover{background:var(--bg-color-hover)}.ObCheckbox-label{position:relative;margin-bottom:0;overflow:hidden}.ObCheckbox-label:focus{outline:none}.ObCheckbox-mark{color:#fff;display:inline-block;font-size:calc(var(--check-width)*.4);left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transition:all 300ms ease-in-out;transition-delay:0ms;transform:translate(-50%, -50%) scale(6)}.ObCheckbox-input{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.ObCheckbox-input:focus{outline:none}.ObCheckbox-label{display:flex;gap:.5rem;align-items:center;overflow:visible}.ObCheckbox-root.Ob-reverse .ObCheckbox-label{flex-direction:row-reverse}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label .ObCheckbox-box{animation:animOn 600ms 1 forwards}.ObCheckbox-input:checked:not(:disabled)+.ObCheckbox-label .ObCheckbox-box{background:var(--bg-color-selected)}.ObCheckbox-input:checked+.ObCheckbox-label .ObCheckbox-box .ObCheckbox-mark{transform:translate(-50%, -50%) scale(1);transition-delay:200ms;opacity:1}.ObCheckbox-root.Ob-disabled .ObCheckbox-box{cursor:not-allowed}@keyframes animOn{40%{transform:scaleY(0.4) scaleX(2)}50%{transform:scaleY(1.2) scaleX(0.6)}60%{transform:scaleY(0.8) scaleX(1.4)}70%{transform:scaleY(1.1) scaleX(0.9)}100%{transform:scaleY(1) scaleX(1)}}.ObColorCard-root{--bg-color-border: black;--bg-color-main: white;--bg-size: 0.75rem;--card-color: rgb(0, 0, 0);display:flex;align-items:stretch;min-height:10rem;overflow:hidden;border-radius:.25rem;box-shadow:0 1px 12px rgba(0, 0, 0, 0.15),0 1px 6px rgba(0, 0, 0, 0.25);color:#666;background-image:linear-gradient(to right, var(--bg-color-border), var(--bg-color-border) var(--bg-size), var(--bg-color-main) var(--bg-size), var(--bg-color-main));font-family:"Variable Bahnschrift","Bahnschrift","Open Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;transition:all ease-in-out 300ms;cursor:pointer;&:nth-of-type(5n + 1){--bg-color-border: rgb(178, 108, 190)}&:nth-of-type(5n + 2){--bg-color-border: rgb(79, 164, 61)}&:nth-of-type(5n + 3){--bg-color-border: rgb(246, 170, 23)}&:nth-of-type(5n + 4){--bg-color-border: rgb(218, 93, 83)}&:nth-of-type(5n + 5){--bg-color-border: rgb(23, 162, 184)}&:hover,&:focus{--bg-color-main: #f5f5f5;box-shadow:0 3px 18px rgba(0, 0, 0, 0.15),0 3px 12px rgba(0, 0, 0, 0.25);text-decoration:none}}@media screen and (min-width: 48rem){.ObColorCard-root{font-size:1.2rem}}.ObColorCard-column{display:flex;flex:1 1 100%;flex-direction:column;justify-content:space-between;margin:1rem 0;padding:.5rem 1.5rem .5rem 1rem;overflow:hidden;text-overflow:ellipsis;&:first-child{margin-left:var(--bg-size, 0.75rem)}&.ObColorCard-minor{flex:0 0 4rem;border-right:1px solid #e3e3e3;transition:margin ease-in-out 300ms}}@media screen and (min-width: 48rem){&.ObColorCard-minor{flex:0 0 8rem}}.ObColorCard-detailLabel{color:dimgray;font-size:.8rem;text-transform:uppercase}.ObColorCard-detail{&:not(:last-child){margin-right:1.5rem}&.ObColorCard-primary,&.ObColorCard-primary .ObColorCard-detailValue{font-size:1.25rem;font-weight:300}&.ObColorCard-primary .ObColorCard-detailValue{color:unset}}@media screen and (min-width: 48rem){.ObColorCard-detail{font-size:1rem}}.ObColorCard-detailValue{color:#555}.ObColorCard-stepList{display:flex;flex-direction:column;gap:1rem}.ObColorCard-step{position:relative;text-box-trim:trim-both;display:flex;align-items:flex-start;gap:.5rem}.ObColorCard-step::before{flex:.6em 0 0;content:"";position:relative;top:.25em;width:.6em;height:.6em;background:white;border:2px solid var(--bg-color-border, #999);border-radius:50%;box-sizing:border-box;z-index:1}.ObColorCard-step:not(:last-child)::after{content:"";position:absolute;top:1em;left:calc(.3em - 1px);height:calc(100% - .95em + 1rem + .0625em);border-left:2px dotted #999;z-index:0}.ObDateNavigator-icon{display:inline-block}.ObDateNavigator-icon svg{width:.625em;position:relative;top:-1px}.ObDateNavigator-root{background-color:hsl(220,20%,96%);background-color:var(--block-header-color-bg);display:flex;font-size:1rem;outline:none}.ObDateNavigator-root:focus-visible{outline:2px solid var(--brand-dark, #336699);outline-offset:2px}.ObDateNavigator-arrow{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;display:flex;align-items:center;flex:0 0 3rem;justify-content:center;height:3rem;cursor:pointer;text-align:center}.ObDateNavigator-arrow::-moz-focus-inner{border:0;padding:0}.ObDateNavigator-arrow:hover{background-color:#e3e3e3;background-color:var(--block-header-button-hover)}.ObDateNavigator-arrowLeft{border-right:1px solid #ddd;order:1}.ObDateNavigator-arrowRight{border-left:1px solid #ddd;order:3}.ObDateNavigator-date{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;order:2;height:3rem;text-align:center}.ObDateNavigator-today{background:none;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-appearance:button;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;order:4;padding:0 1rem;height:3rem;display:flex;align-items:center;justify-content:center;font-size:.875rem;color:var(--brand-dark, #336699);text-transform:uppercase;cursor:pointer;text-wrap:nowrap;border-left:1px solid #ddd}.ObDateNavigator-today::-moz-focus-inner{border:0;padding:0}.ObDateNavigator-today:hover{background-color:var(--block-header-button-hover)}.ObDateNavigator-today:focus-visible{outline:2px solid var(--brand-dark, #336699);outline-offset:2px}:root{--ob-linked-list-bullet-size: 0.7em;--ob-linked-list-line-width: 0.2em}.ObLinkedList-root{list-style-type:none;margin-left:0;padding-left:0}.ObLinkedList-item{display:flex;align-items:center;flex-direction:row}.ObLinkedList-leftColumn{flex:1 1 4em;font-size:.75em;padding:0 1em;text-align:center}.ObLinkedList-rightColumn{flex:1 1 100%;padding:1em 1em 1em 1.5em}.ObLinkedList-line{display:flex;align-self:stretch;flex:0 0 .2em;background:#fff;position:relative}.ObLinkedList-bullet{background:#fff;border:1px solid rgba(50,50,50,.25);border-radius:.55em;height:.7em;width:.7em;position:absolute;left:0;top:50%;transform:translate(calc(-1 * var(--ob-linked-list-bullet-size) / 2 + var(--ob-linked-list-line-width) / 2), -50%)}.ObLinkedList-card{display:block;background:#fff;border:1px solid;border-color:#e5e6e9 #dfe0e4 #d0d1d5;border-radius:.1875em;color:inherit;cursor:pointer;flex:100% 1 1;position:relative}.ObLinkedList-card::before{border-bottom:.5em solid rgba(0,0,0,0);border-right:1em solid #fff;border-top:.5em solid rgba(0,0,0,0);content:" ";filter:drop-shadow(-1px 0px 1px rgba(50, 50, 50, 0.2));height:1em;left:-1em;margin-top:-0.5em;position:absolute;top:50%;width:1em}.ObLinkedList-card:hover{background-color:hsl(220,20%,94%) !important;color:inherit;text-decoration:inherit}.ObLinkedList-card:hover::before{border-right-color:hsl(220,20%,94%) !important}.ObPageBanner-root{background-color:hsl(186,72%,24%);background-color:var(--brand-dark);box-shadow:0px 8px 8px rgba(0,0,0,.2);color:#fff}.ObPageBanner-root a{color:hsl(200,50%,80%)}.ObPageBanner-inner{display:flex;align-items:center;flex-direction:column}@media screen and (min-width: 768px){.ObPageBanner-inner{align-items:flex-start;flex-direction:row}}.ObPageBanner-plantTitle{font-size:2rem}@media screen and (min-width: 992px){.ObPageBanner-plantTitle{font-size:3rem}}.ObPageBanner-bannerImage{align-self:stretch;background-color:#ddd;display:inline-block;height:20vh;object-fit:cover;object-position:center center;width:100%}@media screen and (min-width: 576px){.ObPageBanner-bannerImage{align-self:center;margin:0;margin-right:1rem;border:.4rem solid #fff;border-radius:50%;height:150px;width:150px}}@media screen and (min-width: 992px){.ObPageBanner-bannerImage{height:250px;width:250px}}.ObPageBanner-bannerTitle{margin-bottom:1rem;margin-top:1rem;font-size:2rem}@media screen and (min-width: 768px){.ObPageBanner-bannerTitle{margin-top:0}}@media screen and (min-width: 992px){.ObPageBanner-bannerTitle{font-size:3rem}}.ObPageBanner-tabList.sticky{position:-webkit-sticky;position:sticky;top:0;z-index:1000}.ObPageBanner-tabListInner{overflow-x:auto;scrollbar-width:thin;white-space:nowrap}.ObPageBanner-tab{border-bottom:.25rem solid rgba(0,0,0,0);display:inline-block;margin-top:.5rem;min-width:8rem;padding:.5rem 1rem;text-align:center;text-transform:capitalize}.ObPageBanner-tab.active{border-color:#fff}.ObProgressBar-root{height:1.5em;width:100%;appearance:none;-webkit-appearance:none;background-color:#f5f5f5;border:none;border-radius:3px;box-shadow:0 2px 3px rgba(0,0,0,.2) inset;color:#4169e1;position:relative}.ObProgressBar-root::-webkit-progress-bar{background-color:#f5f5f5;border-radius:3px;box-shadow:0 2px 3px rgba(0,0,0,.2) inset}.ObProgressBar-root::-webkit-progress-value{background-image:linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),linear-gradient(left, var(--brand-primary), var(--brand-light));background-image:-webkit-linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),-webkit-linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),-webkit-linear-gradient(left, var(--brand-primary), var(--brand-light));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;position:relative;transition:width .5s ease-out}.ObProgressBar-root::-webkit-progress-value:after{background-color:#fff;content:"";border-radius:100%;height:5px;position:absolute;right:7px;top:7px;width:5px}.ObProgressBar-root::-moz-progress-bar{background-image:linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),linear-gradient(left, var(--brand-primary), var(--brand-light));background-image:-moz-linear-gradient(135deg, transparent, transparent 33%, rgba(0, 0, 0, 0.1) 33%, rgba(0, 0, 0, 0.1) 66%, transparent 66%),-moz-linear-gradient(top, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.2)),-moz-linear-gradient(left, var(--brand-primary), var(--brand-light));background-size:35px 20px,100% 100%,100% 100%;border-radius:3px;transition:width .5s ease-out}.ObSidebar-root{position:fixed;bottom:0;left:0;top:0;z-index:2;background-color:#fff;transform:translateX(-100%);transition:transform .2s ease-out;will-change:transform;overflow-y:auto}.ObSidebar-root.Ob-right{left:unset;right:0;transform:translateX(100%)}.ObSidebar-root.Ob-open{transform:translateX(0)}.ObSidebar-root.ObSidebar-shadow{box-shadow:2px 2px 4px rgba(0,0,0,.15)}.ObSidebar-root.ObSidebar-shadow.Ob-right{box-shadow:-2px 2px 4px rgba(0,0,0,.15)}.ObSidebar-overlay{position:fixed;bottom:0;left:0;right:0;top:0;z-index:1;opacity:0;visibility:hidden;transition:opacity .3s ease-out,visibility .3s ease-out;background-color:rgba(0,0,0,.3)}.ObSidebar-overlay.Ob-open{opacity:1;visibility:visible}.ObSpinner-wrapper,.ObSpinner-fullPage{--bullet-size: 0.5em}.ObSpinner-root{display:inline-block}.ObSpinner-fullPage{display:flex;align-items:center;justify-content:center;height:100vh;width:100vw}.ObSpinner-spinner{display:inline-block;height:calc(var(--bullet-size)*1.5);position:relative;width:calc(var(--bullet-size)*5)}.ObSpinner-bullet{animation-timing-function:cubic-bezier(0, 1, 1, 0);background:#666;border-radius:50%;height:var(--bullet-size);position:absolute;top:.2rem;width:var(--bullet-size);&:nth-child(1){animation:scaleAnimation .6s infinite ease-in-out;left:calc(var(--bullet-size)*.5)}&:nth-child(2){animation:translateAnimation .6s infinite ease-in-out;left:calc(var(--bullet-size)*.5)}&:nth-child(3){animation:translateAnimation .6s infinite ease-in-out;left:calc(var(--bullet-size)*2.4)}&:nth-child(4){animation:scaleAnimation .6s infinite ease-in-out reverse;left:calc(var(--bullet-size)*4)}}@keyframes scaleAnimation{from{transform:scale(0)}to{transform:scale(1)}}@keyframes translateAnimation{from{transform:translate(0, 0)}to{transform:translate(calc(var(--bullet-size) * 1.65), 0)}}.😖{display:initial}.ObSplitContainer-root{display:flex;flex-direction:column;height:100%;width:100%}.ObSplitContainer-root.horizontal{flex-direction:row}.ObSplitContainer-panel{overflow:hidden}.ObSplitContainer-divider{flex:0 0 .5rem;background-color:rgba(0,0,0,0);line-height:.75;cursor:ns-resize;display:flex;align-items:center;justify-content:center}.ObSplitContainer-divider:focus{background-color:rgba(0,0,0,.3)}.ObSplitContainer-root.horizontal>.ObSplitContainer-divider{cursor:ew-resize;writing-mode:vertical-lr}.ObSplitContainer-panel.dragging{pointer-events:none}.ObValueToggleGroup{padding:.25rem;border:2px solid rgb(0 0 0/0.2);border-radius:4px;display:flex;gap:.25rem;flex-wrap:wrap;&.vertical{flex-direction:column;align-items:center;& .ObValueToggleOption{width:100%;& .ObValueToggleLabel{width:100%;text-align:center}}}&:focus-within{border-color:rgb(0 0 0/0.8)}}.ObValueToggleOption{display:flex;align-items:center;margin:0;position:relative}.ObValueToggleOption input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.ObValueToggleLabel{font-size:.8em;margin:0 .2em;padding:.3em .5em;text-transform:uppercase;transition:background .2s ease,color .2s ease;border-radius:4px}.ObValueToggleOption:hover input:not(:disabled)+.ObValueToggleLabel{cursor:pointer;background:#ccc}.ObValueToggleOption input:checked+.ObValueToggleLabel{--color-bg: var(--brand-dark);background-color:var(--color-bg);color:white;cursor:default}.ObValueToggleOption input:disabled+.ObValueToggleLabel{color:rgb(0 0 0/0.5)}.ObValueToggleOption input:checked:focus-visible+.ObValueToggleLabel{--color-bg: var(--brand-light);outline:2px solid var(--brand-light)}.ObValueToggleOption input:checked:hover+.ObValueToggleLabel{background-color:var(--color-bg)}
package/es/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
- export { Checkbox, CheckboxProps } from "./Checkbox/index.js";
2
- export { ColorCard, CardColumn, CardDetail, CardLabel } from "./ColorCard/index.js";
1
+ export { Checkbox, type CheckboxProps } from "./Checkbox/index.js";
2
+ export { ColorCard, CardColumn, CardDetail, CardLabel, CardStep, CardStepList } from "./ColorCard/index.js";
3
3
  export { DateNavigator } from "./DateNavigator/index.js";
4
- export { Card, List as LinkedList, ListItem as LinkedListItem } from "./LinkedCardList/index.js";
5
- export { BannerImage as PageBannerImage, BannerImageProps, PageBanner, PageBannerProps, Tab as PageBannerTab, TabProps as PageBannerTabProps, TabList as PageBannerTabList, TabListProps as PageBannerTabListProps, Title as PageBannerTitle, TitleProps as PageBannerTitleProps, } from "./PageBanner/index.js";
4
+ export { Card, LinkedList, LinkedListItem } from "./LinkedCardList/index.js";
5
+ export { BannerImage as PageBannerImage, type BannerImageProps, PageBanner, type PageBannerProps, Tab as PageBannerTab, type TabProps as PageBannerTabProps, TabList as PageBannerTabList, type TabListProps as PageBannerTabListProps, Title as PageBannerTitle, type TitleProps as PageBannerTitleProps, } from "./PageBanner/index.js";
6
6
  export { Portal } from "./Portal/index.js";
7
7
  export { ProgressBar } from "./ProgressBar/index.js";
8
- export { Sidebar, SidebarProps } from "./Sidebar/index.js";
9
- export { Spinner, SpinnerProps } from "./Spinner/index.js";
10
- export { SplitContainer, SplitContainerProps } from "./SplitContainer/index.js";
8
+ export { Sidebar, type SidebarProps } from "./Sidebar/index.js";
9
+ export { Spinner, type SpinnerProps } from "./Spinner/index.js";
10
+ export { SplitContainer, type SplitContainerProps } from "./SplitContainer/index.js";
11
11
  export { useTranslation } from "./useTranslation/index.js";
12
- export { ValueToggle, ValueToggleProps } from "./ValueToggle/index.js";
12
+ export { ValueToggleGroup, type ValueToggleGroupProps } from "./ValueToggleGroup/index.js";
package/es/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { Checkbox } from "./Checkbox/index.js";
2
- export { ColorCard, CardColumn, CardDetail, CardLabel } from "./ColorCard/index.js";
2
+ export { ColorCard, CardColumn, CardDetail, CardLabel, CardStep, CardStepList } from "./ColorCard/index.js";
3
3
  export { DateNavigator } from "./DateNavigator/index.js";
4
- export { Card, List as LinkedList, ListItem as LinkedListItem } from "./LinkedCardList/index.js";
4
+ export { Card, LinkedList, LinkedListItem } from "./LinkedCardList/index.js";
5
5
  export { BannerImage as PageBannerImage, PageBanner, Tab as PageBannerTab, TabList as PageBannerTabList, Title as PageBannerTitle, } from "./PageBanner/index.js";
6
6
  export { Portal } from "./Portal/index.js";
7
7
  export { ProgressBar } from "./ProgressBar/index.js";
@@ -9,4 +9,4 @@ export { Sidebar } from "./Sidebar/index.js";
9
9
  export { Spinner } from "./Spinner/index.js";
10
10
  export { SplitContainer } from "./SplitContainer/index.js";
11
11
  export { useTranslation } from "./useTranslation/index.js";
12
- export { ValueToggle } from "./ValueToggle/index.js";
12
+ export { ValueToggleGroup } from "./ValueToggleGroup/index.js";
package/package.json CHANGED
@@ -1,91 +1,89 @@
1
1
  {
2
- "name": "@olenbetong/synergi-react",
3
- "version": "1.0.6",
4
- "description": "Standalone React component for SynergiWeb and Partner Portal",
5
- "type": "module",
6
- "types": "./es/index.d.ts",
7
- "exports": {
8
- ".": {
9
- "import": "./es/index.js"
10
- },
11
- "./Checkbox": {
12
- "import": "./es/Checkbox/index.js"
13
- },
14
- "./ColorCard": {
15
- "import": "./es/ColorCard/index.js"
16
- },
17
- "./DateNavigator": {
18
- "import": "./es/DateNavigator/index.js"
19
- },
20
- "./LinkedCardList": {
21
- "import": "./es/LinkedCardList/index.js"
22
- },
23
- "./PageBanner": {
24
- "import": "./es/PageBanner/index.js"
25
- },
26
- "./Portal": {
27
- "import": "./es/Portal/index.js"
28
- },
29
- "./ProgressBar": {
30
- "import": "./es/ProgressBar/index.js"
31
- },
32
- "./Sidebar": {
33
- "import": "./es/Sidebar/index.js"
34
- },
35
- "./Spinner": {
36
- "import": "./es/Spinner/index.js"
37
- },
38
- "./SplitContainer": {
39
- "import": "./es/SplitContainer/index.js"
40
- },
41
- "./useTranslation": {
42
- "import": "./es/useTranslation/index.js"
43
- },
44
- "./ValueToggle": {
45
- "import": "./es/ValueToggle/index.js"
46
- }
47
- },
48
- "scripts": {
49
- "prepack": "pnpm run build",
50
- "build": "pnpm run build:tsc && pnpm run build:tsc:post && pnpm run build:esbuild && pnpm run build:sass && pnpm run build:sass:components",
51
- "build:tsc": "rm -rf ./es && tsc",
52
- "build:esbuild": "rm -rf ./dist && node --loader ts-node/esm.mjs ../../shared/esbuild.js",
53
- "build:sass": "sass ./src/index.scss ./dist/styles/styles.css --source-map-urls=relative --style compressed",
54
- "build:sass:components": "node ./scripts/buildSassComponents.mjs",
55
- "build:tsc:post": "node ./scripts/replaceCss.mjs"
56
- },
57
- "files": [
58
- "src",
59
- "dist",
60
- "es"
61
- ],
62
- "keywords": [],
63
- "author": "Bjørnar Vister Hansen <bvh@olenbetong.no>",
64
- "license": "MIT",
65
- "peerDependencies": {
66
- "react": ">=18.2.0",
67
- "react-dom": ">=18.2.0"
68
- },
69
- "sideEffects": false,
70
- "dependencies": {
71
- "@olenbetong/appframe-core": "2.11.7",
72
- "clsx": "^2.1.1",
73
- "localforage": "^1.10.0",
74
- "mitt": "^3.0.0"
75
- },
76
- "repository": {
77
- "type": "git",
78
- "url": "https://github.com/olenbetong/ui-kit.git"
79
- },
80
- "buildConfig": {
81
- "entries": [
82
- {
83
- "libraryName": "ob.react"
84
- }
85
- ]
86
- },
87
- "devDependencies": {
88
- "replace-in-files": "^3.0.0"
89
- },
90
- "gitHead": "bc10814d960b65e6959fb8506259e4d369f094ab"
91
- }
2
+ "name": "@olenbetong/synergi-react",
3
+ "version": "2.0.1",
4
+ "description": "Standalone React component for SynergiWeb and Partner Portal",
5
+ "type": "module",
6
+ "types": "./es/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./es/index.js"
10
+ },
11
+ "./Checkbox": {
12
+ "import": "./es/Checkbox/index.js"
13
+ },
14
+ "./ColorCard": {
15
+ "import": "./es/ColorCard/index.js"
16
+ },
17
+ "./DateNavigator": {
18
+ "import": "./es/DateNavigator/index.js"
19
+ },
20
+ "./LinkedCardList": {
21
+ "import": "./es/LinkedCardList/index.js"
22
+ },
23
+ "./PageBanner": {
24
+ "import": "./es/PageBanner/index.js"
25
+ },
26
+ "./Portal": {
27
+ "import": "./es/Portal/index.js"
28
+ },
29
+ "./ProgressBar": {
30
+ "import": "./es/ProgressBar/index.js"
31
+ },
32
+ "./Sidebar": {
33
+ "import": "./es/Sidebar/index.js"
34
+ },
35
+ "./Spinner": {
36
+ "import": "./es/Spinner/index.js"
37
+ },
38
+ "./SplitContainer": {
39
+ "import": "./es/SplitContainer/index.js"
40
+ },
41
+ "./useTranslation": {
42
+ "import": "./es/useTranslation/index.js"
43
+ },
44
+ "./ValueToggle": {
45
+ "import": "./es/ValueToggle/index.js"
46
+ }
47
+ },
48
+ "files": [
49
+ "src",
50
+ "dist",
51
+ "es"
52
+ ],
53
+ "keywords": [],
54
+ "author": "Bjørnar Vister Hansen <bvh@olenbetong.no>",
55
+ "license": "MIT",
56
+ "peerDependencies": {
57
+ "react": ">=18.2.0",
58
+ "react-dom": ">=18.2.0"
59
+ },
60
+ "sideEffects": false,
61
+ "dependencies": {
62
+ "clsx": "^2.1.1",
63
+ "localforage": "^1.10.0",
64
+ "mitt": "^3.0.1",
65
+ "@olenbetong/appframe-core": "2.11.7"
66
+ },
67
+ "repository": {
68
+ "type": "git",
69
+ "url": "https://github.com/olenbetong/ui-kit.git"
70
+ },
71
+ "buildConfig": {
72
+ "entries": [
73
+ {
74
+ "libraryName": "ob.react"
75
+ }
76
+ ]
77
+ },
78
+ "devDependencies": {
79
+ "replace-in-files": "^3.0.0"
80
+ },
81
+ "scripts": {
82
+ "build": "pnpm run build:tsc && pnpm run build:tsc:post && pnpm run build:esbuild && pnpm run build:sass && pnpm run build:sass:components",
83
+ "build:tsc": "find . -name '*.tsbuildinfo' -delete && rm -rf ./es && tsc",
84
+ "build:esbuild": "rm -rf ./dist && node --experimental-strip-types ../../scripts/esbuild.ts",
85
+ "build:sass": "sass ./src/index.scss ./dist/styles/styles.css --source-map-urls=relative --style compressed",
86
+ "build:sass:components": "node ./scripts/buildSassComponents.mjs",
87
+ "build:tsc:post": "node ./scripts/replaceCss.mjs"
88
+ }
89
+ }
@@ -73,13 +73,20 @@
73
73
  }
74
74
  }
75
75
 
76
- .check_Label {
77
- margin-bottom: 0;
78
- flex-grow: 1;
76
+ .ObCheckbox-label {
77
+ display: flex;
78
+ gap: 0.5rem;
79
+ align-items: center;
80
+
81
+ overflow: visible;
79
82
  }
80
83
 
81
- .ObCheckbox-input:checked:not(:disabled) + .ObCheckbox-label {
82
- animation: animOn 800ms 1 forwards;
84
+ .ObCheckbox-root.Ob-reverse .ObCheckbox-label {
85
+ flex-direction: row-reverse;
86
+ }
87
+
88
+ .ObCheckbox-input:checked:not(:disabled) + .ObCheckbox-label .ObCheckbox-box {
89
+ animation: animOn 600ms 1 forwards;
83
90
  }
84
91
 
85
92
  .ObCheckbox-input:checked:not(:disabled) + .ObCheckbox-label .ObCheckbox-box {
@@ -15,16 +15,29 @@ export type CheckboxProps = React.RefAttributes<HTMLInputElement> &
15
15
  Omit<React.HTMLProps<HTMLInputElement>, "value"> & {
16
16
  className?: string;
17
17
  id?: string;
18
+ /**
19
+ * Label for the checkbox.
20
+ */
21
+ label?: React.ReactNode;
22
+ /**
23
+ * Tooltip text for the checkbox.
24
+ */
18
25
  title?: string;
19
26
  value?: boolean;
27
+ /**
28
+ * Reverses the checkbox layout, placing the label before the checkbox.
29
+ */
30
+ reverse?: boolean;
20
31
  };
21
32
 
22
33
  export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(
23
- { className, disabled = false, id, onChange = () => null, title, value, ...other }: CheckboxProps,
34
+ { className, disabled = false, id, onChange = () => null, label, title, reverse, value, ...other }: CheckboxProps,
24
35
  ref: React.ForwardedRef<HTMLInputElement>,
25
36
  ) {
26
- const inputId = useId() + (id ?? "");
27
- const input = useRef<HTMLInputElement>(null);
37
+ let inputId = useId();
38
+ inputId = id ?? inputId;
39
+ let inputIdRef = `#${inputId}`;
40
+ let input = useRef<HTMLInputElement>(null);
28
41
 
29
42
  // biome-ignore lint/correctness/useExhaustiveDependencies: Ref object
30
43
  useEffect(() => {
@@ -51,7 +64,7 @@ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Che
51
64
 
52
65
  function handleKeyDown(evt: any) {
53
66
  if (evt.nativeEvent) {
54
- const { nativeEvent } = evt;
67
+ let { nativeEvent } = evt;
55
68
 
56
69
  if (nativeEvent.key === " ") {
57
70
  nativeEvent.preventDefault();
@@ -61,7 +74,10 @@ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Che
61
74
  }
62
75
 
63
76
  return (
64
- <div className={clsx("ObCheckbox-root", disabled && "Ob-disabled", className)} title={title}>
77
+ <div
78
+ className={clsx("ObCheckbox-root", disabled && "Ob-disabled", reverse && "Ob-reverse", className)}
79
+ title={title}
80
+ >
65
81
  <input
66
82
  className="ObCheckbox-input"
67
83
  id={inputId}
@@ -72,10 +88,11 @@ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Che
72
88
  ref={input}
73
89
  {...other}
74
90
  />
75
- <label htmlFor={`#${inputId}`} className="ObCheckbox-label" onKeyDown={handleKeyDown} onClick={handleClick}>
91
+ <label htmlFor={inputIdRef} className="ObCheckbox-label" onKeyDown={handleKeyDown} onClick={handleClick}>
76
92
  <div className="ObCheckbox-box">
77
93
  <Mark className="ObCheckbox-mark" />
78
94
  </div>
95
+ {label && <div className="ObCheckbox-label-text">{label}</div>}
79
96
  </label>
80
97
  </div>
81
98
  );
@@ -1,13 +1,16 @@
1
- @use "../styles/variables";
2
-
3
1
  .ObColorCard-root {
4
2
  --bg-color-border: black;
5
3
  --bg-color-main: white;
6
4
  --bg-size: 0.75rem;
7
5
  --card-color: rgb(0, 0, 0);
8
6
 
7
+ display: flex;
9
8
  align-items: stretch;
10
- background-image: linear-gradient(to right, variables.$brand-primary, variables.$brand-primary 0.75rem, white 0.75rem, white);
9
+ min-height: 10rem;
10
+ overflow: hidden;
11
+ border-radius: 0.25rem;
12
+ box-shadow: 0 1px 12px rgba(0, 0, 0, 0.15), 0 1px 6px rgba(0, 0, 0, 0.25);
13
+ color: #666;
11
14
  background-image: linear-gradient(
12
15
  to right,
13
16
  var(--bg-color-border),
@@ -15,13 +18,6 @@
15
18
  var(--bg-color-main) var(--bg-size),
16
19
  var(--bg-color-main)
17
20
  );
18
- border-radius: 0.25rem;
19
- box-shadow:
20
- 0 1px 12px rgba(0, 0, 0, 0.15),
21
- 0 1px 6px rgba(0, 0, 0, 0.25);
22
- color: #666;
23
- cursor: pointer;
24
- display: flex;
25
21
  font-family:
26
22
  "Variable Bahnschrift",
27
23
  "Bahnschrift",
@@ -37,9 +33,8 @@
37
33
  "Segoe UI Emoji",
38
34
  "Segoe UI Symbol";
39
35
  font-size: 1rem;
40
- min-height: 10rem;
41
- overflow: hidden;
42
36
  transition: all ease-in-out 300ms;
37
+ cursor: pointer;
43
38
 
44
39
  &:nth-of-type(5n + 1) {
45
40
  --bg-color-border: rgb(178, 108, 190);
@@ -59,15 +54,9 @@
59
54
 
60
55
  &:hover,
61
56
  &:focus {
62
- /*--bg-size: 1rem;*/
63
57
  --bg-color-main: #f5f5f5;
64
-
65
- box-shadow:
66
- 0 3px 18px rgba(0, 0, 0, 0.15),
67
- 0 3px 12px rgba(0, 0, 0, 0.25);
68
- color: #666;
58
+ box-shadow: 0 3px 18px rgba(0, 0, 0, 0.15), 0 3px 12px rgba(0, 0, 0, 0.25);
69
59
  text-decoration: none;
70
- /*transform: scale(1.03) translateY(-3px);*/
71
60
  }
72
61
 
73
62
  @media screen and (min-width: 48rem) {
@@ -81,30 +70,27 @@
81
70
  flex-direction: column;
82
71
  justify-content: space-between;
83
72
  margin: 1rem 0;
84
- overflow: hidden;
85
73
  padding: 0.5rem 1.5rem 0.5rem 1rem;
74
+ overflow: hidden;
86
75
  text-overflow: ellipsis;
87
76
 
88
77
  &:first-child {
89
- margin-left: 0.75rem;
90
- margin-left: var(--bg-size);
78
+ margin-left: var(--bg-size, 0.75rem);
91
79
  }
92
80
 
93
81
  &.ObColorCard-minor {
94
- border-right: 1px solid #e3e3e3;
95
82
  flex: 0 0 4rem;
83
+ border-right: 1px solid #e3e3e3;
96
84
  transition: margin ease-in-out 300ms;
97
- }
98
85
 
99
- @media screen and (min-width: 48rem) {
100
- &.ObColorCard-minor {
86
+ @media screen and (min-width: 48rem) {
101
87
  flex: 0 0 8rem;
102
88
  }
103
89
  }
104
90
  }
105
91
 
106
92
  .ObColorCard-detailLabel {
107
- color: #ccc;
93
+ color: #696969;
108
94
  font-size: 0.8rem;
109
95
  text-transform: uppercase;
110
96
  }
@@ -130,41 +116,46 @@
130
116
  }
131
117
 
132
118
  .ObColorCard-detailValue {
133
- color: #999;
119
+ color: #555555;
134
120
  }
135
121
 
136
- .ObColorCard-label {
122
+ .ObColorCard-stepList {
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: 1rem;
126
+ }
127
+
128
+ .ObColorCard-step {
137
129
  position: relative;
138
- padding-left: 1.5rem;
139
- /* white-space: nowrap; */
130
+ text-box-trim: trim-both;
140
131
 
141
- &:not(:last-child) {
142
- margin-bottom: 1rem;
143
-
144
- &::after {
145
- content: "";
146
- position: absolute;
147
- width: 0.2rem;
148
- height: calc(100% + 1rem);
149
- border-left: 0.2rem dotted #666;
150
- left: 0.25rem;
151
- top: 0.5rem;
152
- z-index: 0;
153
- }
154
- }
132
+ display: flex;
133
+ align-items: flex-start;
134
+ gap: 0.5rem;
135
+ }
155
136
 
156
- &::before {
157
- background: white;
158
- border: 0.2rem solid variables.$brand-primary;
159
- border: 0.2rem solid var(--bg-color-border);
160
- border-radius: 50%;
161
- content: "";
162
- display: block;
163
- height: 0.75rem;
164
- left: 0;
165
- position: absolute;
166
- top: 0.3rem;
167
- width: 0.75rem;
168
- z-index: 1;
169
- }
137
+ .ObColorCard-step::before {
138
+ flex: 0.6em 0 0;
139
+ content: "";
140
+
141
+ position: relative;
142
+ top: 0.25em; /* half the height difference of text and the circle */
143
+
144
+ width: 0.6em;
145
+ height: 0.6em;
146
+ background: white;
147
+ border: 2px solid var(--bg-color-border, #999);
148
+ border-radius: 50%;
149
+ box-sizing: border-box;
150
+ z-index: 1;
151
+ }
152
+
153
+ .ObColorCard-step:not(:last-child)::after {
154
+ content: "";
155
+ position: absolute;
156
+ top: calc(0.25em + 0.6em + 0.15em); /* dot top + dot height + 0.15em spacing */
157
+ left: calc(0.3em - 1px); /* half of the circle width minus half the border width */
158
+ height: calc(100% - 0.95em + 1rem + 0.0625em); /* height of container - top + gap */
159
+ border-left: 2px dotted #999;
160
+ z-index: 0;
170
161
  }
@@ -1,17 +1,13 @@
1
- import "./index.scss";
1
+ import "./index.css";
2
2
 
3
3
  import clsx from "clsx";
4
4
 
5
- export function ColorCard({
6
- as: Component,
7
- children,
8
- className,
9
- href,
10
- ...other
11
- }: Pick<React.HTMLAttributes<HTMLDivElement>, "id" | "className" | "children"> & {
5
+ export type ColorCardProps = Pick<React.HTMLAttributes<HTMLDivElement>, "id" | "className" | "children"> & {
12
6
  as?: "a" | "div" | "button" | "span" | "section" | "article";
13
7
  href?: string;
14
- }) {
8
+ };
9
+
10
+ export function ColorCard({ as: Component, children, className, href, ...other }: ColorCardProps) {
15
11
  const BaseElement = Component ? Component : href ? "a" : "div";
16
12
 
17
13
  return (
@@ -21,6 +17,22 @@ export function ColorCard({
21
17
  );
22
18
  }
23
19
 
20
+ export function CardStepList({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
21
+ return (
22
+ <div className={clsx("ObColorCard-stepList", className)} {...props}>
23
+ {children}
24
+ </div>
25
+ );
26
+ }
27
+
28
+ export function CardStep({ children, className, ...props }: React.HTMLAttributes<HTMLDivElement>) {
29
+ return (
30
+ <div className={clsx("ObColorCard-step", className)} {...props}>
31
+ <div className="ObColorCard-stepText">{children}</div>
32
+ </div>
33
+ );
34
+ }
35
+
24
36
  export function CardColumn({
25
37
  children,
26
38
  className,