diff --git a/src/__storyshots__/Updated Components/Tabs/TabStepper-Playground.snap b/src/__storyshots__/Updated Components/Tabs/TabStepper-Playground.snap new file mode 100644 index 000000000..14d9ec281 --- /dev/null +++ b/src/__storyshots__/Updated Components/Tabs/TabStepper-Playground.snap @@ -0,0 +1,548 @@ +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.emotion-1 [role='tab'] { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + font-family: Roboto; + font-weight: 400; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.015625rem; +} + +.emotion-1 [role='tab'][data-selected] { + font-family: Roboto; + font-weight: 700; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.00625rem; +} + +.emotion-1 [role='tab']:not([data-selected]):hover { + background: #F2F4FF; + -webkit-transition: background ease-in-out 0.2s; + transition: background ease-in-out 0.2s; +} + +.emotion-1 [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + border-radius: 0.125rem; + border: 0.25rem solid #A566FF; +} + +.emotion-1 [role='tab'][data-status='warning'] [data-role='title'] { + color: #BF1250; +} + +.emotion-1 [role='tab'][data-selected]:not([data-status='warning']) [data-role='title'] { + color: #194DCC; +} + +.emotion-1[data-orientation='horizontal'] { + gap: 1.25rem; + border-bottom: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='horizontal'] [role='tab'] { + padding: 0.25rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab']:after { + inset: -3px -8px; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected] { + border-bottom: 0.125rem solid #175BF5; + margin-bottom: -0.125rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-1[data-orientation='vertical'] { + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + border-left: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-focus-visible]:after { + inset: -4px -2px; +} + +.emotion-1[data-orientation='vertical'] [role='tab'] { + padding: 0.5rem 0.75rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected] { + border-left: 0.125rem solid #175BF5; + margin-left: -0.125rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-2 { + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-3 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; +} + +.emotion-4 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.25rem; +} + +.emotion-11 { + width: 488px; + height: 220px; +} + +.emotion-12 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 16px; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + gap: 16px; +} + +.emotion-13 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + -webkit-transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + box-shadow: 0 0 0 0.0625rem #8EAAEC; + border-radius: 0.25rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: 1; + cursor: text; + height: 3.25rem; + min-width: 8.75rem; + background-color: rgba(200,206,255,0.30); +} + +.emotion-13:hover { + background-color: rgba(200,206,255,0.20); +} + +.emotion-13:focus-within { + box-shadow: 0 0 0 0.125rem #175BF5; + background-color: rgba(200,206,255,0.30); +} + +.emotion-14 { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: top; + width: -webkit-fill-available; + width: -moz-available; + width: fill-available; + padding: 0rem 0rem 0rem 0.75rem; +} + +.emotion-14>div { + position: relative; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.emotion-16 { + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; + background: transparent; + border: none; + color: #111530; + padding: 0; + display: block; + position: relative; + top: 0.4375rem; + z-index: 1; + text-overflow: ellipsis; + width: 0; + min-width: 100%; +} + +.emotion-16::-webkit-input-placeholder { + color: transparent; +} + +.emotion-16::-moz-placeholder { + color: transparent; +} + +.emotion-16:-ms-input-placeholder { + color: transparent; +} + +.emotion-16::placeholder { + color: transparent; +} + +.emotion-16:focus { + outline: none; +} + +.emotion-16:focus::-webkit-input-placeholder { + color: transparent; +} + +.emotion-16:focus::-moz-placeholder { + color: transparent; +} + +.emotion-16:focus:-ms-input-placeholder { + color: transparent; +} + +.emotion-16:focus::placeholder { + color: transparent; +} + +.emotion-16:not(:focus):placeholder-shown+label { + font-weight: normal; +} + +.emotion-16:focus-within+label, +.emotion-16:not(:placeholder-shown)+label { + font-weight: 700!important; + -webkit-transform: translate(0.1875rem, -35%) scale(0.8); + -moz-transform: translate(0.1875rem, -35%) scale(0.8); + -ms-transform: translate(0.1875rem, -35%) scale(0.8); + transform: translate(0.1875rem, -35%) scale(0.8); +} + +.emotion-16:focus-within+label { + font-weight: 700!important; + color: #194DCC; +} + +.emotion-16:disabled { + cursor: not-allowed; +} + +.emotion-17 { + -webkit-transition: -webkit-transform 0.25s,opacity 0.25s ease-in-out; + transition: transform 0.25s,opacity 0.25s ease-in-out; + transform-origin: 0 0; + width: 100%; + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: translate(0.1875rem, 0); + -moz-transform: translate(0.1875rem, 0); + -ms-transform: translate(0.1875rem, 0); + transform: translate(0.1875rem, 0); + color: #52567a; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + top: 0; + bottom: 0; + right: 0.1875rem; + margin: auto; + white-space: nowrap; + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; +} + +
+
+
+ + + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/__storyshots__/Updated Components/Tabs/TabStepper-SimpleTabStepper.snap b/src/__storyshots__/Updated Components/Tabs/TabStepper-SimpleTabStepper.snap new file mode 100644 index 000000000..9da296189 --- /dev/null +++ b/src/__storyshots__/Updated Components/Tabs/TabStepper-SimpleTabStepper.snap @@ -0,0 +1,254 @@ +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.emotion-1 [role='tab'] { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-1 [role='tab']:not([data-selected]):hover { + background: #F2F4FF; + -webkit-transition: background ease-in-out 0.2s; + transition: background ease-in-out 0.2s; +} + +.emotion-1 [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + border-radius: 0.25rem; + border: 0.25rem solid #A566FF; +} + +.emotion-1 [role='tab'][data-status='warning'] [data-role='title'] { + color: #FF4D8D; +} + +.emotion-1 [role='tab'][data-selected]:not([data-status='warning']) [data-role='title'] { + color: #194DCC; +} + +.emotion-1[data-orientation='horizontal'] { + gap: 1.25rem; + border-bottom: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='horizontal'] [role='tab'] { + padding: 0.25rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab']:after { + inset: -8px -12px; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected] { + border-bottom: 0.125rem solid #175BF5; + margin-bottom: -0.125rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-1[data-orientation='vertical'] { + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + border-left: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-focus-visible]:after { + inset: -4px -2px; +} + +.emotion-1[data-orientation='vertical'] [role='tab'] { + padding: 0.5rem 0.75rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected] { + border-left: 0.125rem solid #175BF5; + margin-left: -0.125rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-2 { + cursor: pointer; +} + +.emotion-3 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 0.25rem; + padding: 0.25rem; +} + +.emotion-4 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + font-family: Roboto; + font-weight: 700; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; +} + +.emotion-5 { + font-family: Roboto; + font-weight: 400; + line-height: 1rem; + font-size: 0.75rem; + letter-spacing: 0.015625rem; + color: #52567a; +} + +
+
+
+ + + +
+
+
\ No newline at end of file diff --git a/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperOrientation.snap b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperOrientation.snap new file mode 100644 index 000000000..71525e04b --- /dev/null +++ b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperOrientation.snap @@ -0,0 +1,569 @@ +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.emotion-1 [role='tab'] { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + font-family: Roboto; + font-weight: 400; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.015625rem; +} + +.emotion-1 [role='tab'][data-selected] { + font-family: Roboto; + font-weight: 700; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.00625rem; +} + +.emotion-1 [role='tab']:not([data-selected]):hover { + background: #F2F4FF; + -webkit-transition: background ease-in-out 0.2s; + transition: background ease-in-out 0.2s; +} + +.emotion-1 [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + border-radius: 0.125rem; + border: 0.25rem solid #A566FF; +} + +.emotion-1 [role='tab'][data-status='warning'] [data-role='title'] { + color: #BF1250; +} + +.emotion-1 [role='tab'][data-selected]:not([data-status='warning']) [data-role='title'] { + color: #194DCC; +} + +.emotion-1[data-orientation='horizontal'] { + gap: 1.25rem; + border-bottom: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='horizontal'] [role='tab'] { + padding: 0.25rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab']:after { + inset: -3px -8px; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected] { + border-bottom: 0.125rem solid #175BF5; + margin-bottom: -0.125rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-1[data-orientation='vertical'] { + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + border-left: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-focus-visible]:after { + inset: -4px -2px; +} + +.emotion-1[data-orientation='vertical'] [role='tab'] { + padding: 0.5rem 0.75rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected] { + border-left: 0.125rem solid #175BF5; + margin-left: -0.125rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-2 { + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-3 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; +} + +.emotion-4 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.25rem; +} + +.emotion-5 { + font-family: Roboto; + font-weight: 400; + line-height: 1rem; + font-size: 0.75rem; + letter-spacing: 0.015625rem; + color: #52567a; +} + +.emotion-14 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 16px; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + gap: 16px; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + -webkit-transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + box-shadow: 0 0 0 0.0625rem #8EAAEC; + border-radius: 0.25rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: 1; + cursor: text; + height: 3.25rem; + min-width: 8.75rem; + background-color: rgba(200,206,255,0.30); +} + +.emotion-15:hover { + background-color: rgba(200,206,255,0.20); +} + +.emotion-15:focus-within { + box-shadow: 0 0 0 0.125rem #175BF5; + background-color: rgba(200,206,255,0.30); +} + +.emotion-16 { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: top; + width: -webkit-fill-available; + width: -moz-available; + width: fill-available; + padding: 0rem 0rem 0rem 0.75rem; +} + +.emotion-16>div { + position: relative; +} + +.emotion-17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.emotion-18 { + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; + background: transparent; + border: none; + color: #111530; + padding: 0; + display: block; + position: relative; + top: 0.4375rem; + z-index: 1; + text-overflow: ellipsis; + width: 0; + min-width: 100%; +} + +.emotion-18::-webkit-input-placeholder { + color: transparent; +} + +.emotion-18::-moz-placeholder { + color: transparent; +} + +.emotion-18:-ms-input-placeholder { + color: transparent; +} + +.emotion-18::placeholder { + color: transparent; +} + +.emotion-18:focus { + outline: none; +} + +.emotion-18:focus::-webkit-input-placeholder { + color: transparent; +} + +.emotion-18:focus::-moz-placeholder { + color: transparent; +} + +.emotion-18:focus:-ms-input-placeholder { + color: transparent; +} + +.emotion-18:focus::placeholder { + color: transparent; +} + +.emotion-18:not(:focus):placeholder-shown+label { + font-weight: normal; +} + +.emotion-18:focus-within+label, +.emotion-18:not(:placeholder-shown)+label { + font-weight: 700!important; + -webkit-transform: translate(0.1875rem, -35%) scale(0.8); + -moz-transform: translate(0.1875rem, -35%) scale(0.8); + -ms-transform: translate(0.1875rem, -35%) scale(0.8); + transform: translate(0.1875rem, -35%) scale(0.8); +} + +.emotion-18:focus-within+label { + font-weight: 700!important; + color: #194DCC; +} + +.emotion-18:disabled { + cursor: not-allowed; +} + +.emotion-19 { + -webkit-transition: -webkit-transform 0.25s,opacity 0.25s ease-in-out; + transition: transform 0.25s,opacity 0.25s ease-in-out; + transform-origin: 0 0; + width: 100%; + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: translate(0.1875rem, 0); + -moz-transform: translate(0.1875rem, 0); + -ms-transform: translate(0.1875rem, 0); + transform: translate(0.1875rem, 0); + color: #52567a; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + top: 0; + bottom: 0; + right: 0.1875rem; + margin: auto; + white-space: nowrap; + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; +} + +
+
+
+ + + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperStatuses.snap b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperStatuses.snap new file mode 100644 index 000000000..71525e04b --- /dev/null +++ b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperStatuses.snap @@ -0,0 +1,569 @@ +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.emotion-1 [role='tab'] { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + font-family: Roboto; + font-weight: 400; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.015625rem; +} + +.emotion-1 [role='tab'][data-selected] { + font-family: Roboto; + font-weight: 700; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.00625rem; +} + +.emotion-1 [role='tab']:not([data-selected]):hover { + background: #F2F4FF; + -webkit-transition: background ease-in-out 0.2s; + transition: background ease-in-out 0.2s; +} + +.emotion-1 [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + border-radius: 0.125rem; + border: 0.25rem solid #A566FF; +} + +.emotion-1 [role='tab'][data-status='warning'] [data-role='title'] { + color: #BF1250; +} + +.emotion-1 [role='tab'][data-selected]:not([data-status='warning']) [data-role='title'] { + color: #194DCC; +} + +.emotion-1[data-orientation='horizontal'] { + gap: 1.25rem; + border-bottom: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='horizontal'] [role='tab'] { + padding: 0.25rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab']:after { + inset: -3px -8px; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected] { + border-bottom: 0.125rem solid #175BF5; + margin-bottom: -0.125rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-1[data-orientation='vertical'] { + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + border-left: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-focus-visible]:after { + inset: -4px -2px; +} + +.emotion-1[data-orientation='vertical'] [role='tab'] { + padding: 0.5rem 0.75rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected] { + border-left: 0.125rem solid #175BF5; + margin-left: -0.125rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-2 { + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-3 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; +} + +.emotion-4 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.25rem; +} + +.emotion-5 { + font-family: Roboto; + font-weight: 400; + line-height: 1rem; + font-size: 0.75rem; + letter-spacing: 0.015625rem; + color: #52567a; +} + +.emotion-14 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 16px; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + gap: 16px; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + -webkit-transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + box-shadow: 0 0 0 0.0625rem #8EAAEC; + border-radius: 0.25rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: 1; + cursor: text; + height: 3.25rem; + min-width: 8.75rem; + background-color: rgba(200,206,255,0.30); +} + +.emotion-15:hover { + background-color: rgba(200,206,255,0.20); +} + +.emotion-15:focus-within { + box-shadow: 0 0 0 0.125rem #175BF5; + background-color: rgba(200,206,255,0.30); +} + +.emotion-16 { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: top; + width: -webkit-fill-available; + width: -moz-available; + width: fill-available; + padding: 0rem 0rem 0rem 0.75rem; +} + +.emotion-16>div { + position: relative; +} + +.emotion-17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.emotion-18 { + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; + background: transparent; + border: none; + color: #111530; + padding: 0; + display: block; + position: relative; + top: 0.4375rem; + z-index: 1; + text-overflow: ellipsis; + width: 0; + min-width: 100%; +} + +.emotion-18::-webkit-input-placeholder { + color: transparent; +} + +.emotion-18::-moz-placeholder { + color: transparent; +} + +.emotion-18:-ms-input-placeholder { + color: transparent; +} + +.emotion-18::placeholder { + color: transparent; +} + +.emotion-18:focus { + outline: none; +} + +.emotion-18:focus::-webkit-input-placeholder { + color: transparent; +} + +.emotion-18:focus::-moz-placeholder { + color: transparent; +} + +.emotion-18:focus:-ms-input-placeholder { + color: transparent; +} + +.emotion-18:focus::placeholder { + color: transparent; +} + +.emotion-18:not(:focus):placeholder-shown+label { + font-weight: normal; +} + +.emotion-18:focus-within+label, +.emotion-18:not(:placeholder-shown)+label { + font-weight: 700!important; + -webkit-transform: translate(0.1875rem, -35%) scale(0.8); + -moz-transform: translate(0.1875rem, -35%) scale(0.8); + -ms-transform: translate(0.1875rem, -35%) scale(0.8); + transform: translate(0.1875rem, -35%) scale(0.8); +} + +.emotion-18:focus-within+label { + font-weight: 700!important; + color: #194DCC; +} + +.emotion-18:disabled { + cursor: not-allowed; +} + +.emotion-19 { + -webkit-transition: -webkit-transform 0.25s,opacity 0.25s ease-in-out; + transition: transform 0.25s,opacity 0.25s ease-in-out; + transform-origin: 0 0; + width: 100%; + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: translate(0.1875rem, 0); + -moz-transform: translate(0.1875rem, 0); + -ms-transform: translate(0.1875rem, 0); + transform: translate(0.1875rem, 0); + color: #52567a; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + top: 0; + bottom: 0; + right: 0.1875rem; + margin: auto; + white-space: nowrap; + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; +} + +
+
+
+ + + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperTypes.snap b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperTypes.snap new file mode 100644 index 000000000..87654bc28 --- /dev/null +++ b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperTypes.snap @@ -0,0 +1,372 @@ +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 32px; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-2 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.emotion-2 [role='tab'] { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + font-family: Roboto; + font-weight: 400; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.015625rem; +} + +.emotion-2 [role='tab'][data-selected] { + font-family: Roboto; + font-weight: 700; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.00625rem; +} + +.emotion-2 [role='tab']:not([data-selected]):hover { + background: #F2F4FF; + -webkit-transition: background ease-in-out 0.2s; + transition: background ease-in-out 0.2s; +} + +.emotion-2 [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + border-radius: 0.125rem; + border: 0.25rem solid #A566FF; +} + +.emotion-2 [role='tab'][data-status='warning'] [data-role='title'] { + color: #BF1250; +} + +.emotion-2 [role='tab'][data-selected]:not([data-status='warning']) [data-role='title'] { + color: #194DCC; +} + +.emotion-2[data-orientation='horizontal'] { + gap: 1.25rem; + border-bottom: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-2[data-orientation='horizontal'] [role='tab'] { + padding: 0.25rem; +} + +.emotion-2[data-orientation='horizontal'] [role='tab']:after { + inset: -3px -8px; +} + +.emotion-2[data-orientation='horizontal'] [role='tab'][data-selected] { + border-bottom: 0.125rem solid #175BF5; + margin-bottom: -0.125rem; +} + +.emotion-2[data-orientation='horizontal'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-2[data-orientation='vertical'] { + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + border-left: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-2[data-orientation='vertical'] [role='tab'][data-focus-visible]:after { + inset: -4px -2px; +} + +.emotion-2[data-orientation='vertical'] [role='tab'] { + padding: 0.5rem 0.75rem; +} + +.emotion-2[data-orientation='vertical'] [role='tab'][data-selected] { + border-left: 0.125rem solid #175BF5; + margin-left: -0.125rem; +} + +.emotion-2[data-orientation='vertical'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-3 { + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-4 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; +} + +.emotion-5 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.25rem; +} + +.emotion-17 { + font-family: Roboto; + font-weight: 400; + line-height: 1rem; + font-size: 0.75rem; + letter-spacing: 0.015625rem; + color: #52567a; +} + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
\ No newline at end of file diff --git a/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperWithContent.snap b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperWithContent.snap new file mode 100644 index 000000000..71525e04b --- /dev/null +++ b/src/__storyshots__/Updated Components/Tabs/TabStepper-TabStepperWithContent.snap @@ -0,0 +1,569 @@ +.emotion-0 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +.emotion-1 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.emotion-1 [role='tab'] { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + font-family: Roboto; + font-weight: 400; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.015625rem; +} + +.emotion-1 [role='tab'][data-selected] { + font-family: Roboto; + font-weight: 700; + line-height: 1.375rem; + font-size: 1rem; + letter-spacing: 0.00625rem; +} + +.emotion-1 [role='tab']:not([data-selected]):hover { + background: #F2F4FF; + -webkit-transition: background ease-in-out 0.2s; + transition: background ease-in-out 0.2s; +} + +.emotion-1 [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + border-radius: 0.125rem; + border: 0.25rem solid #A566FF; +} + +.emotion-1 [role='tab'][data-status='warning'] [data-role='title'] { + color: #BF1250; +} + +.emotion-1 [role='tab'][data-selected]:not([data-status='warning']) [data-role='title'] { + color: #194DCC; +} + +.emotion-1[data-orientation='horizontal'] { + gap: 1.25rem; + border-bottom: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='horizontal'] [role='tab'] { + padding: 0.25rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab']:after { + inset: -3px -8px; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected] { + border-bottom: 0.125rem solid #175BF5; + margin-bottom: -0.125rem; +} + +.emotion-1[data-orientation='horizontal'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-1[data-orientation='vertical'] { + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 1rem; + border-left: 0.125rem solid rgba(200,206,255,0.70); +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-focus-visible]:after { + inset: -4px -2px; +} + +.emotion-1[data-orientation='vertical'] [role='tab'] { + padding: 0.5rem 0.75rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected] { + border-left: 0.125rem solid #175BF5; + margin-left: -0.125rem; +} + +.emotion-1[data-orientation='vertical'] [role='tab'][data-selected][data-status='warning'] { + border-color: #FF4D8D; +} + +.emotion-2 { + cursor: pointer; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + +.emotion-3 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + gap: 0.25rem; + padding: 0.5rem; +} + +.emotion-4 { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -moz-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + gap: 1.25rem; +} + +.emotion-5 { + font-family: Roboto; + font-weight: 400; + line-height: 1rem; + font-size: 0.75rem; + letter-spacing: 0.015625rem; + color: #52567a; +} + +.emotion-14 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + padding: 16px; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + gap: 16px; +} + +.emotion-15 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + -webkit-transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + transition: background-color 0.25s,box-shadow 0.25s,border-color 0.25s; + box-shadow: 0 0 0 0.0625rem #8EAAEC; + border-radius: 0.25rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: 1; + cursor: text; + height: 3.25rem; + min-width: 8.75rem; + background-color: rgba(200,206,255,0.30); +} + +.emotion-15:hover { + background-color: rgba(200,206,255,0.20); +} + +.emotion-15:focus-within { + box-shadow: 0 0 0 0.125rem #175BF5; + background-color: rgba(200,206,255,0.30); +} + +.emotion-16 { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: top; + width: -webkit-fill-available; + width: -moz-available; + width: fill-available; + padding: 0rem 0rem 0rem 0.75rem; +} + +.emotion-16>div { + position: relative; +} + +.emotion-17 { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.emotion-18 { + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; + background: transparent; + border: none; + color: #111530; + padding: 0; + display: block; + position: relative; + top: 0.4375rem; + z-index: 1; + text-overflow: ellipsis; + width: 0; + min-width: 100%; +} + +.emotion-18::-webkit-input-placeholder { + color: transparent; +} + +.emotion-18::-moz-placeholder { + color: transparent; +} + +.emotion-18:-ms-input-placeholder { + color: transparent; +} + +.emotion-18::placeholder { + color: transparent; +} + +.emotion-18:focus { + outline: none; +} + +.emotion-18:focus::-webkit-input-placeholder { + color: transparent; +} + +.emotion-18:focus::-moz-placeholder { + color: transparent; +} + +.emotion-18:focus:-ms-input-placeholder { + color: transparent; +} + +.emotion-18:focus::placeholder { + color: transparent; +} + +.emotion-18:not(:focus):placeholder-shown+label { + font-weight: normal; +} + +.emotion-18:focus-within+label, +.emotion-18:not(:placeholder-shown)+label { + font-weight: 700!important; + -webkit-transform: translate(0.1875rem, -35%) scale(0.8); + -moz-transform: translate(0.1875rem, -35%) scale(0.8); + -ms-transform: translate(0.1875rem, -35%) scale(0.8); + transform: translate(0.1875rem, -35%) scale(0.8); +} + +.emotion-18:focus-within+label { + font-weight: 700!important; + color: #194DCC; +} + +.emotion-18:disabled { + cursor: not-allowed; +} + +.emotion-19 { + -webkit-transition: -webkit-transform 0.25s,opacity 0.25s ease-in-out; + transition: transform 0.25s,opacity 0.25s ease-in-out; + transform-origin: 0 0; + width: 100%; + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-transform: translate(0.1875rem, 0); + -moz-transform: translate(0.1875rem, 0); + -ms-transform: translate(0.1875rem, 0); + transform: translate(0.1875rem, 0); + color: #52567a; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + top: 0; + bottom: 0; + right: 0.1875rem; + margin: auto; + white-space: nowrap; + font-family: Roboto; + font-weight: 400; + line-height: 1.25rem; + font-size: 0.875rem; + letter-spacing: 0.015625rem; +} + +
+
+
+ + + +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/__storyshots__/Updated Components/Tabs/Tabs-Playground.snap b/src/__storyshots__/Updated Components/Tabs/Tabs-Playground.snap index de5cb07dd..da40e0d91 100644 --- a/src/__storyshots__/Updated Components/Tabs/Tabs-Playground.snap +++ b/src/__storyshots__/Updated Components/Tabs/Tabs-Playground.snap @@ -1,7 +1,4 @@ .emotion-0 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -9,6 +6,9 @@ -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; } .emotion-1 { diff --git a/src/__storyshots__/Updated Components/Tabs/Tabs-SimpleTabs.snap b/src/__storyshots__/Updated Components/Tabs/Tabs-SimpleTabs.snap index 4a19a43e0..cce0493bc 100644 --- a/src/__storyshots__/Updated Components/Tabs/Tabs-SimpleTabs.snap +++ b/src/__storyshots__/Updated Components/Tabs/Tabs-SimpleTabs.snap @@ -1,7 +1,4 @@ .emotion-0 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -9,6 +6,9 @@ -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; } .emotion-1 { diff --git a/src/__storyshots__/Updated Components/Tabs/Tabs-TabsOrientation.snap b/src/__storyshots__/Updated Components/Tabs/Tabs-TabsOrientation.snap index de5cb07dd..da40e0d91 100644 --- a/src/__storyshots__/Updated Components/Tabs/Tabs-TabsOrientation.snap +++ b/src/__storyshots__/Updated Components/Tabs/Tabs-TabsOrientation.snap @@ -1,7 +1,4 @@ .emotion-0 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -9,6 +6,9 @@ -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; } .emotion-1 { diff --git a/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithContent.snap b/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithContent.snap index de5cb07dd..da40e0d91 100644 --- a/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithContent.snap +++ b/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithContent.snap @@ -1,7 +1,4 @@ .emotion-0 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -9,6 +6,9 @@ -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; } .emotion-1 { diff --git a/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithCounter.snap b/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithCounter.snap index cb2783f42..a305fb55d 100644 --- a/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithCounter.snap +++ b/src/__storyshots__/Updated Components/Tabs/Tabs-TabsWithCounter.snap @@ -1,7 +1,4 @@ .emotion-0 { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; @@ -9,6 +6,9 @@ -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; } .emotion-1 { diff --git a/src/components/TabStepper/TabStepper.mdx b/src/components/TabStepper/TabStepper.mdx new file mode 100644 index 000000000..5100a0988 --- /dev/null +++ b/src/components/TabStepper/TabStepper.mdx @@ -0,0 +1,78 @@ +import { Meta, Canvas, ArgTypes } from '@storybook/blocks'; +import TabStepper from './TabStepper'; +import * as TabStepperStories from './TabStepper.stories'; +import { TabStepItemStory } from './utils/TabStepperStoryComponents'; + + + + + +## Overview + +A TabStepper is a multi-step process that helps users to complete a task or achieve a goal by breaking it down into smaller, more manageable steps. + + + This component is a monolith that covers most basic use cases. If you want to customize your + TabStepper to fit your specific needs, visit the Components section to learn how you can use the + tab stepper modules to create your own solutions. + + + + +### TabStepper + + + +## TabStepItem + + + +## Usage + + + + + +## TabStepper types + +TabStepper can be simple (with only a title) or also display a subtitle. + + + +## TabStepper with content + +In order to add content to your TabStepper and render it conditionally based on the selected TabStep, you can use the TabPanel component. Otherwise you can just use the TabStepper component without children and implement a custom panel functionality. + + + +## Orientation + +TabStepper can be horizontal or vertical. Use the `orientation` prop to toggle this feature. + + + +## TabStepper statuses + +There are 3 statuses for the TabStep: `pending` (the default one), `warning` and `done`. You can set the statuses thought the TabStepper's `items` prop, or the TabStep's `status` prop when creating a composition. + + + +## Playground + + diff --git a/src/components/TabStepper/TabStepper.stories.tsx b/src/components/TabStepper/TabStepper.stories.tsx new file mode 100644 index 000000000..b7e9d575a --- /dev/null +++ b/src/components/TabStepper/TabStepper.stories.tsx @@ -0,0 +1,256 @@ +import React from 'react'; +import TabStepper from '~/components/TabStepper'; +import { TabKey, TabPanel } from '../Tabs'; +import { TabStepItem } from './types'; +import { getContent } from './constants'; + +export default { + title: 'Updated Components/Tabs/TabStepper', + component: TabStepper, + + argTypes: { + orientation: { type: 'radio', options: ['horizontal', 'vertical'] }, + status: { type: 'select', options: ['pending', 'warning', 'done'] }, + status1: { name: 'Step 1 Status', type: 'select', options: ['pending', 'warning', 'done'] }, + status2: { name: 'Step 2 Status', type: 'select', options: ['pending', 'warning', 'done'] }, + status3: { name: 'Step 3 Status', type: 'select', options: ['pending', 'warning', 'done'] }, + hasSubtitle: { name: 'has Subtitle', type: 'boolean' }, + }, + + args: { + orientation: 'horizontal', + status: 'pending', + status1: 'pending', + status2: 'pending', + status3: 'pending', + hasSubtitle: false, + }, +}; + +export const TabStepperTypes = { + render: () => { + const [key1, setKey1] = React.useState('step_1'); + const [key2, setKey2] = React.useState('step_1'); + + const getItems = (hasSubtitle: boolean): TabStepItem[] => { + return [ + { + id: 'step_1', + title: 'Step 1', + ...(hasSubtitle && { subtitle: 'This is subtitle for step 1' }), + }, + { + id: 'step_2', + title: 'Step 2', + ...(hasSubtitle && { subtitle: 'This is subtitle for step 2' }), + }, + { + id: 'step_3', + title: 'Step 3', + ...(hasSubtitle && { subtitle: 'This is subtitle for step 3' }), + }, + ]; + }; + + return ( +
+ + +
+ ); + }, + + name: 'TabStepper types', + + parameters: { + controls: { disable: true }, + }, +}; + +export const TabStepperWithContent = { + render: () => { + const [key, setKey] = React.useState('step_1'); + + const items: TabStepItem[] = [ + { + id: 'step_1', + title: 'Step 1', + subtitle: 'This is subtitle for step 1', + }, + { + id: 'step_2', + title: 'Step 2', + subtitle: 'This is subtitle for step 2', + }, + { + id: 'step_3', + title: 'Step 3', + subtitle: 'This is subtitle for step 3', + }, + ]; + + return ( + + {items.map((item) => ( + + {getContent(item.id, 'horizontal')} + + ))} + + ); + }, + + name: 'TabStepper with content', + + parameters: { + controls: { disable: true }, + }, +}; + +export const TabStepperOrientation = { + render: (args) => { + const { orientation } = args; + + const [key, setKey] = React.useState('step_1'); + + const items: TabStepItem[] = [ + { + id: 'step_1', + title: 'Step 1', + subtitle: 'This is subtitle for step 1', + }, + { + id: 'step_2', + title: 'Step 2', + subtitle: 'This is subtitle for step 2', + }, + { + id: 'step_3', + title: 'Step 3', + subtitle: 'This is subtitle for step 3', + }, + ]; + + return ( + + {items.map((item) => ( + + {getContent(item.id, orientation)} + + ))} + + ); + }, + + name: 'Orientation', + + parameters: { + controls: { include: ['orientation'] }, + }, +}; + +export const TabStepperStatuses = { + render: (args) => { + const { status } = args; + + const [key, setKey] = React.useState('step_1'); + + const items: TabStepItem[] = [ + { + id: 'step_1', + title: 'Step 1', + subtitle: 'This is subtitle for step 1', + status, + }, + { + id: 'step_2', + title: 'Step 2', + subtitle: 'This is subtitle for step 2', + status, + }, + { + id: 'step_3', + title: 'Step 3', + subtitle: 'This is subtitle for step 3', + status, + }, + ]; + + return ( + + {items.map((item) => ( + + {getContent(item.id, 'horizontal')} + + ))} + + ); + }, + + name: 'TabStepper statuses', + + parameters: { + controls: { include: ['status'] }, + }, +}; + +export const Playground = { + render: (args) => { + const { orientation, status1, status2, status3, hasSubtitle } = args; + + const [key, setKey] = React.useState('step_1'); + + const getItems = (hasSubtitle: boolean): TabStepItem[] => { + return [ + { + id: 'step_1', + title: 'Step 1', + ...(hasSubtitle && { subtitle: 'This is subtitle for step 1' }), + status: status1, + }, + { + id: 'step_2', + title: 'Step 2', + ...(hasSubtitle && { subtitle: 'This is subtitle for step 2' }), + status: status2, + }, + { + id: 'step_3', + title: 'Step 3', + ...(hasSubtitle && { subtitle: 'This is subtitle for step 3' }), + status: status3, + }, + ]; + }; + + return ( + +
+ {getItems(hasSubtitle).map((item) => ( + + {getContent(item.id, orientation)} + + ))} +
+
+ ); + }, + + name: 'Playground', + + parameters: { + controls: { + include: ['orientation', 'Step 1 Status', 'Step 2 Status', 'Step 3 Status', 'has Subtitle'], + }, + }, +}; diff --git a/src/components/TabStepper/TabStepper.tsx b/src/components/TabStepper/TabStepper.tsx new file mode 100644 index 000000000..3106961cc --- /dev/null +++ b/src/components/TabStepper/TabStepper.tsx @@ -0,0 +1,40 @@ +import React from 'react'; + +import { TabStep, TabStepList } from './components'; +import type { StepperProps } from './types'; +import { TabsContainer } from '../Tabs'; + +const TabStepper = React.forwardRef((props, ref) => { + const { + orientation = 'horizontal', + selectedKey, + onSelectionChange, + items, + dataTestPrefixId = 'ictinus', + children, + } = props; + + return ( + + + {items.map((item) => ( + + ))} + + {children} + + ); +}); + +TabStepper.displayName = 'TabStepper'; + +export default TabStepper; diff --git a/src/components/TabStepper/components/TabStep/TabStep.mdx b/src/components/TabStepper/components/TabStep/TabStep.mdx new file mode 100644 index 000000000..860ff7a7e --- /dev/null +++ b/src/components/TabStepper/components/TabStep/TabStep.mdx @@ -0,0 +1,56 @@ +import { Meta, Canvas, ArgTypes } from '@storybook/blocks'; +import TabStep from './TabStep'; + + + + + +## Overview + +TabStep component is used to render the main content of the TabsStepper. + +## Props + + + +## Usage + +Use TabStep as a leaf component to render the content of the TabStep as children. + + + Check also + [TabsContainer](../?path=/docs/updated-components-tabs-components-tabscontainer--overview) and + [TabStepList](../?path=/docs/updated-components-tabs-components-tabsteplist--overview) as they are + needed for the implementation. + + +```js + const [selectedKey, setSelectedKey] = React.useState('step_1'); + + return ( + // + // + + Tab 1 + + + Tab 2 + + + Tab 3 + + // + // + +``` diff --git a/src/components/TabStepper/components/TabStep/TabStep.stories.tsx b/src/components/TabStepper/components/TabStep/TabStep.stories.tsx new file mode 100644 index 000000000..6d777f51b --- /dev/null +++ b/src/components/TabStepper/components/TabStep/TabStep.stories.tsx @@ -0,0 +1,13 @@ +import TabStep from '.'; + +export default { + title: 'Updated Components/Tabs/Components/TabStep', + component: TabStep, + + parameters: { + storyshots: { + disable: true, + }, + controls: { disable: true }, + }, +}; diff --git a/src/components/TabStepper/components/TabStep/TabStep.style.ts b/src/components/TabStepper/components/TabStep/TabStep.style.ts new file mode 100644 index 000000000..02e954636 --- /dev/null +++ b/src/components/TabStepper/components/TabStep/TabStep.style.ts @@ -0,0 +1,33 @@ +import { css } from '@emotion/react'; + +import type { Theme } from '~/theme'; +import { flex, flexCenterVertical } from '~/theme/functions'; + +export const stepStyles = () => + css` + cursor: pointer; + display: flex; + flex-direction: column; + justify-content: center; + `; + +export const stepContainer = () => (theme: Theme) => + css` + ${flex}; + flex-direction: column; + gap: ${theme.globals.spacing.get('3')}; + padding: ${theme.globals.spacing.get('4')}; + `; + +export const stepTitle = () => (theme: Theme) => + css` + ${flexCenterVertical}; + justify-content: space-between; + gap: ${theme.globals.spacing.get('7')}; + `; + +export const stepSubtitle = () => (theme: Theme) => + css` + ${theme.tokens.typography.get('normal.body03')} + color: ${theme.tokens.colors.get('textColor.default.secondary')} + `; diff --git a/src/components/TabStepper/components/TabStep/TabStep.tsx b/src/components/TabStepper/components/TabStep/TabStep.tsx new file mode 100644 index 000000000..96b971928 --- /dev/null +++ b/src/components/TabStepper/components/TabStep/TabStep.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { Tab as ReactAriaTab } from 'react-aria-components'; + +import { stepContainer, stepStyles, stepSubtitle, stepTitle } from './TabStep.style'; +import type { TabStepProps } from '../../types'; + +import type { AcceptedIconNames } from '~/components/Icon'; +import Icon from '~/components/Icon'; +import useTheme from '~/hooks/useTheme'; +import type { SemanticColorsKey } from '~/theme/tokens/semantic/colors'; + +const STATUS_ICON = { + done: { + name: 'success' as AcceptedIconNames, + color: 'indicators.brand' as SemanticColorsKey, + }, + warning: { + name: 'warning' as AcceptedIconNames, + color: 'indicators.error' as SemanticColorsKey, + }, +}; + +const TabStep = React.forwardRef((props, ref) => { + const { children, id, title, subtitle, status = 'pending', dataTestPrefixId, ...rest } = props; + + const hasIcon = status !== 'pending'; + + const theme = useTheme(); + + const icon = status !== 'pending' ? STATUS_ICON[status] : null; + + return ( + + {children ?? ( +
+ {title && ( +
+ {title} + {hasIcon && ( + + )} +
+ )} + {subtitle && ( +
+ {subtitle} +
+ )} +
+ )} +
+ ); +}); + +TabStep.displayName = 'TabStep'; + +export default TabStep; diff --git a/src/components/TabStepper/components/TabStep/index.ts b/src/components/TabStepper/components/TabStep/index.ts new file mode 100644 index 000000000..f24fb1bab --- /dev/null +++ b/src/components/TabStepper/components/TabStep/index.ts @@ -0,0 +1 @@ +export { default } from './TabStep'; diff --git a/src/components/TabStepper/components/TabStepList/TabStepList.mdx b/src/components/TabStepper/components/TabStepList/TabStepList.mdx new file mode 100644 index 000000000..e7efe125b --- /dev/null +++ b/src/components/TabStepper/components/TabStepList/TabStepList.mdx @@ -0,0 +1,61 @@ +import { Meta, Canvas, ArgTypes } from '@storybook/blocks'; +import TabStepList from './TabStepList'; + + + + + +## Overview + +TabStepList is the wrapper of the TabStep components. Here you can use the sx prop to add custom styles for the TabSteps. + +## Props + + + +## Usage + +Use the TabStepList to add aria-label and style overrides. + + + Check also + [TabsContainer](../?path=/docs/updated-components-tabs-components-tabscontainer--overview) and + [TabStep](../?path=/docs/updated-components-tabs-components-tabstep--overview) as they are needed + for the implementation. + + + + When using custom tab stepper components for children, use `role='tab'` on every child tab in + order for the TabStepList styles to be applied. + + +```js + const [selectedKey, setSelectedKey] = React.useState('step_1'); + + return ( + // + + // + // Tab 1 + // + // + // Tab 2 + // + // + // Tab 3 + // + + // + +``` diff --git a/src/components/TabStepper/components/TabStepList/TabStepList.stories.tsx b/src/components/TabStepper/components/TabStepList/TabStepList.stories.tsx new file mode 100644 index 000000000..32d7db1fd --- /dev/null +++ b/src/components/TabStepper/components/TabStepList/TabStepList.stories.tsx @@ -0,0 +1,13 @@ +import TabStepList from '.'; + +export default { + title: 'Updated Components/Tabs/Components/TabStepList', + component: TabStepList, + + parameters: { + storyshots: { + disable: true, + }, + controls: { disable: true }, + }, +}; diff --git a/src/components/TabStepper/components/TabStepList/TabStepList.style.ts b/src/components/TabStepper/components/TabStepList/TabStepList.style.ts new file mode 100644 index 000000000..62a3ae208 --- /dev/null +++ b/src/components/TabStepper/components/TabStepList/TabStepList.style.ts @@ -0,0 +1,98 @@ +import type { CSSObject } from '@emotion/react'; +import { css } from '@emotion/react'; + +import type { Theme } from '~/theme'; + +export const containerStyles = (sx?: CSSObject) => (theme: Theme) => + css` + display: flex; + + [role='tab'] { + position: relative; + width: fit-content; + ${theme.tokens.typography.get('normal.body01')} + } + + [role='tab'][data-selected] { + ${theme.tokens.typography.get('normal.title01')} + } + + [role='tab']:not([data-selected]):hover { + background: ${theme.tokens.colors.get('backgroundColor.alt')}; + transition: background ease-in-out 0.2s; + } + + [role='tab'][data-focus-visible]:after { + content: ''; + position: absolute; + + border-radius: ${theme.dimension.borderRadius.get('sm')}; + border: ${theme.dimension.borderWidth.get('focused')} solid + ${theme.tokens.colors.get('borderColor.interactive.focused')}; + } + + [role='tab'][data-status='warning'] { + [data-role='title'] { + color: ${theme.tokens.colors.get('textColor.default.error')}; + } + } + + [role='tab'][data-selected]:not([data-status='warning']) { + [data-role='title'] { + color: ${theme.tokens.colors.get('textColor.default.active')}; + } + } + + &[data-orientation='horizontal'] { + gap: ${theme.globals.spacing.get('7')}; + border-bottom: ${theme.globals.borderWidth.get('2')} solid + ${theme.tokens.colors.get('borderColor.decorative.default')}; + + [role='tab'] { + padding: ${theme.globals.spacing.get('3')}; + } + + [role='tab']:after { + inset: -3px -8px; + } + + [role='tab'][data-selected] { + border-bottom: ${theme.globals.borderWidth.get('2')} solid + ${theme.tokens.colors.get('borderColor.interactive.active')}; + + &[data-status='warning'] { + border-color: ${theme.tokens.colors.get('borderColor.interactive.error')}; + } + + margin-bottom: -${theme.globals.borderWidth.get('2')}; + } + } + + &[data-orientation='vertical'] { + flex-direction: column; + gap: ${theme.globals.spacing.get('6')}; + border-left: ${theme.globals.borderWidth.get('2')} solid + ${theme.tokens.colors.get('borderColor.decorative.default')}; + + [role='tab'][data-focus-visible]:after { + inset: -4px -2px; + } + + [role='tab'] { + padding: ${theme.globals.spacing.get('4')} ${theme.globals.spacing.get('5')}; + } + + [role='tab'][data-selected] { + border-left: ${theme.globals.borderWidth.get('2')} solid + ${theme.tokens.colors.get('borderColor.interactive.active')}; + + &[data-status='warning'] { + border-color: ${theme.tokens.colors.get('indicators.error')}; + } + + margin-left: -${theme.globals.borderWidth.get('2')}; + } + } + + ${sx}; + `; diff --git a/src/components/TabStepper/components/TabStepList/TabStepList.tsx b/src/components/TabStepper/components/TabStepList/TabStepList.tsx new file mode 100644 index 000000000..78843666f --- /dev/null +++ b/src/components/TabStepper/components/TabStepList/TabStepList.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { TabList as AriaTabList } from 'react-aria-components'; + +import { containerStyles } from './TabStepList.style'; +import type { TabStepListProps } from '../../types'; + +const TabStepList = React.forwardRef((props, ref) => { + const { children, sx, ...rest } = props; + + return ( + + {children} + + ); +}); + +TabStepList.displayName = 'TabStepList'; + +export default TabStepList; diff --git a/src/components/TabStepper/components/TabStepList/index.ts b/src/components/TabStepper/components/TabStepList/index.ts new file mode 100644 index 000000000..2664d3964 --- /dev/null +++ b/src/components/TabStepper/components/TabStepList/index.ts @@ -0,0 +1 @@ +export { default } from './TabStepList'; diff --git a/src/components/TabStepper/components/index.ts b/src/components/TabStepper/components/index.ts new file mode 100644 index 000000000..0fc4a6653 --- /dev/null +++ b/src/components/TabStepper/components/index.ts @@ -0,0 +1,2 @@ +export { default as TabStep } from './TabStep'; +export { default as TabStepList } from './TabStepList'; diff --git a/src/components/TabStepper/constants.tsx b/src/components/TabStepper/constants.tsx new file mode 100644 index 000000000..873fea06f --- /dev/null +++ b/src/components/TabStepper/constants.tsx @@ -0,0 +1,46 @@ +import type { TabOrientation } from 'index'; +import { TextArea, TextField } from 'index'; + +import { Radio, RadioGroup } from '../Controls'; + +export const getContent = (key: string, orientation: TabOrientation) => { + if (key === 'step_1') { + return ( +
+ + + +
+ ); + } + + if (key === 'step_2') { + return ( + + Option 1 + Option 2 + Option 3 + + ); + } + + return ( +
+