streamlit-react-components 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl
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.
- streamlit_react_components/_frontend/index.css +1 -1
- streamlit_react_components-0.1.1.dist-info/METADATA +677 -0
- {streamlit_react_components-0.1.0.dist-info → streamlit_react_components-0.1.1.dist-info}/RECORD +5 -5
- streamlit_react_components-0.1.0.dist-info/METADATA +0 -18
- {streamlit_react_components-0.1.0.dist-info → streamlit_react_components-0.1.1.dist-info}/WHEEL +0 -0
- {streamlit_react_components-0.1.0.dist-info → streamlit_react_components-0.1.1.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.h-3{height:.75rem}.h-8{height:2rem}.w-3{width:.75rem}.w-8{width:2rem}.w-full{width:100%}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-slate-500{--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity, 1))}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity, 1))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-700\/50{border-color:#33415580}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/30{background-color:#1e3a8a4d}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-900\/30{background-color:#14532d4d}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity, 1))}.bg-purple-900\/30{background-color:#581c874d}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-yellow-600{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.bg-yellow-900\/30{background-color:#713f124d}.p-2{padding:.5rem}.p-4{padding:1rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.opacity-50{opacity:.5}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:transparent;color:#e2e8f0}*{box-sizing:border-box}.dark-theme{--bg-primary: #0f172a;--bg-secondary: #1e293b;--border-color: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8}.hover\:bg-slate-500:hover{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-700:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:opacity-80:hover{opacity:.8}
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-8{margin:2rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-8{height:2rem}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.min-h-0{min-height:0px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-2\/3{width:66.666667%}.w-3{width:.75rem}.w-3\/4{width:75%}.w-8{width:2rem}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-xl{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-xl{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-bl-lg{border-bottom-left-radius:.5rem}.rounded-br-lg{border-bottom-right-radius:.5rem}.rounded-tl-lg{border-top-left-radius:.5rem}.rounded-tr-lg{border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-purple-600{--tw-border-opacity: 1;border-color:rgb(147 51 234 / var(--tw-border-opacity, 1))}.border-purple-700{--tw-border-opacity: 1;border-color:rgb(126 34 206 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-slate-500{--tw-border-opacity: 1;border-color:rgb(100 116 139 / var(--tw-border-opacity, 1))}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity, 1))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-700\/50{border-color:#33415580}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.border-yellow-600{--tw-border-opacity: 1;border-color:rgb(202 138 4 / var(--tw-border-opacity, 1))}.border-yellow-700{--tw-border-opacity: 1;border-color:rgb(161 98 7 / var(--tw-border-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.bg-blue-900\/30{background-color:#1e3a8a4d}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-green-700{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.bg-green-900\/30{background-color:#14532d4d}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-purple-600{--tw-bg-opacity: 1;background-color:rgb(147 51 234 / var(--tw-bg-opacity, 1))}.bg-purple-700{--tw-bg-opacity: 1;background-color:rgb(126 34 206 / var(--tw-bg-opacity, 1))}.bg-purple-900\/30{background-color:#581c874d}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-700{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-yellow-600{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.bg-yellow-700{--tw-bg-opacity: 1;background-color:rgb(161 98 7 / var(--tw-bg-opacity, 1))}.bg-yellow-900\/30{background-color:#713f124d}.p-0{padding:0}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:transparent;color:#e2e8f0}*{box-sizing:border-box}.dark-theme{--bg-primary: #0f172a;--bg-secondary: #1e293b;--border-color: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-500:hover{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-700:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}
|
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: streamlit-react-components
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Reusable React-based Streamlit components with Tailwind CSS styling
|
|
5
|
+
License: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/your-org/streamlit-react-components
|
|
7
|
+
Classifier: Development Status :: 3 - Alpha
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Requires-Python: >=3.8
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
Requires-Dist: streamlit>=1.24.0
|
|
19
|
+
|
|
20
|
+
# Streamlit React Components
|
|
21
|
+
|
|
22
|
+
A collection of 11 reusable React-based Streamlit components with Tailwind CSS styling. All components support custom inline styles and Tailwind class names.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install streamlit-react-components
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
import streamlit as st
|
|
34
|
+
from streamlit_react_components import (
|
|
35
|
+
panel, section_header, stat_card, metric_row,
|
|
36
|
+
data_table, step_indicator, button_group, chart_legend,
|
|
37
|
+
form_select, form_slider, checkbox_group
|
|
38
|
+
)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Styling
|
|
44
|
+
|
|
45
|
+
All components accept two styling parameters:
|
|
46
|
+
|
|
47
|
+
| Parameter | Type | Description |
|
|
48
|
+
|-----------|------|-------------|
|
|
49
|
+
| `style` | `dict` | Inline CSS as Python dict (e.g., `{"background": "#1e293b", "padding": "16px"}`) |
|
|
50
|
+
| `class_name` | `str` | Tailwind CSS classes (e.g., `"bg-slate-900 p-4 rounded-lg"`) |
|
|
51
|
+
|
|
52
|
+
### Example
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
stat_card(
|
|
56
|
+
label="Revenue",
|
|
57
|
+
value="$50K",
|
|
58
|
+
color="blue",
|
|
59
|
+
style={"minWidth": "200px", "boxShadow": "0 4px 6px rgba(0,0,0,0.3)"},
|
|
60
|
+
class_name="border border-blue-500"
|
|
61
|
+
)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Components
|
|
67
|
+
|
|
68
|
+
### 1. Panel
|
|
69
|
+
|
|
70
|
+
A styled container/card wrapper.
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
panel(
|
|
74
|
+
children: str = "", # HTML content
|
|
75
|
+
style: dict = None,
|
|
76
|
+
class_name: str = "",
|
|
77
|
+
key: str = None
|
|
78
|
+
) -> None
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Example
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
panel(
|
|
85
|
+
children="<h3 style='color: white;'>Title</h3><p style='color: #94a3b8;'>Content here</p>",
|
|
86
|
+
class_name="border border-blue-500"
|
|
87
|
+
)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### Default Styling
|
|
91
|
+
- Background: `bg-slate-900`
|
|
92
|
+
- Border radius: `rounded-lg`
|
|
93
|
+
- Padding: `p-4`
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### 2. Section Header
|
|
98
|
+
|
|
99
|
+
A section title with optional action buttons.
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
section_header(
|
|
103
|
+
title: str, # Header text
|
|
104
|
+
icon: str = "", # Emoji or icon prefix
|
|
105
|
+
actions: list = None, # List of action buttons
|
|
106
|
+
style: dict = None,
|
|
107
|
+
class_name: str = "",
|
|
108
|
+
key: str = None
|
|
109
|
+
) -> str | None # Returns clicked action ID
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### Actions Format
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
actions = [
|
|
116
|
+
{"id": "refresh", "label": "Refresh", "color": "blue"},
|
|
117
|
+
{"id": "export", "icon": "📥", "label": "Export", "color": "green"}
|
|
118
|
+
]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
| Action Key | Type | Description |
|
|
122
|
+
|------------|------|-------------|
|
|
123
|
+
| `id` | `str` | Unique identifier (returned on click) |
|
|
124
|
+
| `label` | `str` | Button text (optional) |
|
|
125
|
+
| `icon` | `str` | Emoji/icon (optional) |
|
|
126
|
+
| `color` | `str` | `"blue"`, `"green"`, `"red"`, `"yellow"`, `"purple"` |
|
|
127
|
+
|
|
128
|
+
#### Example
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
clicked = section_header(
|
|
132
|
+
title="Executive Summary",
|
|
133
|
+
icon="📊",
|
|
134
|
+
actions=[
|
|
135
|
+
{"id": "refresh", "label": "Refresh", "color": "blue"},
|
|
136
|
+
{"id": "settings", "icon": "⚙️", "color": "slate"}
|
|
137
|
+
]
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
if clicked == "refresh":
|
|
141
|
+
st.rerun()
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### 3. Stat Card
|
|
147
|
+
|
|
148
|
+
A statistics display card with colored accent.
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
stat_card(
|
|
152
|
+
label: str, # Description text
|
|
153
|
+
value: str | int | float, # The statistic value
|
|
154
|
+
color: str = "blue", # Accent color
|
|
155
|
+
icon: str = "", # Optional icon
|
|
156
|
+
style: dict = None,
|
|
157
|
+
class_name: str = "",
|
|
158
|
+
key: str = None
|
|
159
|
+
) -> None
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Colors
|
|
163
|
+
|
|
164
|
+
| Color | Border | Text |
|
|
165
|
+
|-------|--------|------|
|
|
166
|
+
| `"blue"` | `border-blue-500` | `text-blue-400` |
|
|
167
|
+
| `"green"` | `border-green-500` | `text-green-400` |
|
|
168
|
+
| `"red"` | `border-red-500` | `text-red-400` |
|
|
169
|
+
| `"yellow"` | `border-yellow-500` | `text-yellow-400` |
|
|
170
|
+
| `"purple"` | `border-purple-500` | `text-purple-400` |
|
|
171
|
+
|
|
172
|
+
#### Example
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
col1, col2, col3, col4 = st.columns(4)
|
|
176
|
+
|
|
177
|
+
with col1:
|
|
178
|
+
stat_card(label="Within Threshold", value="4", color="green")
|
|
179
|
+
with col2:
|
|
180
|
+
stat_card(label="Above (Risk)", value="2", color="red")
|
|
181
|
+
with col3:
|
|
182
|
+
stat_card(label="Below (Underutil)", value="1", color="yellow")
|
|
183
|
+
with col4:
|
|
184
|
+
stat_card(label="Avg OEE", value="78.4%", color="blue")
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
### 4. Metric Row
|
|
190
|
+
|
|
191
|
+
A key-value display row.
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
metric_row(
|
|
195
|
+
label: str, # Left-side label
|
|
196
|
+
value: str, # Right-side value
|
|
197
|
+
value_color: str = "", # Tailwind text color class
|
|
198
|
+
style: dict = None,
|
|
199
|
+
class_name: str = "",
|
|
200
|
+
key: str = None
|
|
201
|
+
) -> None
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### Example
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
metric_row(label="Mean", value="78.4%")
|
|
208
|
+
metric_row(label="Median", value="79.0%")
|
|
209
|
+
metric_row(label="Outliers", value="3", value_color="text-red-400")
|
|
210
|
+
metric_row(label="Trend", value="↑ +0.4%/mo", value_color="text-green-400")
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### Common Value Colors
|
|
214
|
+
|
|
215
|
+
| Color | Class |
|
|
216
|
+
|-------|-------|
|
|
217
|
+
| Green | `text-green-400` |
|
|
218
|
+
| Red | `text-red-400` |
|
|
219
|
+
| Yellow | `text-yellow-400` |
|
|
220
|
+
| Blue | `text-blue-400` |
|
|
221
|
+
| Gray | `text-slate-400` |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### 5. Data Table
|
|
226
|
+
|
|
227
|
+
A styled data table with row click support.
|
|
228
|
+
|
|
229
|
+
```python
|
|
230
|
+
data_table(
|
|
231
|
+
columns: list, # Column definitions
|
|
232
|
+
rows: list, # Row data
|
|
233
|
+
show_header: bool = True,
|
|
234
|
+
style: dict = None,
|
|
235
|
+
class_name: str = "",
|
|
236
|
+
key: str = None
|
|
237
|
+
) -> dict | None # Returns {rowIndex, rowData} on click
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### Column Definition
|
|
241
|
+
|
|
242
|
+
```python
|
|
243
|
+
columns = [
|
|
244
|
+
{"key": "name", "label": "Name"},
|
|
245
|
+
{"key": "value", "label": "Value", "align": "right", "format": "number"},
|
|
246
|
+
{"key": "percent", "label": "%", "align": "center", "format": "percent"},
|
|
247
|
+
{"key": "status", "label": "Status", "colorByValue": True}
|
|
248
|
+
]
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
| Column Key | Type | Description |
|
|
252
|
+
|------------|------|-------------|
|
|
253
|
+
| `key` | `str` | Data key in row dict |
|
|
254
|
+
| `label` | `str` | Column header text |
|
|
255
|
+
| `align` | `str` | `"left"`, `"center"`, `"right"` |
|
|
256
|
+
| `format` | `str` | `"number"` (adds commas), `"percent"` (adds %) |
|
|
257
|
+
| `colorByValue` | `bool` | Color based on status values |
|
|
258
|
+
|
|
259
|
+
#### Auto-Colored Values
|
|
260
|
+
|
|
261
|
+
When `colorByValue: True`, these values get automatic colors:
|
|
262
|
+
|
|
263
|
+
| Value | Color |
|
|
264
|
+
|-------|-------|
|
|
265
|
+
| `"above"` | Red |
|
|
266
|
+
| `"below"` | Yellow |
|
|
267
|
+
| `"within"` | Green |
|
|
268
|
+
| `"approved"` | Green |
|
|
269
|
+
| `"rejected"` | Red |
|
|
270
|
+
| `"submitted"` | Yellow |
|
|
271
|
+
| `"draft"` | Gray |
|
|
272
|
+
|
|
273
|
+
#### Example
|
|
274
|
+
|
|
275
|
+
```python
|
|
276
|
+
columns = [
|
|
277
|
+
{"key": "site", "label": "Site"},
|
|
278
|
+
{"key": "line", "label": "Line"},
|
|
279
|
+
{"key": "util", "label": "Utilization", "align": "right", "format": "percent"},
|
|
280
|
+
{"key": "volume", "label": "Volume", "align": "right", "format": "number"},
|
|
281
|
+
{"key": "status", "label": "Status", "align": "center", "colorByValue": True}
|
|
282
|
+
]
|
|
283
|
+
|
|
284
|
+
rows = [
|
|
285
|
+
{"site": "AML_14", "line": "L1", "util": 94, "volume": 125000, "status": "above"},
|
|
286
|
+
{"site": "ADL", "line": "L2", "util": 72, "volume": 98000, "status": "within"},
|
|
287
|
+
{"site": "Devens", "line": "L3", "util": 58, "volume": 45000, "status": "below"}
|
|
288
|
+
]
|
|
289
|
+
|
|
290
|
+
clicked = data_table(columns=columns, rows=rows)
|
|
291
|
+
|
|
292
|
+
if clicked:
|
|
293
|
+
st.write(f"Selected row {clicked['rowIndex']}: {clicked['rowData']}")
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
### 6. Step Indicator
|
|
299
|
+
|
|
300
|
+
A multi-step wizard progress indicator.
|
|
301
|
+
|
|
302
|
+
```python
|
|
303
|
+
step_indicator(
|
|
304
|
+
steps: list, # List of step labels
|
|
305
|
+
current_step: int, # Current step (1-indexed)
|
|
306
|
+
style: dict = None,
|
|
307
|
+
class_name: str = "",
|
|
308
|
+
key: str = None
|
|
309
|
+
) -> int | None # Returns clicked step number
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
#### Example
|
|
313
|
+
|
|
314
|
+
```python
|
|
315
|
+
if "step" not in st.session_state:
|
|
316
|
+
st.session_state.step = 1
|
|
317
|
+
|
|
318
|
+
clicked = step_indicator(
|
|
319
|
+
steps=["Supply Plan", "Configure Levers", "Review & Submit"],
|
|
320
|
+
current_step=st.session_state.step
|
|
321
|
+
)
|
|
322
|
+
|
|
323
|
+
if clicked:
|
|
324
|
+
st.session_state.step = clicked
|
|
325
|
+
st.rerun()
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
#### Visual States
|
|
329
|
+
|
|
330
|
+
| State | Appearance |
|
|
331
|
+
|-------|------------|
|
|
332
|
+
| Completed (< current) | Green circle with ✓ |
|
|
333
|
+
| Current | Blue circle with number |
|
|
334
|
+
| Future (> current) | Gray circle with number |
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
### 7. Button Group
|
|
339
|
+
|
|
340
|
+
A group of action buttons.
|
|
341
|
+
|
|
342
|
+
```python
|
|
343
|
+
button_group(
|
|
344
|
+
buttons: list, # List of button configs
|
|
345
|
+
style: dict = None,
|
|
346
|
+
class_name: str = "",
|
|
347
|
+
key: str = None
|
|
348
|
+
) -> str | None # Returns clicked button ID
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### Button Definition
|
|
352
|
+
|
|
353
|
+
```python
|
|
354
|
+
buttons = [
|
|
355
|
+
{"id": "view", "icon": "👁️"},
|
|
356
|
+
{"id": "edit", "icon": "✏️", "label": "Edit"},
|
|
357
|
+
{"id": "approve", "icon": "✓", "color": "green"},
|
|
358
|
+
{"id": "reject", "icon": "✕", "color": "red", "disabled": True}
|
|
359
|
+
]
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
| Button Key | Type | Description |
|
|
363
|
+
|------------|------|-------------|
|
|
364
|
+
| `id` | `str` | Unique identifier (returned on click) |
|
|
365
|
+
| `label` | `str` | Button text (optional) |
|
|
366
|
+
| `icon` | `str` | Emoji/icon (optional) |
|
|
367
|
+
| `color` | `str` | `"blue"`, `"green"`, `"red"`, `"yellow"`, `"purple"`, `"slate"` |
|
|
368
|
+
| `disabled` | `bool` | Disable the button |
|
|
369
|
+
|
|
370
|
+
#### Example
|
|
371
|
+
|
|
372
|
+
```python
|
|
373
|
+
clicked = button_group(
|
|
374
|
+
buttons=[
|
|
375
|
+
{"id": "view", "icon": "👁️", "label": "View"},
|
|
376
|
+
{"id": "edit", "icon": "✏️", "label": "Edit"},
|
|
377
|
+
{"id": "delete", "icon": "🗑️", "color": "red"}
|
|
378
|
+
]
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
if clicked == "delete":
|
|
382
|
+
st.warning("Delete clicked!")
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
### 8. Chart Legend
|
|
388
|
+
|
|
389
|
+
A legend for charts with colored indicators.
|
|
390
|
+
|
|
391
|
+
```python
|
|
392
|
+
chart_legend(
|
|
393
|
+
items: list, # List of legend items
|
|
394
|
+
style: dict = None,
|
|
395
|
+
class_name: str = "",
|
|
396
|
+
key: str = None
|
|
397
|
+
) -> None
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
#### Items Format
|
|
401
|
+
|
|
402
|
+
```python
|
|
403
|
+
items = [
|
|
404
|
+
{"color": "#94a3b8", "label": "Historical"},
|
|
405
|
+
{"color": "#ef4444", "label": "Outlier"},
|
|
406
|
+
{"color": "#8b5cf6", "label": "Prophet"},
|
|
407
|
+
{"color": "#10b981", "label": "ARIMA"}
|
|
408
|
+
]
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
#### Example
|
|
412
|
+
|
|
413
|
+
```python
|
|
414
|
+
# Display a chart (using st.line_chart, plotly, etc.)
|
|
415
|
+
st.line_chart(data)
|
|
416
|
+
|
|
417
|
+
# Add legend below
|
|
418
|
+
chart_legend(
|
|
419
|
+
items=[
|
|
420
|
+
{"color": "#3b82f6", "label": "Actual"},
|
|
421
|
+
{"color": "#ef4444", "label": "Upper Threshold"},
|
|
422
|
+
{"color": "#eab308", "label": "Lower Threshold"},
|
|
423
|
+
{"color": "#8b5cf6", "label": "Forecast"}
|
|
424
|
+
]
|
|
425
|
+
)
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
### 9. Form Select
|
|
431
|
+
|
|
432
|
+
A styled dropdown select input.
|
|
433
|
+
|
|
434
|
+
```python
|
|
435
|
+
form_select(
|
|
436
|
+
label: str, # Label text
|
|
437
|
+
options: list, # Options list
|
|
438
|
+
value: str = "", # Selected value
|
|
439
|
+
groups: list = None, # Option groups (for optgroup)
|
|
440
|
+
style: dict = None,
|
|
441
|
+
class_name: str = "",
|
|
442
|
+
key: str = None
|
|
443
|
+
) -> str # Returns selected value
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
#### Simple Options
|
|
447
|
+
|
|
448
|
+
```python
|
|
449
|
+
options = ["Option A", "Option B", "Option C"]
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
#### Options with Labels
|
|
453
|
+
|
|
454
|
+
```python
|
|
455
|
+
options = [
|
|
456
|
+
{"value": "a", "label": "Option A"},
|
|
457
|
+
{"value": "b", "label": "Option B"}
|
|
458
|
+
]
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
#### Grouped Options
|
|
462
|
+
|
|
463
|
+
```python
|
|
464
|
+
groups = [
|
|
465
|
+
{"label": "Baselines", "options": ["Baseline v7", "Baseline v6"]},
|
|
466
|
+
{"label": "Scenarios", "options": ["Q2 Demand Surge", "OEE Initiative"]}
|
|
467
|
+
]
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
#### Example
|
|
471
|
+
|
|
472
|
+
```python
|
|
473
|
+
# Simple
|
|
474
|
+
site = form_select(
|
|
475
|
+
label="Site",
|
|
476
|
+
options=["AML_14", "ADL", "Devens"],
|
|
477
|
+
value="AML_14"
|
|
478
|
+
)
|
|
479
|
+
|
|
480
|
+
# With groups
|
|
481
|
+
scenario = form_select(
|
|
482
|
+
label="Base On",
|
|
483
|
+
groups=[
|
|
484
|
+
{"label": "Baselines", "options": ["Baseline v7 (Current)", "Baseline v6"]},
|
|
485
|
+
{"label": "Scenarios", "options": ["Q2 Demand Surge", "OEE Initiative"]}
|
|
486
|
+
],
|
|
487
|
+
class_name="max-w-xs"
|
|
488
|
+
)
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
### 10. Form Slider
|
|
494
|
+
|
|
495
|
+
A styled range slider input.
|
|
496
|
+
|
|
497
|
+
```python
|
|
498
|
+
form_slider(
|
|
499
|
+
label: str, # Label text
|
|
500
|
+
value: float, # Current value
|
|
501
|
+
min_val: float, # Minimum value
|
|
502
|
+
max_val: float, # Maximum value
|
|
503
|
+
step: float = 1, # Step increment
|
|
504
|
+
unit: str = "", # Unit suffix (e.g., "%", "hrs")
|
|
505
|
+
color: str = "blue", # Value display color
|
|
506
|
+
style: dict = None,
|
|
507
|
+
class_name: str = "",
|
|
508
|
+
key: str = None
|
|
509
|
+
) -> float # Returns current value
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
#### Example
|
|
513
|
+
|
|
514
|
+
```python
|
|
515
|
+
# Percentage slider
|
|
516
|
+
threshold = form_slider(
|
|
517
|
+
label="Upper Threshold",
|
|
518
|
+
value=90,
|
|
519
|
+
min_val=75,
|
|
520
|
+
max_val=100,
|
|
521
|
+
unit="%",
|
|
522
|
+
color="red"
|
|
523
|
+
)
|
|
524
|
+
|
|
525
|
+
# Time slider
|
|
526
|
+
hold_time = form_slider(
|
|
527
|
+
label="VPHP Hold Time",
|
|
528
|
+
value=5.0,
|
|
529
|
+
min_val=2.0,
|
|
530
|
+
max_val=8.0,
|
|
531
|
+
step=0.5,
|
|
532
|
+
unit=" hrs",
|
|
533
|
+
color="blue"
|
|
534
|
+
)
|
|
535
|
+
|
|
536
|
+
# Batch size
|
|
537
|
+
batch = form_slider(
|
|
538
|
+
label="Batch Size",
|
|
539
|
+
value=500,
|
|
540
|
+
min_val=200,
|
|
541
|
+
max_val=1000,
|
|
542
|
+
step=25,
|
|
543
|
+
color="green"
|
|
544
|
+
)
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
---
|
|
548
|
+
|
|
549
|
+
### 11. Checkbox Group
|
|
550
|
+
|
|
551
|
+
A group of checkboxes.
|
|
552
|
+
|
|
553
|
+
```python
|
|
554
|
+
checkbox_group(
|
|
555
|
+
items: list, # List of checkbox items
|
|
556
|
+
label: str = "", # Optional group label
|
|
557
|
+
style: dict = None,
|
|
558
|
+
class_name: str = "",
|
|
559
|
+
key: str = None
|
|
560
|
+
) -> list # Returns list of checked item IDs
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
#### Items Format
|
|
564
|
+
|
|
565
|
+
```python
|
|
566
|
+
items = [
|
|
567
|
+
{"id": "opt1", "label": "Option 1", "checked": True},
|
|
568
|
+
{"id": "opt2", "label": "Option 2", "checked": True},
|
|
569
|
+
{"id": "opt3", "label": "Option 3"} # checked defaults to False
|
|
570
|
+
]
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
#### Example
|
|
574
|
+
|
|
575
|
+
```python
|
|
576
|
+
selected = checkbox_group(
|
|
577
|
+
label="Parameters to Optimize",
|
|
578
|
+
items=[
|
|
579
|
+
{"id": "vphp", "label": "VPHP Hold Time", "checked": True},
|
|
580
|
+
{"id": "lot_co", "label": "Lot Changeover", "checked": True},
|
|
581
|
+
{"id": "campaign_co", "label": "Campaign Changeover"},
|
|
582
|
+
{"id": "batch", "label": "Batch Size"}
|
|
583
|
+
]
|
|
584
|
+
)
|
|
585
|
+
|
|
586
|
+
st.write(f"Selected parameters: {selected}")
|
|
587
|
+
# Output: ['vphp', 'lot_co']
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
---
|
|
591
|
+
|
|
592
|
+
## Complete Example App
|
|
593
|
+
|
|
594
|
+
```python
|
|
595
|
+
import streamlit as st
|
|
596
|
+
from streamlit_react_components import (
|
|
597
|
+
section_header, stat_card, data_table,
|
|
598
|
+
form_select, form_slider, checkbox_group
|
|
599
|
+
)
|
|
600
|
+
|
|
601
|
+
st.set_page_config(page_title="Dashboard", layout="wide")
|
|
602
|
+
|
|
603
|
+
# Header
|
|
604
|
+
action = section_header(
|
|
605
|
+
title="Production Dashboard",
|
|
606
|
+
icon="🏭",
|
|
607
|
+
actions=[{"id": "refresh", "label": "Refresh", "color": "blue"}]
|
|
608
|
+
)
|
|
609
|
+
|
|
610
|
+
# Stats row
|
|
611
|
+
col1, col2, col3 = st.columns(3)
|
|
612
|
+
with col1:
|
|
613
|
+
stat_card(label="Lines Active", value="12", color="green")
|
|
614
|
+
with col2:
|
|
615
|
+
stat_card(label="At Risk", value="3", color="red")
|
|
616
|
+
with col3:
|
|
617
|
+
stat_card(label="Avg Utilization", value="82%", color="blue")
|
|
618
|
+
|
|
619
|
+
# Filters
|
|
620
|
+
st.markdown("### Filters")
|
|
621
|
+
col1, col2 = st.columns(2)
|
|
622
|
+
with col1:
|
|
623
|
+
site = form_select(label="Site", options=["All", "AML", "ADL", "Devens"])
|
|
624
|
+
with col2:
|
|
625
|
+
threshold = form_slider(label="Risk Threshold", value=90, min_val=80, max_val=100, unit="%")
|
|
626
|
+
|
|
627
|
+
# Data table
|
|
628
|
+
st.markdown("### Lines Overview")
|
|
629
|
+
clicked = data_table(
|
|
630
|
+
columns=[
|
|
631
|
+
{"key": "line", "label": "Line"},
|
|
632
|
+
{"key": "util", "label": "Utilization", "format": "percent", "align": "right"},
|
|
633
|
+
{"key": "status", "label": "Status", "colorByValue": True}
|
|
634
|
+
],
|
|
635
|
+
rows=[
|
|
636
|
+
{"line": "L1", "util": 94, "status": "above"},
|
|
637
|
+
{"line": "L2", "util": 82, "status": "within"},
|
|
638
|
+
{"line": "L3", "util": 65, "status": "below"}
|
|
639
|
+
]
|
|
640
|
+
)
|
|
641
|
+
|
|
642
|
+
if clicked:
|
|
643
|
+
st.info(f"Selected: {clicked['rowData']['line']}")
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## Tailwind CSS Classes Reference
|
|
649
|
+
|
|
650
|
+
Since components use Tailwind CSS, here are commonly used classes:
|
|
651
|
+
|
|
652
|
+
### Spacing
|
|
653
|
+
- `p-1` to `p-8`: Padding
|
|
654
|
+
- `m-1` to `m-8`: Margin
|
|
655
|
+
- `mt-4`, `mb-4`, `ml-4`, `mr-4`: Directional margin
|
|
656
|
+
|
|
657
|
+
### Layout
|
|
658
|
+
- `w-full`: Full width
|
|
659
|
+
- `max-w-xs`, `max-w-sm`, `max-w-md`: Max width
|
|
660
|
+
- `flex`, `grid`: Display types
|
|
661
|
+
- `gap-2`, `gap-4`: Gap between items
|
|
662
|
+
|
|
663
|
+
### Colors (Dark Theme)
|
|
664
|
+
- `bg-slate-900`, `bg-slate-800`: Backgrounds
|
|
665
|
+
- `text-white`, `text-slate-400`: Text colors
|
|
666
|
+
- `border-slate-700`: Border colors
|
|
667
|
+
|
|
668
|
+
### Effects
|
|
669
|
+
- `rounded`, `rounded-lg`: Border radius
|
|
670
|
+
- `shadow`, `shadow-lg`: Box shadows
|
|
671
|
+
- `opacity-50`: Transparency
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## License
|
|
676
|
+
|
|
677
|
+
MIT
|
{streamlit_react_components-0.1.0.dist-info → streamlit_react_components-0.1.1.dist-info}/RECORD
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
streamlit_react_components/__init__.py,sha256=UFqSg3IlXb1-E_PgJQFEUh-MWjoooGz1Gyq_kVlibBk,635
|
|
2
|
-
streamlit_react_components/_frontend/index.css,sha256=
|
|
2
|
+
streamlit_react_components/_frontend/index.css,sha256=bGjKlFP0M9oZjCZxs5LhgGVI9XaWBJw9CIuvuR8G48E,26096
|
|
3
3
|
streamlit_react_components/_frontend/index.html,sha256=CjBEtVYlgT_q06BE16EHFrUrJZ6z0MCprrTg7qgAWzw,381
|
|
4
4
|
streamlit_react_components/_frontend/index.js,sha256=nXjpPEeTg84ip8r1yLUa9m5402XqPV93UBas4rnYrvk,328827
|
|
5
5
|
streamlit_react_components/common/__init__.py,sha256=WEyVUIRkwspYAyll6fhuoBGD5HKVQpBLR9CjYEQqyu8,491
|
|
@@ -15,7 +15,7 @@ streamlit_react_components/form/__init__.py,sha256=XP9oBEHSwLTNqu88sYm0F_n828yzP
|
|
|
15
15
|
streamlit_react_components/form/checkbox_group.py,sha256=NLNJW1Ql60PnFj0FdH6Q0gUAGx2NOVNI9geIG-NG8G4,1779
|
|
16
16
|
streamlit_react_components/form/form_select.py,sha256=KILKVUO-Elb0nqbTEImxyoGQQrnZ_jft30iJSbY5ksk,1946
|
|
17
17
|
streamlit_react_components/form/form_slider.py,sha256=iRkPr4hg1vpsNjFF8paZ3jRb3hA1iU3Jp7WairZD_t4,1730
|
|
18
|
-
streamlit_react_components-0.1.
|
|
19
|
-
streamlit_react_components-0.1.
|
|
20
|
-
streamlit_react_components-0.1.
|
|
21
|
-
streamlit_react_components-0.1.
|
|
18
|
+
streamlit_react_components-0.1.1.dist-info/METADATA,sha256=Z7-lMK1ICGUSwjVgnWdTEYNM_uPDrzYR6iM2rudP3q0,15815
|
|
19
|
+
streamlit_react_components-0.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
20
|
+
streamlit_react_components-0.1.1.dist-info/top_level.txt,sha256=3JFrl15-Uewx3BFMSzqrBufF9GmTS1LDKfShmg0R9VE,27
|
|
21
|
+
streamlit_react_components-0.1.1.dist-info/RECORD,,
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: streamlit-react-components
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Reusable React-based Streamlit components with Tailwind CSS styling
|
|
5
|
-
License: MIT
|
|
6
|
-
Project-URL: Homepage, https://github.com/your-org/streamlit-react-components
|
|
7
|
-
Classifier: Development Status :: 3 - Alpha
|
|
8
|
-
Classifier: Intended Audience :: Developers
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
-
Requires-Python: >=3.8
|
|
17
|
-
Description-Content-Type: text/markdown
|
|
18
|
-
Requires-Dist: streamlit>=1.24.0
|
{streamlit_react_components-0.1.0.dist-info → streamlit_react_components-0.1.1.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|