@hahnpro/flow-cli 2.17.20 → 2025.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/utils.mjs DELETED
@@ -1,217 +0,0 @@
1
- import chalk from 'chalk';
2
- import fs from 'node:fs/promises';
3
- import path from 'node:path';
4
-
5
- const defaultLogger = {
6
- /* eslint-disable no-console */
7
- log: console.log,
8
- error: console.error,
9
- ok: console.info,
10
- /* eslint-enable no-console */
11
- };
12
-
13
- export function checkTypes(definedTypes, propertiesSchema, jsonPath, logger1 = defaultLogger) {
14
- const knownTypes = new Set([
15
- ...definedTypes,
16
- 'string',
17
- 'undefined',
18
- 'number',
19
- 'boolean',
20
- 'any',
21
- 'object',
22
- 'array',
23
- 'integer',
24
- 'Asset',
25
- 'AssetType',
26
- 'Flow',
27
- 'Secret',
28
- 'TimeSeries',
29
- ]);
30
-
31
- // check if all types are known
32
- const properties = propertiesSchema.properties || {};
33
- for (const property of Object.keys(properties)) {
34
- if (properties[property].type && !knownTypes.has(properties[property].type)) {
35
- logger1.error(
36
- `ERROR: unknown type ${properties[property].type}.
37
- Please add a schema for this type in ${jsonPath}
38
- for more info check the documentation`,
39
- );
40
- return false;
41
- }
42
- }
43
- return true;
44
- }
45
-
46
- export async function getTypes(filePath) {
47
- try {
48
- const json = JSON.parse(await fs.readFile(path.join(process.cwd(), filePath)));
49
- return json.definitions ? Object.keys(json.definitions) : [];
50
- } catch {
51
- return [];
52
- }
53
- }
54
-
55
- export async function handleConvertedOutput(result, jsonPath, json, logger1 = defaultLogger) {
56
- let schema;
57
- try {
58
- schema = JSON.parse(result);
59
- } catch {
60
- logger1.error(result);
61
- return json;
62
- }
63
-
64
- const values = [
65
- ['propertiesSchema', 'Properties'],
66
- ['inputStreams', 'InputProperties'],
67
- ['outputStreams', 'OutputProperties'],
68
- ];
69
-
70
- for (const value of values) {
71
- const propertiesSchema = schema[value[1]] || {};
72
- for (const requestProperty of propertiesSchema.required || []) {
73
- propertiesSchema.properties[requestProperty] = { ...propertiesSchema.properties[requestProperty], required: true };
74
- }
75
- // remove required field
76
- delete propertiesSchema.required;
77
-
78
- const types = await getTypes(jsonPath);
79
- checkTypes(types, propertiesSchema, jsonPath);
80
-
81
- const completeSchema = {
82
- schema: {
83
- type: 'object',
84
- properties: {
85
- ...propertiesSchema.properties,
86
- },
87
- },
88
- };
89
-
90
- if (value[0] === 'propertiesSchema') {
91
- if (!json['propertiesSchema']) {
92
- json['propertiesSchema'] = completeSchema;
93
- }
94
- } else {
95
- // check if config for default input/output stream exists
96
- if (!json[value[0]].some((v) => v.name === 'default') && propertiesSchema) {
97
- json[value[0]].push({
98
- name: 'default',
99
- ...completeSchema,
100
- });
101
- }
102
- }
103
- }
104
-
105
- // add definitions
106
- if (Object.keys(schema).some((key) => !['Properties', 'InputProperties', 'OutputProperties'].includes(key))) {
107
- const typeDefinitions = Object.keys(schema).filter((key) => !['Properties', 'InputProperties', 'OutputProperties'].includes(key));
108
- json.definitions = typeDefinitions.reduce((previousValue, currentValue) => {
109
- const additionalSchema = schema[currentValue];
110
- for (const requestProperty of additionalSchema.required || []) {
111
- additionalSchema.properties[requestProperty] = { ...additionalSchema.properties[requestProperty], required: true };
112
- }
113
- delete additionalSchema.required;
114
- previousValue[currentValue] = additionalSchema;
115
- return previousValue;
116
- }, {});
117
- }
118
- return json;
119
- }
120
-
121
- export function prepareTsFile(file) {
122
- // if a class extends another and does not have its own fields no metadata is generated and so no schema can be generated
123
- // in this case replace empty block with the block it inherits from
124
- let codeBlocks = getCodeBlocks(file);
125
- const emptyExtendsBlock = codeBlocks.find((block) => blockDefinitionIncludes(block, 'extends') && isBlockEmpty(block));
126
- if (emptyExtendsBlock) {
127
- // replace block and remove extends
128
- let replBlock = `${emptyExtendsBlock}`;
129
- if (replBlock.replace(/\s\s+/g, ' ').trim().startsWith('class OutputProperties')) {
130
- // remove extends
131
- replBlock = replBlock.replace('extends InputProperties', '');
132
- // replace block with InputProperties block
133
- const inputPropertiesBlock = codeBlocks.find(
134
- (v) => blockDefinitionIncludes(v, 'InputProperties') && !blockDefinitionIncludes(v, 'OutputProperties'),
135
- );
136
- replBlock = replBlock.replace(getBlockContent(replBlock), getBlockContent(inputPropertiesBlock));
137
-
138
- file = file.replace(emptyExtendsBlock, replBlock);
139
- }
140
- }
141
- return (
142
- `import { validationMetadatasToSchemas as v } from 'class-validator-jsonschema';\n` +
143
- `import { defaultMetadataStorage as classTransformerDefaultMetadataStorage } from 'class-transformer/cjs/storage';\n` +
144
- `${file}\n` +
145
- `const s = v({\n
146
- additionalConverters: {\n
147
- UnitArgsValidator: (meta) => {\n
148
- return {\n
149
- measure: meta.constraints[0],\n
150
- unit: meta.constraints[1],\n
151
- type: 'number',\n
152
- };\n
153
- },\n
154
- },\n
155
- classTransformerMetadataStorage\n
156
- });\n` +
157
- `console.log(JSON.stringify(s));`
158
- );
159
- }
160
-
161
- export function getCodeBlocks(string_) {
162
- const blocks = [];
163
- let counter = 0;
164
- let start = 0;
165
- let lastNewline = 0;
166
- for (const [index, char] of [...string_].entries()) {
167
- if (char === '\n') {
168
- lastNewline = index;
169
- }
170
- if (char === '{') {
171
- if (counter === 0) {
172
- // first bracket of block
173
- start = lastNewline;
174
- }
175
- counter++;
176
- } else if (char === '}') {
177
- counter--;
178
- if (counter === 0) {
179
- // last bracket of block
180
- blocks.push(string_.slice(start, index + 1));
181
- }
182
- }
183
- }
184
- return blocks;
185
- }
186
-
187
- export const logger = {
188
- /* eslint-disable no-console */
189
- log: console.log,
190
- error: (message) => console.log(chalk.bold.red(message)),
191
- ok: (message) => console.log(chalk.bold.green(message)),
192
- /* eslint-enable no-console */
193
- };
194
-
195
- export function handleApiError(error) {
196
- if (error.isAxiosError && error.response) {
197
- logger.error(`${error.response.status} ${error.response.statusText}`);
198
- if (error.response.data) {
199
- logger.error(JSON.stringify(error.response.data));
200
- }
201
- } else {
202
- logger.error(error);
203
- }
204
- }
205
-
206
- function blockDefinitionIncludes(block, value) {
207
- return block.trim().split('\n', 1)[0].includes(value);
208
- }
209
-
210
- function getBlockContent(block) {
211
- return block.slice(block.indexOf('{'), block.lastIndexOf('}') + 1);
212
- }
213
-
214
- function isBlockEmpty(block) {
215
- const blockContent = block.slice(block.indexOf('{') + 1, block.lastIndexOf('}'));
216
- return !blockContent.trim();
217
- }
@@ -1 +0,0 @@
1
- /*! tailwindcss v3.0.23 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{-webkit-print-color-adjust:exact;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;color-adjust:exact;padding-right:2.5rem}[multiple]{-webkit-print-color-adjust:unset;background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;color-adjust:unset;padding-right:.75rem}[type=checkbox],[type=radio]{-webkit-print-color-adjust:exact;--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-width:1px;color:#2563eb;color-adjust:exact;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px auto -webkit-focus-ring-color}*,:after,:before{--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-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:rgba(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: }.form-input,.form-multiselect,.form-select,.form-textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.form-input:focus,.form-multiselect:focus,.form-select:focus,.form-textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}.form-input::-moz-placeholder,.form-textarea::-moz-placeholder{color:#6b7280;opacity:1}.form-input:-ms-input-placeholder,.form-textarea:-ms-input-placeholder{color:#6b7280;opacity:1}.form-input::placeholder,.form-textarea::placeholder{color:#6b7280;opacity:1}.form-input::-webkit-datetime-edit-fields-wrapper{padding:0}.form-input::-webkit-date-and-time-value{min-height:1.5em}.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-meridiem-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-second-field,.form-input::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}.separate{align-items:center;display:flex;text-align:center}.separate:after,.separate:before{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));content:"";flex:1 1 0%}.separate:not(:empty):after{margin-left:.5rem}.separate:not(:empty):before{margin-right:.5rem}.button-wrapper{padding-top:1rem}.button-wrapper,.card{display:flex;justify-content:center}.card{flex-direction:column;min-height:100vh;width:100%}.card>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.card{background-color:hsla(0,0%,100%,.7);padding:2rem 2rem 2.5rem}@media (min-width:768px){.card{--tw-drop-shadow:drop-shadow(0 10px 8px rgba(0,0,0,.04)) drop-shadow(0 4px 3px rgba(0,0,0,.1));background-color:hsla(0,0%,100%,.9);border-radius:.5rem;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);min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}}.logo{background-image:url(logo_hpc.png);background-position:50%;background-repeat:no-repeat;background-size:contain;height:5rem;width:5rem}.logo.keycloak{background-image:url(logo_keycloak.svg)}.logo.sealed{background-image:url(logo_sealed.png);height:4rem;width:4rem}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.top-1\/2{top:50%}.left-3{left:.75rem}.left-0{left:0}.bottom-0{bottom:0}.-left-4{left:-1rem}.m-0{margin:0}.m-4{margin:1rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mr-1{margin-right:.25rem}.mb-6{margin-bottom:1.5rem}.mb-4{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-screen{height:100vh}.h-full{height:100%}.h-4{height:1rem}.h-6{height:1.5rem}.max-h-80{max-height:20rem}.min-h-screen{min-height:100vh}.min-h-min{min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.w-full{width:100%}.w-screen{width:100vw}.w-4{width:1rem}.w-6{width:1.5rem}.max-w-6xl{max-width:72rem}.max-w-2xl{max-width:42rem}.max-w-xs{max-width:20rem}.flex-grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(3rem*var(--tw-space-y-reverse));margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)))}.overflow-y-scroll{overflow-y:scroll}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-white\/50{border-color:hsla(0,0%,100%,.5)}.border-primary-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.bg-white\/70{background-color:hsla(0,0%,100%,.7)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-slate-50{--tw-gradient-from:#f8fafc;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(248,250,252,0))}.to-slate-300{--tw-gradient-to:#cbd5e1}.p-8{padding:2rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.pb-10{padding-bottom:2.5rem}.pt-8{padding-top:2rem}.pb-6{padding-bottom:1.5rem}.pl-14{padding-left:3.5rem}.pt-4{padding-top:1rem}.pt-1{padding-top:.25rem}.text-center{text-align:center}.text-sm{font-size:.875rem;line-height:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.leading-none{line-height:1}.leading-loose{line-height:2}.text-primary-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-primary-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.placeholder-slate-600::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(71 85 105/var(--tw-placeholder-opacity))}.placeholder-slate-600:-ms-input-placeholder{--tw-placeholder-opacity:1;color:rgb(71 85 105/var(--tw-placeholder-opacity))}.placeholder-slate-600::placeholder{--tw-placeholder-opacity:1;color:rgb(71 85 105/var(--tw-placeholder-opacity))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(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)}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.hover\:text-primary-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.focus\:border-slate-700:focus{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-primary-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.focus\:ring-slate-700:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.focus\:ring-slate-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity:0.5}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}@media (min-width:768px){.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:min-h-min{min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.md\:max-w-lg{max-width:32rem}.md\:max-w-md{max-width:28rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.md\:rounded-lg{border-radius:.5rem}.md\:bg-white\/90{background-color:hsla(0,0%,100%,.9)}.md\:py-16{padding-bottom:4rem;padding-top:4rem}.md\:drop-shadow-lg{--tw-drop-shadow:drop-shadow(0 10px 8px rgba(0,0,0,.04)) drop-shadow(0 4px 3px rgba(0,0,0,.1));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)}}
File without changes