@explorer02/cfm-survey-sdk 0.3.8 → 0.4.0
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/dist/cli/index.js +35 -35
- package/dist/cli/index.mjs +35 -35
- package/package.json +1 -1
- package/templates/docs/templates/CsatMatrixScale.tsx +60 -45
- package/templates/docs/templates/CustomSliderTrack.tsx +2 -2
- package/templates/docs/templates/Header.tsx +14 -13
- package/templates/docs/templates/LikertMatrixScale.tsx +2 -2
- package/templates/docs/templates/Question.tsx +31 -13
- package/templates/docs/templates/RankOrderScale.tsx +10 -2
- package/templates/docs/templates/SliderMatrixScale.tsx +3 -4
- package/templates/docs/templates/uiConfig.ts +89 -2
- package/templates/preview-harness/preview-bridge.inline.js +55 -15
- package/templates/preview-harness/previewPages.js +2 -2
- package/templates/preview-harness/previewPages.ts +1 -1
- package/templates/preview-harness/vite-app/src/PreviewConfigContext.tsx +8 -1
- package/templates/preview-harness/vite-app/src/QuestionPreview.tsx +17 -96
- package/templates/preview-harness/vite-app/src/SurveyPagePreview.tsx +32 -8
- package/templates/preview-harness/vite-app/src/fixtures/questions.ts +72 -47
- package/templates/preview-harness/vite-app/src/globals.css +6 -0
- package/templates/preview-harness/vite-app/src/mergePreviewQuestion.ts +173 -0
- package/templates/preview-harness/vite-app/src/preview-live-overrides.css +22 -0
- package/templates/previewBridge.ts +61 -14
- package/templates/survey-theme.css +4 -1
- package/templates/wizard-dist/assets/{PreviewMock-CS4WqhDB.js → PreviewMock-BlOAvUCN.js} +1 -1
- package/templates/wizard-dist/assets/TypePanel-DcbMaw1b.js +1 -0
- package/templates/wizard-dist/assets/index-2Bi_7Fdh.js +34 -0
- package/templates/wizard-dist/index.html +1 -1
- package/templates/wizard-dist/assets/TypePanel-BgTW2c74.js +0 -1
- package/templates/wizard-dist/assets/index-hjm-fxWO.js +0 -34
package/dist/cli/index.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var it=Object.defineProperty;var Pe=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(o,t)=>(typeof require<"u"?require:o)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var z=(e,o)=>()=>(e&&(o=e(e=0)),o);var Ie=(e,o)=>{for(var t in o)it(e,t,{get:o[t],enumerable:!0})};var l,q=z(()=>{"use strict";l={reset:"\x1B[0m",bold:"\x1B[1m",green:"\x1B[32m",red:"\x1B[31m",cyan:"\x1B[36m",yellow:"\x1B[33m",dim:"\x1B[2m"}});var J,Se=z(()=>{"use strict";J=["MCQ","TEXTFIELD","NPS_SCALE","CFM_MATRIX","CSAT_MATRIX","RATING_MATRIX","SLIDER_MATRIX","FILE_UPLOAD","TEXT_AND_MEDIA","HEATMAP","RANK_ORDER"]});function pt(e){let o={};for(let t of e)uo[t]&&(o[t]={...uo[t]});return o}function gt(e=[],o){return{version:"1.0",instanceId:o,surveyTypes:e,global:{surveyTitle:"Customer Feedback Survey",companyName:"Sprinklr",browserTabTitle:"Customer Feedback Survey",thankYouMessage:"Thank you for your valuable feedback!",logo:{fileName:null,url:null},header:{height:120,logoBoxWidth:120,logoBoxHeight:120,logoPadding:10,logoPlacement:"left",showCompanyName:!0,companyNamePlacement:"left",companyNameFontSize:18,companyNameFontWeight:600,companyNameColor:"#1A1F36",backgroundColor:"#FFFFFF",shadowEnabled:!0,borderBottomColor:"#E5E7EB",contentPaddingX:40},footer:{backgroundColor:"#262626",textColor:"#9CA3AF",linkColor:"#9CA3AF",linkHoverColor:"#FFFFFF",showLogo:!0,logoWidth:120,logoHeight:32,logoPlacement:"left",copyrightText:"\xA9 Company Name",layout:"row",paddingY:24,paddingX:40,links:[]},theme:{pageBackground:"#FFFFFF",cardBackground:"#FFFFFF",cardBorderColor:"#E5E7EB",cardPadding:24,cardShadowEnabled:!0,selectedBackground:"#E8F5FD",zebraRowColor:"rgba(249,250,251,0.8)",rowBandColor:"#F3F4F6",validationBorder:"#333333",validationBackground:"#D9D9D9",tooltipBackground:"#1F2937",progressTrackHeight:12,progressTrackColor:"#E5E7EB",progressFillColor:"#1A1F36",stickyChromePaddingTop:16,stickyChromePaddingBottom:20,languageSelectorBackground:"#FFFFFF",languageSelectorTextColor:"#2563EB",languageSelectorBorderColor:"#2563EB"},layout:{showHeader:!0,showFooter:!0,showProgressBar:!0,showLanguageSwitcher:!1,showNextButton:!0,showBackButton:!0,showQuestionNumbers:!0,showRequiredAsterisk:!0,width:"standard",borderStyle:"rounded",fontStyle:"modern"},buttons:{next:"Next",back:"Back",submit:"Submit"},colorScheme:{...v},colorSource:"auto",typography:{fontFamily:"Inter, sans-serif",headingWeight:700},motion:{enabled:!1,durationMs:200}},questionTypes:pt(e),placeholders:{firstName:"Alex",lastName:"Customer",email:"alex@example.com"},customFields:{},debug:{enabled:!1,sampleAnswers:{}},deploy:{target:"aws",autoDeploy:!1}}}function Z(e,o){return{...e,...o??{}}}function _e(e){let o=(e.surveyTypes??[]).filter(c=>J.includes(c)),t=[...new Set([...o,...J])],n=gt(t,e.instanceId),r=e.global??{},i=n.global,s={...n.questionTypes};if(e.questionTypes)for(let[c,d]of Object.entries(e.questionTypes))s[c]={...s[c]??{},...d};return{...n,...e,configuredAt:void 0,surveyTypes:o.length?o:n.surveyTypes,global:{...i,...r,header:Z(i.header,r.header),footer:Z(i.footer,r.footer),theme:Z(i.theme,r.theme),layout:Z(i.layout,r.layout),buttons:Z(i.buttons,r.buttons),logo:Z(i.logo,r.logo),colorScheme:Z(i.colorScheme,r.colorScheme),typography:Z(i.typography,r.typography),motion:Z(i.motion,r.motion)},questionTypes:s,placeholders:{...n.placeholders,...e.placeholders??{}},customFields:{...n.customFields,...e.customFields??{}},debug:{enabled:e.debug?.enabled??n.debug?.enabled??!1,sampleAnswers:e.debug?.sampleAnswers??n.debug?.sampleAnswers},deploy:{...n.deploy,...e.deploy??{}}}}var v,uo,Xe=z(()=>{"use strict";Se();v={primary:"#1A1F36",secondary:"#E8F5FD",accent:"#00B5AD",background:"#FFFFFF",text:"#1A1F36",buttonText:"#FFFFFF"},uo={MCQ:{cardStyle:"outlined",selectedAccent:v.accent,optionGap:8,borderRadius:8,cardPadding:12,selectedBackground:v.secondary,hoverBorderColor:v.accent},TEXTFIELD:{inputRadius:8,focusRing:v.accent,borderColor:"#E5E7EB",inputPadding:12,inputHeight:44,placeholderColor:"#9CA3AF"},NPS_SCALE:{buttonStyle:"standard",selectedFill:v.secondary,labelColor:v.text,trackBarColor:"#F2F2F2",trackHighlightColor:"#FBE8F3",cellSize:40,cellGap:4},CFM_MATRIX:{rowLabelWidth:180,cellSelectedColor:v.accent,headerStyle:"bold",bipolarColumnWidthPercent:25,carouselDotColor:"#2563EB",cellPadding:8},CSAT_MATRIX:{rowLabelWidth:180,cellSelectedColor:v.accent,headerStyle:"bold",bipolarColumnWidthPercent:25,carouselDotColor:v.primary,cellPadding:8,accentColor:v.accent,emojiSize:24,unselectedOpacity:.5,selectedRingColor:v.accent,cellSize:40,tooltipBg:"#1F2937",graphicsTrackColor:"#E5E7EB",graphicsThumbColor:v.accent},RATING_MATRIX:{starColor:"#F59E0B",badgeColor:v.primary,rowLabelWidth:180,unselectedStarOpacity:.5,graphicsTrackColor:"#E5E7EB",graphicsThumbColor:v.primary},SLIDER_MATRIX:{trackColor:v.accent,thumbColor:v.primary,tickColor:"#9CA3AF",rowLabelWidth:180,rowBandColor:"#F3F4F6",tickBadgeSize:28,hintMinText:"Label 1",hintMaxText:"Label 2",hintLabelColor:"#6B7280",hintLabelBgColor:"transparent"},FILE_UPLOAD:{dropzoneStyle:"dashed",accentColor:v.accent,dropzonePadding:24},TEXT_AND_MEDIA:{mediaMaxWidth:100,mediaRadius:8,captionColor:"#6B7280",captionSize:14},HEATMAP:{pinColor:v.accent,pinSize:12,pinBorderColor:"#FFFFFF",overlayOpacity:.3},RANK_ORDER:{drag:{itemBg:"#F9FAFB",dragHandleColor:"#9CA3AF",rankBadgeColor:v.primary,itemPadding:12,itemGap:8},dropdown:{itemBg:"#F9FAFB",selectBorderColor:"#E5E7EB",rankBadgeColor:v.primary,itemPadding:12,itemGap:8}}}});import*as je from"fs";import*as Te from"path";function ho(e){let o={},t=/--cfm-[\w-]+\s*:\s*([^;]+);/g,n;for(;(n=t.exec(e))!==null;){let r=n[0].split(":")[0].trim(),i=n[1].trim();o[r]=i}return o}function A(e){if(!e)return;let o=parseFloat(e.replace(/px$/,""));return Number.isFinite(o)?o:void 0}function yo(e){if(!e)return;let o=parseFloat(e.replace(/%$/,""));return Number.isFinite(o)?o:void 0}function Ce(e){if(!e)return;let o=parseFloat(e);return Number.isFinite(o)?o:void 0}function wo(e){let o={global:{},questionTypes:{}},t=o.global,n={},r={},i={},s={},c={},d={},g={},b=o.questionTypes;if(e["--cfm-primary"]&&(n.primary=e["--cfm-primary"]),e["--cfm-secondary"]&&(n.secondary=e["--cfm-secondary"]),e["--cfm-accent"]&&(n.accent=e["--cfm-accent"]),e["--cfm-background"]&&(n.background=e["--cfm-background"]),e["--cfm-text"]&&(n.text=e["--cfm-text"]),e["--cfm-button-text"]&&(n.buttonText=e["--cfm-button-text"]),e["--cfm-max-width"]&&po[e["--cfm-max-width"]]&&(c.width=po[e["--cfm-max-width"]]),e["--cfm-border-radius"]&&go[e["--cfm-border-radius"]]&&(c.borderStyle=go[e["--cfm-border-radius"]]),e["--cfm-font-family"]&&(d.fontFamily=e["--cfm-font-family"],mo[e["--cfm-font-family"]]&&(c.fontStyle=mo[e["--cfm-font-family"]])),e["--cfm-heading-weight"]&&(d.headingWeight=Ce(e["--cfm-heading-weight"])),e["--cfm-motion-duration"]){let B=A(e["--cfm-motion-duration"]);B!==void 0&&(g.durationMs=B,g.enabled=B>0)}e["--cfm-header-height"]&&(r.height=A(e["--cfm-header-height"])),e["--cfm-header-logo-width"]&&(r.logoBoxWidth=A(e["--cfm-header-logo-width"])),e["--cfm-header-logo-height"]&&(r.logoBoxHeight=A(e["--cfm-header-logo-height"])),e["--cfm-header-logo-padding"]&&(r.logoPadding=A(e["--cfm-header-logo-padding"])),e["--cfm-header-bg"]&&(r.backgroundColor=e["--cfm-header-bg"]),e["--cfm-header-company-color"]&&(r.companyNameColor=e["--cfm-header-company-color"]),e["--cfm-header-company-size"]&&(r.companyNameFontSize=A(e["--cfm-header-company-size"])),e["--cfm-header-company-weight"]&&(r.companyNameFontWeight=Ce(e["--cfm-header-company-weight"])),e["--cfm-header-border"]&&(r.borderBottomColor=e["--cfm-header-border"]),e["--cfm-header-padding-x"]&&(r.contentPaddingX=A(e["--cfm-header-padding-x"])),e["--cfm-footer-bg"]&&(i.backgroundColor=e["--cfm-footer-bg"]),e["--cfm-footer-text"]&&(i.textColor=e["--cfm-footer-text"]),e["--cfm-footer-link"]&&(i.linkColor=e["--cfm-footer-link"]),e["--cfm-footer-link-hover"]&&(i.linkHoverColor=e["--cfm-footer-link-hover"]),e["--cfm-footer-logo-width"]&&(i.logoWidth=A(e["--cfm-footer-logo-width"])),e["--cfm-footer-logo-height"]&&(i.logoHeight=A(e["--cfm-footer-logo-height"])),e["--cfm-footer-padding-y"]&&(i.paddingY=A(e["--cfm-footer-padding-y"])),e["--cfm-footer-padding-x"]&&(i.paddingX=A(e["--cfm-footer-padding-x"])),e["--cfm-background"]&&(s.pageBackground=e["--cfm-background"]),e["--cfm-card-bg"]&&(s.cardBackground=e["--cfm-card-bg"]),e["--cfm-card-border-color"]&&(s.cardBorderColor=e["--cfm-card-border-color"]),e["--cfm-card-padding"]&&(s.cardPadding=A(e["--cfm-card-padding"])),e["--cfm-card-shadow"]&&(s.cardShadowEnabled=e["--cfm-card-shadow"]!=="none"),e["--cfm-selected-bg"]&&(s.selectedBackground=e["--cfm-selected-bg"]),e["--cfm-zebra-row"]&&(s.zebraRowColor=e["--cfm-zebra-row"]),e["--cfm-row-band"]&&(s.rowBandColor=e["--cfm-row-band"]),e["--cfm-validation-border"]&&(s.validationBorder=e["--cfm-validation-border"]),e["--cfm-validation-bg"]&&(s.validationBackground=e["--cfm-validation-bg"]),e["--cfm-tooltip-bg"]&&(s.tooltipBackground=e["--cfm-tooltip-bg"]),e["--cfm-progress-height"]&&(s.progressTrackHeight=A(e["--cfm-progress-height"])),e["--cfm-progress-track"]&&(s.progressTrackColor=e["--cfm-progress-track"]),e["--cfm-progress-fill"]&&(s.progressFillColor=e["--cfm-progress-fill"]),e["--cfm-sticky-pt"]&&(s.stickyChromePaddingTop=A(e["--cfm-sticky-pt"])),e["--cfm-sticky-pb"]&&(s.stickyChromePaddingBottom=A(e["--cfm-sticky-pb"]));let S={};e["--cfm-mcq-selected-accent"]&&(S.selectedAccent=e["--cfm-mcq-selected-accent"]),e["--cfm-mcq-border-radius"]&&(S.borderRadius=A(e["--cfm-mcq-border-radius"])),e["--cfm-mcq-option-gap"]&&(S.optionGap=A(e["--cfm-mcq-option-gap"])),e["--cfm-mcq-card-padding"]&&(S.cardPadding=A(e["--cfm-mcq-card-padding"])),e["--cfm-mcq-selected-bg"]&&(S.selectedBackground=e["--cfm-mcq-selected-bg"]),e["--cfm-mcq-hover-border"]&&(S.hoverBorderColor=e["--cfm-mcq-hover-border"]),Object.keys(S).length&&(b.MCQ=S);let x={};e["--cfm-input-radius"]&&(x.inputRadius=A(e["--cfm-input-radius"])),e["--cfm-input-focus-ring"]&&(x.focusRing=e["--cfm-input-focus-ring"]),e["--cfm-input-border"]&&(x.borderColor=e["--cfm-input-border"]),e["--cfm-input-padding"]&&(x.inputPadding=A(e["--cfm-input-padding"])),e["--cfm-input-height"]&&(x.inputHeight=A(e["--cfm-input-height"])),e["--cfm-input-placeholder"]&&(x.placeholderColor=e["--cfm-input-placeholder"]),Object.keys(x).length&&(b.TEXTFIELD=x);let k={};e["--cfm-nps-selected-fill"]&&(k.selectedFill=e["--cfm-nps-selected-fill"]),e["--cfm-nps-label-color"]&&(k.labelColor=e["--cfm-nps-label-color"]),e["--cfm-nps-track-bar"]&&(k.trackBarColor=e["--cfm-nps-track-bar"]),e["--cfm-nps-track-highlight"]&&(k.trackHighlightColor=e["--cfm-nps-track-highlight"]),e["--cfm-nps-cell-size"]&&(k.cellSize=A(e["--cfm-nps-cell-size"])),e["--cfm-nps-cell-gap"]&&(k.cellGap=A(e["--cfm-nps-cell-gap"])),Object.keys(k).length&&(b.NPS_SCALE=k);let E=A(e["--cfm-matrix-row-width"]),$={};E!==void 0&&($.rowLabelWidth=E),e["--cfm-matrix-selected"]&&($.cellSelectedColor=e["--cfm-matrix-selected"]),e["--cfm-matrix-bipolar-width"]&&($.bipolarColumnWidthPercent=yo(e["--cfm-matrix-bipolar-width"])),e["--cfm-matrix-carousel-dot"]&&($.carouselDotColor=e["--cfm-matrix-carousel-dot"]),e["--cfm-matrix-cell-padding"]&&($.cellPadding=A(e["--cfm-matrix-cell-padding"])),Object.keys($).length&&(b.CFM_MATRIX=$);let f={...$};e["--cfm-csat-accent"]&&(f.accentColor=e["--cfm-csat-accent"]),e["--cfm-csat-emoji-size"]&&(f.emojiSize=A(e["--cfm-csat-emoji-size"])),e["--cfm-csat-unselected-opacity"]&&(f.unselectedOpacity=Ce(e["--cfm-csat-unselected-opacity"])),e["--cfm-csat-ring-color"]&&(f.selectedRingColor=e["--cfm-csat-ring-color"]),e["--cfm-csat-cell-size"]&&(f.cellSize=A(e["--cfm-csat-cell-size"])),e["--cfm-csat-tooltip-bg"]&&(f.tooltipBg=e["--cfm-csat-tooltip-bg"]),(Object.keys(f).length>Object.keys($).length||e["--cfm-csat-accent"])&&(b.CSAT_MATRIX=f);let y={};e["--cfm-star-color"]&&(y.starColor=e["--cfm-star-color"]),e["--cfm-badge-color"]&&(y.badgeColor=e["--cfm-badge-color"]),E!==void 0&&(y.rowLabelWidth=E),e["--cfm-star-unselected-opacity"]&&(y.unselectedStarOpacity=Ce(e["--cfm-star-unselected-opacity"])),Object.keys(y).length&&(b.RATING_MATRIX=y);let T={};e["--cfm-slider-track"]&&(T.trackColor=e["--cfm-slider-track"]),e["--cfm-slider-thumb"]&&(T.thumbColor=e["--cfm-slider-thumb"]),e["--cfm-slider-tick"]&&(T.tickColor=e["--cfm-slider-tick"]),E!==void 0&&(T.rowLabelWidth=E),e["--cfm-slider-row-band"]&&(T.rowBandColor=e["--cfm-slider-row-band"]),e["--cfm-slider-tick-size"]&&(T.tickBadgeSize=A(e["--cfm-slider-tick-size"])),Object.keys(T).length&&(b.SLIDER_MATRIX=T);let R={};e["--cfm-upload-accent"]&&(R.accentColor=e["--cfm-upload-accent"]),e["--cfm-upload-padding"]&&(R.dropzonePadding=A(e["--cfm-upload-padding"])),Object.keys(R).length&&(b.FILE_UPLOAD=R);let w={};e["--cfm-media-max-width"]&&(w.mediaMaxWidth=yo(e["--cfm-media-max-width"])),e["--cfm-media-radius"]&&(w.mediaRadius=A(e["--cfm-media-radius"])),e["--cfm-media-caption-color"]&&(w.captionColor=e["--cfm-media-caption-color"]),e["--cfm-media-caption-size"]&&(w.captionSize=A(e["--cfm-media-caption-size"])),Object.keys(w).length&&(b.TEXT_AND_MEDIA=w);let F={};e["--cfm-heatmap-pin"]&&(F.pinColor=e["--cfm-heatmap-pin"]),e["--cfm-heatmap-pin-size"]&&(F.pinSize=A(e["--cfm-heatmap-pin-size"])),e["--cfm-heatmap-pin-border"]&&(F.pinBorderColor=e["--cfm-heatmap-pin-border"]),e["--cfm-heatmap-overlay-opacity"]&&(F.overlayOpacity=Ce(e["--cfm-heatmap-overlay-opacity"])),Object.keys(F).length&&(b.HEATMAP=F);let C={};return e["--cfm-rank-item-bg"]&&(C.itemBg=e["--cfm-rank-item-bg"]),e["--cfm-rank-badge"]&&(C.rankBadgeColor=e["--cfm-rank-badge"]),e["--cfm-rank-handle"]&&(C.dragHandleColor=e["--cfm-rank-handle"]),e["--cfm-rank-item-padding"]&&(C.itemPadding=A(e["--cfm-rank-item-padding"])),e["--cfm-rank-item-gap"]&&(C.itemGap=A(e["--cfm-rank-item-gap"])),Object.keys(C).length&&(b.RANK_ORDER=C),Object.keys(n).length&&(t.colorScheme=n),Object.keys(r).length&&(t.header=r),Object.keys(i).length&&(t.footer=i),Object.keys(s).length&&(t.theme=s),Object.keys(c).length&&(t.layout=c),Object.keys(d).length&&(t.typography=d),Object.keys(g).length&&(t.motion=g),o}function fe(e){let o=[Te.join(e,"src","styles","survey-theme.css"),Te.join(e,"src","app","survey-theme.css"),Te.join(e,"src","styles","globals.css"),Te.join(e,"src","app","globals.css")];for(let t of o)if(je.existsSync(t)&&je.readFileSync(t,"utf8").includes("--cfm-"))return t;return null}var po,go,mo,De=z(()=>{"use strict";po={"36rem":"narrow","48rem":"standard","64rem":"wide"},go={"0px":"sharp","12px":"rounded","9999px":"pill"},mo={"system-ui, sans-serif":"system","Inter, sans-serif":"modern","Georgia, serif":"serif"}});import*as ve from"fs";import*as bo from"path";function yt(e){for(let o of mt){let t=bo.join(e,o);if(ve.existsSync(t))return t}return null}function ht(e){let o=e.trim();if(!o||o.startsWith("http")||o.startsWith("data:"))return null;let t=o.split("?")[0];return t.startsWith("/")?t.slice(1):t}function So(e){let o=yt(e);if(!o)return null;let t=ve.readFileSync(o,"utf8"),n=t.match(/data-cfm-logo[\s\S]*?src=["']([^"']+)["']/i)??t.match(/src=["']([^"']+)["'][\s\S]*?data-cfm-logo/i);if(n){let s=ht(n[1]);if(s)return{mode:"image",publicPath:s,fileName:s}}let r=t.match(/data-cfm-logo-text[^>]*>([^<]+)</i);if(r)return{mode:"text",label:r[1].trim()};let i=t.match(/data-cfm-company[^>]*>([^<]+)</i);return i&&!n?{mode:"text",label:i[1].trim()}:null}var mt,Co=z(()=>{"use strict";mt=["src/components/Header.tsx","components/Header.tsx","app/components/Header.tsx"]});var Ao={};Ie(Ao,{logSeedSource:()=>Ve,resolveInitialConfig:()=>pe,writeResolvedUiConfig:()=>Je});import*as G from"fs";import*as ee from"path";function He(e){return e.filter(o=>J.includes(o))}function To(e){try{let o=JSON.parse(G.readFileSync(e,"utf8"));return o.version!=="1.0"?null:(delete o.configuredAt,o)}catch{return null}}function St(e){let o={global:{}};if(!G.existsSync(e))return o;let t=G.readFileSync(e,"utf8"),n=new Set;for(let i of J)t.includes(i)&&n.add(i);n.size&&(o.surveyTypes=[...n]);let r=t.match(/\*\*Branding source:\*\*\s*(.+)/i);if(r){let i=r[1].trim(),s=i.match(/company[:\s]+([^,;]+)/i),c=i.match(/title[:\s]+([^,;]+)/i);if(s&&(o.global.companyName=s[1].trim()),c){let d=c[1].trim();o.global.surveyTitle=d,o.global.browserTabTitle=d}}return o}function $o(e,o){let t=ee.join(e,o);if(!G.existsSync(t))return null;let n=G.readFileSync(t);if(n.length>wt)return{fileName:o,dataUrl:""};let r=ee.extname(o).toLowerCase(),i=bt[r]??"application/octet-stream";return{fileName:o,dataUrl:`data:${i};base64,${n.toString("base64")}`}}function xo(e,o){if(!o)return null;if(o.url&&typeof o.url=="string")return{fileName:o.fileName??null,url:o.url};if(o.fileName){let t=$o(e,o.fileName);if(t)return{fileName:t.fileName,url:t.dataUrl||null}}return o.fileName===null&&o.url===null?{fileName:null,url:null}:null}function Ro(e,o){let t=e.global??{},n=o.global??{},r=e.questionTypes??{},i=o.questionTypes??{},s={...r};for(let[c,d]of Object.entries(i))s[c]={...s[c]??{},...d};return{...e,...o,surveyTypes:o.surveyTypes??e.surveyTypes,global:{...t,...n,header:{...t.header,...n.header},footer:{...t.footer,...n.footer},theme:{...t.theme,...n.theme},layout:{...t.layout,...n.layout},buttons:{...t.buttons,...n.buttons},logo:{...t.logo,...n.logo},colorScheme:{...t.colorScheme,...n.colorScheme},typography:{...t.typography,...n.typography},motion:{...t.motion,...n.motion}},questionTypes:s,placeholders:{...e.placeholders,...o.placeholders},customFields:{...e.customFields,...o.customFields},deploy:{...e.deploy,...o.deploy}}}function pe(e){let o=e.projectRoot??process.env.INIT_CWD??process.cwd(),t=ee.join(o,"survey-ui-config.json"),n=ee.join(o,"implementation_plan.md"),r=ee.join(o,"public"),i=He(e.surveyTypes),s={},c="defaults",d=fe(o);if(d){let C=G.readFileSync(d,"utf8"),B=ho(C);Object.keys(B).length>0&&(s=wo(B),c="survey-theme.css")}let g=St(n);s=Ro(s,g);let b=To(t);b&&(s=Ro(s,b),c="survey-ui-config.json");let S=ee.join(o,"survey-ui-config.final.json"),x=To(S),k=!!b?.configuredAt,E=!!x?.configuredAt;if(x&&E&&!k){let C=xo(r,x.global?.logo);C&&(s.global={...s.global??{},logo:{fileName:C.fileName,url:C.url}})}let $=xo(r,s.global?.logo),f=So(o),y=!!b?.configuredAt,T=$?.fileName!=null&&/^logo_\d+_/i.test($.fileName),R=f?.mode==="image"?f.fileName:null,w=!y&&T&&R!=null&&$?.fileName!==R;if($&&!w)s.global={...s.global??{},logo:{fileName:$.fileName,url:$.url}};else if(f?.mode==="image"){let C=$o(r,f.fileName);s.global={...s.global??{},logo:{fileName:f.fileName,url:C?.dataUrl||null}}}else f?.mode==="text"&&(s.global={...s.global??{},logo:{fileName:null,url:null},companyName:s.global?.companyName??f.label});return s.surveyTypes=He(s.surveyTypes??i),s.surveyTypes?.length||(s.surveyTypes=i),e.instanceId&&(s.instanceId=e.instanceId),{config:_e(s),source:c}}function Ve(e){console.log(e==="survey-ui-config.json"?`${ue.dim} Seeding wizard from survey-ui-config.json${ue.reset}`:e==="survey-theme.css"?`${ue.dim} Seeding wizard from survey-theme.css + defaults${ue.reset}`:`${ue.dim} Seeding wizard from SDK defaults${ue.reset}`)}function Je(e={}){let o=e.projectRoot??process.env.INIT_CWD??process.cwd(),t=e.surveyTypes??He(J),{config:n}=pe({projectRoot:o,surveyTypes:t,instanceId:e.instanceId}),r=ee.join(o,"survey-ui-config.json");return G.writeFileSync(r,JSON.stringify(n,null,2),"utf8"),r}var ue,wt,bt,xe=z(()=>{"use strict";q();Xe();De();Se();Co();ue=l,wt=512e3,bt={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml"}});function W(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function h(e,o){return typeof e=="number"&&Number.isFinite(e)?e:o}function a(e,o){return typeof e=="string"&&e.length?e:o}function _t(){return{"--cfm-header-brand-gap":"16px","--cfm-header-padding-y":"12px","--cfm-header-company-margin-top":"0","--cfm-header-company-margin-left":"0","--cfm-header-company-margin-right":"0","--cfm-header-logo-col":"1","--cfm-header-logo-justify":"start"}}function jt(){return{"--cfm-footer-inner-display":"grid","--cfm-footer-inner-direction":"row","--cfm-footer-logo-col":"1","--cfm-footer-logo-justify":"start","--cfm-footer-links-col":"3","--cfm-footer-links-justify":"end","--cfm-footer-logo-copyright-gap":"12px"}}function Me(e,o){o.numberLabelMode&&(e["--cfm-number-label-mode"]=a(o.numberLabelMode,"traffic")),o.monochromeNumberColor&&(e["--cfm-number-mono-color"]=a(o.monochromeNumberColor,"#9CA3AF"));let t=o.individualNumberColors;Array.isArray(t)&&t.forEach((n,r)=>{typeof n=="string"&&(e[`--cfm-number-color-${r}`]=n)})}function jo(e,o){o.hintLabelColor&&(e["--cfm-hint-label-color"]=a(o.hintLabelColor,"#6B7280")),o.hintLabelBgColor&&(e["--cfm-hint-label-bg"]=a(o.hintLabelBgColor,"transparent"))}function Be(e,o,t){(t==="matrix"||t==="csat")&&(o.columnLabelColor&&(e["--cfm-matrix-column-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-matrix-column-label-bg"]=a(o.columnLabelBgColor,"transparent"))),t==="csat"&&(o.columnLabelColor&&(e["--cfm-csat-column-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-csat-column-label-bg"]=a(o.columnLabelBgColor,"transparent"))),t==="rating"&&(o.columnLabelColor&&(e["--cfm-rating-column-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-rating-column-label-bg"]=a(o.columnLabelBgColor,"transparent"))),t==="slider"&&(o.columnLabelColor&&(e["--cfm-slider-tick-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-slider-tick-label-bg"]=a(o.columnLabelBgColor,"transparent")))}function Dt(e,o){let t=a(o.optionStyle??o.cardStyle,"outlined");e["--cfm-mcq-border-radius"]=`${h(o.borderRadius,8)}px`,e["--cfm-mcq-option-gap"]=`${h(o.optionGap,8)}px`,e["--cfm-mcq-card-padding"]=`${h(o.optionPadding??o.cardPadding,12)}px`,e["--cfm-mcq-hover-border"]=a(o.hoverBorderColor,"#00B5AD"),e["--cfm-mcq-option-style"]=t,o.filledOptionBg&&(e["--cfm-mcq-filled-bg"]=a(o.filledOptionBg,"#F9FAFB"))}function vt(e,o){e["--cfm-input-radius"]=`${h(o.inputRadius,8)}px`,e["--cfm-input-border"]=a(o.borderColor,"#E5E7EB"),e["--cfm-input-padding"]=`${h(o.inputPadding,12)}px`,e["--cfm-input-height"]=`${h(o.inputHeight,44)}px`,e["--cfm-input-placeholder"]=a(o.placeholderColor,"#9CA3AF")}function Lt(e,o){e["--cfm-nps-cell-size"]=`${h(o.cellSize,40)}px`,e["--cfm-nps-cell-gap"]=`${h(o.cellGap,4)}px`,e["--cfm-nps-button-style"]=a(o.buttonStyle,"standard"),e["--cfm-nps-selected-fill"]=a(o.selectedFill,"#E8F5FD"),e["--cfm-nps-track-bar"]=a(o.trackBarColor,"#F2F2F2"),e["--cfm-nps-track-highlight"]=a(o.trackHighlightColor,"#FBE8F3"),jo(e,o),Me(e,o)}function Mt(e,o){e["--cfm-matrix-row-width"]=`${h(o.rowLabelWidth,180)}px`,e["--cfm-matrix-bipolar-width"]=`${h(o.bipolarColumnWidthPercent,25)}%`,e["--cfm-matrix-cell-padding"]=`${h(o.cellPadding,8)}px`,o.carouselDotColor&&(e["--cfm-matrix-carousel-dot"]=a(o.carouselDotColor,"#2563EB")),Be(e,o,"matrix")}function Bt(e,o){e["--cfm-csat-emoji-size"]=`${h(o.emojiSize,24)}px`,e["--cfm-csat-unselected-opacity"]=String(h(o.unselectedOpacity,.5)),e["--cfm-star-unselected-opacity"]=String(h(o.unselectedStarOpacity??o.unselectedOpacity,.5)),e["--cfm-csat-cell-size"]=`${h(o.cellSize,40)}px`,e["--cfm-csat-tooltip-bg"]=a(o.tooltipBg,"#1F2937"),e["--cfm-csat-accent"]=a(o.accentColor,e["--cfm-accent"]??"#00B5AD"),e["--cfm-matrix-row-width"]=`${h(o.rowLabelWidth,180)}px`,e["--cfm-slider-track"]=a(o.graphicsTrackColor,"#E5E7EB"),e["--cfm-slider-thumb"]=a(o.graphicsThumbColor,e["--cfm-accent"]??"#00B5AD"),Be(e,o,"csat"),Me(e,o)}function Ot(e,o){e["--cfm-star-color"]=a(o.starColor,"#F59E0B"),e["--cfm-badge-color"]=a(o.badgeColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-csat-emoji-size"]=`${h(o.emojiSize,24)}px`,e["--cfm-star-unselected-opacity"]=String(h(o.unselectedStarOpacity,.5)),e["--cfm-csat-unselected-opacity"]=String(h(o.unselectedStarOpacity,.5)),e["--cfm-matrix-row-width"]=`${h(o.rowLabelWidth,180)}px`,e["--cfm-slider-track"]=a(o.graphicsTrackColor,"#E5E7EB"),e["--cfm-slider-thumb"]=a(o.graphicsThumbColor,e["--cfm-primary"]??"#1A1F36"),Be(e,o,"rating"),Me(e,o)}function Ut(e,o){e["--cfm-slider-track"]=a(o.trackColor,e["--cfm-accent"]??"#00B5AD"),e["--cfm-slider-thumb"]=a(o.thumbColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-slider-tick"]=a(o.tickColor,"#9CA3AF"),e["--cfm-matrix-row-width"]=`${h(o.rowLabelWidth,180)}px`,e["--cfm-slider-row-band"]=a(o.rowBandColor,e["--cfm-row-band"]??"#F3F4F6"),e["--cfm-slider-tick-size"]=`${h(o.tickBadgeSize,28)}px`,Be(e,o,"slider"),jo(e,o),Me(e,o)}function zt(e,o){e["--cfm-upload-border-color"]=a(o.borderColor??o.accentColor,"#D1D5DB"),e["--cfm-upload-padding"]=`${h(o.dropzonePadding,24)}px`,e["--cfm-upload-fill"]=a(o.dropzoneFillColor,"#F9FAFB"),e["--cfm-upload-border-style"]=a(o.dropzoneStyle,"dashed")}function qt(e,o){e["--cfm-media-max-width"]=`${h(o.mediaMaxWidth,100)}%`,e["--cfm-media-radius"]=`${h(o.mediaRadius,8)}px`,e["--cfm-media-caption-color"]=a(o.captionColor,"#6B7280"),e["--cfm-media-caption-size"]=`${h(o.captionSize,14)}px`}function Wt(e,o){e["--cfm-heatmap-pin"]=a(o.pinColor,e["--cfm-accent"]??"#00B5AD"),e["--cfm-heatmap-pin-size"]=`${h(o.pinSize,12)}px`,e["--cfm-heatmap-pin-border"]=a(o.pinBorderColor,"#FFFFFF"),e["--cfm-heatmap-overlay-opacity"]=String(h(o.overlayOpacity,0))}function Xt(e,o){let t=W(o.drag)??o,n=W(o.dropdown)??t;e["--cfm-rank-item-bg"]=a(t.itemBg,"#F9FAFB"),e["--cfm-rank-badge-bg"]=a(t.rankBadgeColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-rank-badge-text"]="#ffffff",e["--cfm-rank-badge"]=a(t.rankBadgeColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-rank-item-padding"]=`${h(t.itemPadding,12)}px`,e["--cfm-rank-item-gap"]=`${h(t.itemGap,8)}px`,e["--cfm-rank-handle"]=a(t.dragHandleColor,"#9CA3AF"),e["--cfm-rank-select-border"]=a(n.selectBorderColor,"#E5E7EB")}function Oe(e){let o=W(e.global)??{},t=W(o.colorScheme)??{},n=W(o.header)??{},r=W(o.footer)??{},i=W(o.theme)??{},s=W(o.layout)??{},c=W(o.typography)??{},d=W(o.motion)??{},g=e.questionTypes??{},b=a(s.fontStyle,"modern"),S=_o[b]??a(c.fontFamily,_o.modern),x=a(s.width,"standard"),k=a(s.borderStyle,"rounded"),E=a(i.cellSelectedColor,a(t.accent,"#00B5AD")),$=a(i.focusRingColor,a(t.accent,"#00B5AD")),f=a(i.selectedBackground,a(t.secondary,"#E8F5FD")),y={"--cfm-primary":a(t.primary,"#1A1F36"),"--cfm-secondary":a(t.secondary,"#E8F5FD"),"--cfm-accent":a(t.accent,"#00B5AD"),"--cfm-background":a(i.pageBackground??t.background,"#FFFFFF"),"--cfm-text":a(t.text,"#1A1F36"),"--cfm-button-text":a(t.buttonText,"#FFFFFF"),"--cfm-max-width":Io[x]??Io.standard,"--cfm-border-radius":No[k]??No.rounded,"--cfm-font-family":S,"--cfm-heading-weight":String(h(c.headingWeight,700)),"--cfm-motion-duration":`${h(d.durationMs,200)}ms`,"--cfm-header-height":`${h(n.height,120)}px`,"--cfm-header-logo-width":`${h(n.logoBoxWidth,120)}px`,"--cfm-header-logo-height":`${h(n.logoBoxHeight,120)}px`,"--cfm-header-logo-padding":`${h(n.logoPadding,10)}px`,"--cfm-header-show-company":n.showCompanyName===!1?"0":"1","--cfm-header-bg":a(n.backgroundColor,"#FFFFFF"),"--cfm-header-company-color":a(n.companyNameColor,a(t.text,"#1A1F36")),"--cfm-header-company-size":`${h(n.companyNameFontSize,18)}px`,"--cfm-header-company-weight":String(h(n.companyNameFontWeight,600)),"--cfm-header-border":a(n.borderBottomColor,"#E5E7EB"),"--cfm-header-padding-x":`${h(n.contentPaddingX,40)}px`,"--cfm-header-shadow":n.shadowEnabled===!1?"none":"0 2px 8px rgba(0,0,0,0.06)",..._t(),"--cfm-footer-bg":a(r.backgroundColor,"#262626"),"--cfm-footer-text":a(r.textColor,"#9CA3AF"),"--cfm-footer-link":a(r.linkColor,"#9CA3AF"),"--cfm-footer-link-hover":a(r.linkHoverColor,"#FFFFFF"),"--cfm-footer-logo-width":`${h(r.logoWidth,120)}px`,"--cfm-footer-logo-height":`${h(r.logoHeight,32)}px`,"--cfm-footer-padding-y":`${h(r.paddingY,24)}px`,"--cfm-footer-padding-x":`${h(r.paddingX,40)}px`,...jt(),"--cfm-card-bg":a(i.cardBackground,"#FFFFFF"),"--cfm-card-border-color":a(i.cardBorderColor,"#E5E7EB"),"--cfm-card-padding":`${h(i.cardPadding,24)}px`,"--cfm-card-gap":"32px","--cfm-card-shadow":i.cardShadowEnabled===!1?"none":`0 ${h(i.cardShadowOffsetY,1)}px ${h(i.cardShadowBlur,3)}px ${a(i.cardShadowColor,"rgba(0,0,0,0.1)")}`,"--cfm-selected-bg":f,"--cfm-mcq-selected-accent":$,"--cfm-mcq-selected-bg":f,"--cfm-matrix-selected":E,"--cfm-csat-ring-color":E,"--cfm-input-focus-ring":$,"--cfm-zebra-row":a(i.zebraRowColor,"rgba(249,250,251,0.8)"),"--cfm-row-band":a(i.rowBandColor,"#F3F4F6"),"--cfm-validation-border":a(i.validationBorder,"#333333"),"--cfm-validation-bg":a(i.validationBackground,"#D9D9D9"),"--cfm-tooltip-bg":a(i.tooltipBackground,"#1F2937"),"--cfm-progress-height":`${h(i.progressTrackHeight,12)}px`,"--cfm-progress-track":a(i.progressTrackColor,"#E5E7EB"),"--cfm-progress-fill":a(i.progressFillColor,a(t.primary,"#1A1F36")),"--cfm-sticky-pt":`${h(i.stickyChromePaddingTop,16)}px`,"--cfm-sticky-pb":`${h(i.stickyChromePaddingBottom,20)}px`,"--cfm-language-bg":a(i.languageSelectorBackground,"#FFFFFF"),"--cfm-language-text":a(i.languageSelectorTextColor,"#2563EB"),"--cfm-language-border":a(i.languageSelectorBorderColor,"#2563EB")},T=[["MCQ",Dt],["TEXTFIELD",vt],["NPS_SCALE",Lt],["CFM_MATRIX",Mt],["CSAT_MATRIX",Bt],["RATING_MATRIX",Ot],["SLIDER_MATRIX",Ut],["FILE_UPLOAD",zt],["TEXT_AND_MEDIA",qt],["HEATMAP",Wt],["RANK_ORDER",Xt]];for(let[R,w]of T){let F=W(g[R]);F&&w(y,F)}return y}function Ze(e){let o=e.questionTypes??{},t=W(o.MCQ),n=W(o.NPS_SCALE),r=W(o.FILE_UPLOAD),i={};return i["data-cfm-mcq-style"]=a(t?.optionStyle??t?.cardStyle,"outlined"),n?.buttonStyle&&(i["data-cfm-nps-button-style"]=a(n.buttonStyle,"standard")),r?.dropzoneStyle&&(i["data-cfm-dropzone-style"]=a(r.dropzoneStyle,"dashed")),i}var Io,No,_o,eo=z(()=>{"use strict";Io={narrow:"36rem",standard:"48rem",wide:"64rem"},No={sharp:"0px",rounded:"12px",pill:"9999px"},_o={system:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',inter:"Inter, system-ui, sans-serif",modern:"Inter, sans-serif",roboto:"Roboto, system-ui, sans-serif",openSans:'"Open Sans", system-ui, sans-serif',lato:"Lato, system-ui, sans-serif",poppins:"Poppins, system-ui, sans-serif",montserrat:"Montserrat, system-ui, sans-serif",nunito:"Nunito, system-ui, sans-serif",raleway:"Raleway, system-ui, sans-serif",sourceSans:'"Source Sans 3", system-ui, sans-serif',georgia:'Georgia, "Times New Roman", serif',serif:"Georgia, serif",merriweather:"Merriweather, Georgia, serif",playfair:'"Playfair Display", Georgia, serif'}});import*as oe from"fs";import*as se from"path";function Ht(e){return`:root {
|
|
2
|
+
var it=Object.defineProperty;var Pe=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(o,t)=>(typeof require<"u"?require:o)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var z=(e,o)=>()=>(e&&(o=e(e=0)),o);var Ie=(e,o)=>{for(var t in o)it(e,t,{get:o[t],enumerable:!0})};var l,q=z(()=>{"use strict";l={reset:"\x1B[0m",bold:"\x1B[1m",green:"\x1B[32m",red:"\x1B[31m",cyan:"\x1B[36m",yellow:"\x1B[33m",dim:"\x1B[2m"}});var J,Se=z(()=>{"use strict";J=["MCQ","TEXTFIELD","NPS_SCALE","CFM_MATRIX","CSAT_MATRIX","RATING_MATRIX","SLIDER_MATRIX","FILE_UPLOAD","TEXT_AND_MEDIA","HEATMAP","RANK_ORDER"]});function pt(e){let o={};for(let t of e)uo[t]&&(o[t]={...uo[t]});return o}function gt(e=[],o){return{version:"1.0",instanceId:o,surveyTypes:e,global:{surveyTitle:"Customer Feedback Survey",companyName:"Sprinklr",browserTabTitle:"Customer Feedback Survey",thankYouMessage:"Thank you for your valuable feedback!",logo:{fileName:null,url:null},header:{height:120,logoBoxWidth:120,logoBoxHeight:120,logoPadding:10,logoPlacement:"left",showCompanyName:!0,companyNamePlacement:"left",companyNameFontSize:18,companyNameFontWeight:600,companyNameColor:"#1A1F36",backgroundColor:"#FFFFFF",shadowEnabled:!0,borderBottomColor:"#E5E7EB",contentPaddingX:40},footer:{backgroundColor:"#262626",textColor:"#9CA3AF",linkColor:"#9CA3AF",linkHoverColor:"#FFFFFF",showLogo:!0,logoWidth:120,logoHeight:32,logoPlacement:"left",copyrightText:"\xA9 Company Name",layout:"row",paddingY:21,paddingX:40,links:[]},theme:{pageBackground:"#FFFFFF",cardBackground:"#FFFFFF",cardBorderColor:"#E5E7EB",cardPadding:24,cardShadowEnabled:!0,selectedBackground:"#E8F5FD",zebraRowColor:"rgba(249,250,251,0.8)",rowBandColor:"#F3F4F6",validationBorder:"#333333",validationBackground:"#D9D9D9",tooltipBackground:"#1F2937",progressTrackHeight:12,progressTrackColor:"#E5E7EB",progressFillColor:"#1A1F36",stickyChromePaddingTop:16,stickyChromePaddingBottom:20,languageSelectorBackground:"#FFFFFF",languageSelectorTextColor:"#2563EB",languageSelectorBorderColor:"#2563EB"},layout:{showHeader:!0,showFooter:!0,showProgressBar:!0,showLanguageSwitcher:!1,showNextButton:!0,showBackButton:!0,showQuestionNumbers:!0,showRequiredAsterisk:!0,width:"standard",borderStyle:"rounded",fontStyle:"modern"},buttons:{next:"Next",back:"Back",submit:"Submit"},colorScheme:{...D},colorSource:"auto",typography:{fontFamily:"Inter, sans-serif",headingWeight:700},motion:{enabled:!1,durationMs:200}},questionTypes:pt(e),placeholders:{firstName:"Alex",lastName:"Customer",email:"alex@example.com"},customFields:{},debug:{enabled:!1,sampleAnswers:{}},deploy:{target:"aws",autoDeploy:!1}}}function Z(e,o){return{...e,...o??{}}}function je(e){let o=(e.surveyTypes??[]).filter(c=>J.includes(c)),t=[...new Set([...o,...J])],n=gt(t,e.instanceId),r=e.global??{},i=n.global,s={...n.questionTypes};if(e.questionTypes)for(let[c,d]of Object.entries(e.questionTypes))s[c]={...s[c]??{},...d};return{...n,...e,configuredAt:void 0,surveyTypes:o.length?o:n.surveyTypes,global:{...i,...r,header:Z(i.header,r.header),footer:Z(i.footer,r.footer),theme:Z(i.theme,r.theme),layout:Z(i.layout,r.layout),buttons:Z(i.buttons,r.buttons),logo:Z(i.logo,r.logo),colorScheme:Z(i.colorScheme,r.colorScheme),typography:Z(i.typography,r.typography),motion:Z(i.motion,r.motion)},questionTypes:s,placeholders:{...n.placeholders,...e.placeholders??{}},customFields:{...n.customFields,...e.customFields??{}},debug:{enabled:e.debug?.enabled??n.debug?.enabled??!1,sampleAnswers:e.debug?.sampleAnswers??n.debug?.sampleAnswers},deploy:{...n.deploy,...e.deploy??{}}}}var D,uo,We=z(()=>{"use strict";Se();D={primary:"#1A1F36",secondary:"#E8F5FD",accent:"#00B5AD",background:"#FFFFFF",text:"#1A1F36",buttonText:"#FFFFFF"},uo={MCQ:{cardStyle:"outlined",selectedAccent:D.accent,optionGap:8,borderRadius:8,cardPadding:12,selectedBackground:D.secondary,hoverBorderColor:D.accent},TEXTFIELD:{inputRadius:8,focusRing:D.accent,borderColor:"#E5E7EB",inputPadding:12,inputHeight:44,placeholderColor:"#9CA3AF"},NPS_SCALE:{buttonStyle:"standard",selectedFill:D.secondary,labelColor:D.text,trackBarColor:"#F2F2F2",trackHighlightColor:"#FBE8F3",cellSize:40,cellGap:4},CFM_MATRIX:{rowLabelWidth:180,cellSelectedColor:D.accent,headerStyle:"bold",bipolarColumnWidthPercent:25,carouselDotColor:"#2563EB",cellPadding:8},CSAT_MATRIX:{rowLabelWidth:180,cellSelectedColor:D.accent,headerStyle:"bold",bipolarColumnWidthPercent:25,carouselDotColor:D.primary,cellPadding:8,accentColor:D.accent,emojiSize:24,unselectedOpacity:.5,selectedRingColor:D.accent,cellSize:40,tooltipBg:"#1F2937",graphicsTrackColor:"#E5E7EB",graphicsThumbColor:D.accent},RATING_MATRIX:{starColor:"#F59E0B",badgeColor:D.primary,rowLabelWidth:180,unselectedStarOpacity:.5,graphicsTrackColor:"#E5E7EB",graphicsThumbColor:D.primary},SLIDER_MATRIX:{trackColor:D.accent,thumbColor:D.primary,tickColor:"#9CA3AF",rowLabelWidth:180,rowBandColor:"#F3F4F6",tickBadgeSize:28,hintMinText:"Label 1",hintMaxText:"Label 2",hintLabelColor:"#6B7280",hintLabelBgColor:"transparent"},FILE_UPLOAD:{dropzoneStyle:"dashed",accentColor:D.accent,dropzonePadding:24},TEXT_AND_MEDIA:{mediaMaxWidth:100,mediaRadius:8,captionColor:"#6B7280",captionSize:14},HEATMAP:{pinColor:D.accent,pinSize:12,pinBorderColor:"#FFFFFF",overlayOpacity:.3},RANK_ORDER:{drag:{itemBg:"#F9FAFB",itemHoverBg:"#F3F4F6",dragHandleColor:"#9CA3AF",rankBadgeColor:D.primary,itemPadding:12,itemGap:8},dropdown:{itemBg:"#F9FAFB",selectBorderColor:"#E5E7EB",rankBadgeColor:D.primary,itemPadding:12,itemGap:8,itemHoverBg:"#F3F4F6"}}}});import*as _e from"fs";import*as Te from"path";function ho(e){let o={},t=/--cfm-[\w-]+\s*:\s*([^;]+);/g,n;for(;(n=t.exec(e))!==null;){let r=n[0].split(":")[0].trim(),i=n[1].trim();o[r]=i}return o}function A(e){if(!e)return;let o=parseFloat(e.replace(/px$/,""));return Number.isFinite(o)?o:void 0}function yo(e){if(!e)return;let o=parseFloat(e.replace(/%$/,""));return Number.isFinite(o)?o:void 0}function Ce(e){if(!e)return;let o=parseFloat(e);return Number.isFinite(o)?o:void 0}function wo(e){let o={global:{},questionTypes:{}},t=o.global,n={},r={},i={},s={},c={},d={},m={},g=o.questionTypes;if(e["--cfm-primary"]&&(n.primary=e["--cfm-primary"]),e["--cfm-secondary"]&&(n.secondary=e["--cfm-secondary"]),e["--cfm-accent"]&&(n.accent=e["--cfm-accent"]),e["--cfm-background"]&&(n.background=e["--cfm-background"]),e["--cfm-text"]&&(n.text=e["--cfm-text"]),e["--cfm-button-text"]&&(n.buttonText=e["--cfm-button-text"]),e["--cfm-max-width"]&&po[e["--cfm-max-width"]]&&(c.width=po[e["--cfm-max-width"]]),e["--cfm-border-radius"]&&go[e["--cfm-border-radius"]]&&(c.borderStyle=go[e["--cfm-border-radius"]]),e["--cfm-font-family"]&&(d.fontFamily=e["--cfm-font-family"],mo[e["--cfm-font-family"]]&&(c.fontStyle=mo[e["--cfm-font-family"]])),e["--cfm-heading-weight"]&&(d.headingWeight=Ce(e["--cfm-heading-weight"])),e["--cfm-motion-duration"]){let B=A(e["--cfm-motion-duration"]);B!==void 0&&(m.durationMs=B,m.enabled=B>0)}e["--cfm-header-height"]&&(r.height=A(e["--cfm-header-height"])),e["--cfm-header-logo-width"]&&(r.logoBoxWidth=A(e["--cfm-header-logo-width"])),e["--cfm-header-logo-height"]&&(r.logoBoxHeight=A(e["--cfm-header-logo-height"])),e["--cfm-header-logo-padding"]&&(r.logoPadding=A(e["--cfm-header-logo-padding"])),e["--cfm-header-bg"]&&(r.backgroundColor=e["--cfm-header-bg"]),e["--cfm-header-company-color"]&&(r.companyNameColor=e["--cfm-header-company-color"]),e["--cfm-header-company-size"]&&(r.companyNameFontSize=A(e["--cfm-header-company-size"])),e["--cfm-header-company-weight"]&&(r.companyNameFontWeight=Ce(e["--cfm-header-company-weight"])),e["--cfm-header-border"]&&(r.borderBottomColor=e["--cfm-header-border"]),e["--cfm-header-padding-x"]&&(r.contentPaddingX=A(e["--cfm-header-padding-x"])),e["--cfm-footer-bg"]&&(i.backgroundColor=e["--cfm-footer-bg"]),e["--cfm-footer-text"]&&(i.textColor=e["--cfm-footer-text"]),e["--cfm-footer-link"]&&(i.linkColor=e["--cfm-footer-link"]),e["--cfm-footer-link-hover"]&&(i.linkHoverColor=e["--cfm-footer-link-hover"]),e["--cfm-footer-logo-width"]&&(i.logoWidth=A(e["--cfm-footer-logo-width"])),e["--cfm-footer-logo-height"]&&(i.logoHeight=A(e["--cfm-footer-logo-height"])),e["--cfm-footer-padding-y"]&&(i.paddingY=A(e["--cfm-footer-padding-y"])),e["--cfm-footer-padding-x"]&&(i.paddingX=A(e["--cfm-footer-padding-x"])),e["--cfm-background"]&&(s.pageBackground=e["--cfm-background"]),e["--cfm-card-bg"]&&(s.cardBackground=e["--cfm-card-bg"]),e["--cfm-card-border-color"]&&(s.cardBorderColor=e["--cfm-card-border-color"]),e["--cfm-card-padding"]&&(s.cardPadding=A(e["--cfm-card-padding"])),e["--cfm-card-shadow"]&&(s.cardShadowEnabled=e["--cfm-card-shadow"]!=="none"),e["--cfm-selected-bg"]&&(s.selectedBackground=e["--cfm-selected-bg"]),e["--cfm-zebra-row"]&&(s.zebraRowColor=e["--cfm-zebra-row"]),e["--cfm-row-band"]&&(s.rowBandColor=e["--cfm-row-band"]),e["--cfm-validation-border"]&&(s.validationBorder=e["--cfm-validation-border"]),e["--cfm-validation-bg"]&&(s.validationBackground=e["--cfm-validation-bg"]),e["--cfm-tooltip-bg"]&&(s.tooltipBackground=e["--cfm-tooltip-bg"]),e["--cfm-progress-height"]&&(s.progressTrackHeight=A(e["--cfm-progress-height"])),e["--cfm-progress-track"]&&(s.progressTrackColor=e["--cfm-progress-track"]),e["--cfm-progress-fill"]&&(s.progressFillColor=e["--cfm-progress-fill"]),e["--cfm-sticky-pt"]&&(s.stickyChromePaddingTop=A(e["--cfm-sticky-pt"])),e["--cfm-sticky-pb"]&&(s.stickyChromePaddingBottom=A(e["--cfm-sticky-pb"]));let S={};e["--cfm-mcq-selected-accent"]&&(S.selectedAccent=e["--cfm-mcq-selected-accent"]),e["--cfm-mcq-border-radius"]&&(S.borderRadius=A(e["--cfm-mcq-border-radius"])),e["--cfm-mcq-option-gap"]&&(S.optionGap=A(e["--cfm-mcq-option-gap"])),e["--cfm-mcq-card-padding"]&&(S.cardPadding=A(e["--cfm-mcq-card-padding"])),e["--cfm-mcq-selected-bg"]&&(S.selectedBackground=e["--cfm-mcq-selected-bg"]),e["--cfm-mcq-hover-border"]&&(S.hoverBorderColor=e["--cfm-mcq-hover-border"]),Object.keys(S).length&&(g.MCQ=S);let x={};e["--cfm-input-radius"]&&(x.inputRadius=A(e["--cfm-input-radius"])),e["--cfm-input-focus-ring"]&&(x.focusRing=e["--cfm-input-focus-ring"]),e["--cfm-input-border"]&&(x.borderColor=e["--cfm-input-border"]),e["--cfm-input-padding"]&&(x.inputPadding=A(e["--cfm-input-padding"])),e["--cfm-input-height"]&&(x.inputHeight=A(e["--cfm-input-height"])),e["--cfm-input-placeholder"]&&(x.placeholderColor=e["--cfm-input-placeholder"]),Object.keys(x).length&&(g.TEXTFIELD=x);let k={};e["--cfm-nps-selected-fill"]&&(k.selectedFill=e["--cfm-nps-selected-fill"]),e["--cfm-nps-label-color"]&&(k.labelColor=e["--cfm-nps-label-color"]),e["--cfm-nps-track-bar"]&&(k.trackBarColor=e["--cfm-nps-track-bar"]),e["--cfm-nps-track-highlight"]&&(k.trackHighlightColor=e["--cfm-nps-track-highlight"]),e["--cfm-nps-cell-size"]&&(k.cellSize=A(e["--cfm-nps-cell-size"])),e["--cfm-nps-cell-gap"]&&(k.cellGap=A(e["--cfm-nps-cell-gap"])),Object.keys(k).length&&(g.NPS_SCALE=k);let E=A(e["--cfm-matrix-row-width"]),R={};E!==void 0&&(R.rowLabelWidth=E),e["--cfm-matrix-selected"]&&(R.cellSelectedColor=e["--cfm-matrix-selected"]),e["--cfm-matrix-bipolar-width"]&&(R.bipolarColumnWidthPercent=yo(e["--cfm-matrix-bipolar-width"])),e["--cfm-matrix-carousel-dot"]&&(R.carouselDotColor=e["--cfm-matrix-carousel-dot"]),e["--cfm-matrix-cell-padding"]&&(R.cellPadding=A(e["--cfm-matrix-cell-padding"])),Object.keys(R).length&&(g.CFM_MATRIX=R);let p={...R};e["--cfm-csat-accent"]&&(p.accentColor=e["--cfm-csat-accent"]),e["--cfm-csat-emoji-size"]&&(p.emojiSize=A(e["--cfm-csat-emoji-size"])),e["--cfm-csat-unselected-opacity"]&&(p.unselectedOpacity=Ce(e["--cfm-csat-unselected-opacity"])),e["--cfm-csat-ring-color"]&&(p.selectedRingColor=e["--cfm-csat-ring-color"]),e["--cfm-csat-cell-size"]&&(p.cellSize=A(e["--cfm-csat-cell-size"])),e["--cfm-csat-tooltip-bg"]&&(p.tooltipBg=e["--cfm-csat-tooltip-bg"]),(Object.keys(p).length>Object.keys(R).length||e["--cfm-csat-accent"])&&(g.CSAT_MATRIX=p);let h={};e["--cfm-star-color"]&&(h.starColor=e["--cfm-star-color"]),e["--cfm-badge-color"]&&(h.badgeColor=e["--cfm-badge-color"]),E!==void 0&&(h.rowLabelWidth=E),e["--cfm-star-unselected-opacity"]&&(h.unselectedStarOpacity=Ce(e["--cfm-star-unselected-opacity"])),Object.keys(h).length&&(g.RATING_MATRIX=h);let T={};e["--cfm-slider-track"]&&(T.trackColor=e["--cfm-slider-track"]),e["--cfm-slider-thumb"]&&(T.thumbColor=e["--cfm-slider-thumb"]),e["--cfm-slider-tick"]&&(T.tickColor=e["--cfm-slider-tick"]),E!==void 0&&(T.rowLabelWidth=E),e["--cfm-slider-row-band"]&&(T.rowBandColor=e["--cfm-slider-row-band"]),e["--cfm-slider-tick-size"]&&(T.tickBadgeSize=A(e["--cfm-slider-tick-size"])),Object.keys(T).length&&(g.SLIDER_MATRIX=T);let $={};e["--cfm-upload-accent"]&&($.accentColor=e["--cfm-upload-accent"]),e["--cfm-upload-padding"]&&($.dropzonePadding=A(e["--cfm-upload-padding"])),Object.keys($).length&&(g.FILE_UPLOAD=$);let b={};e["--cfm-media-max-width"]&&(b.mediaMaxWidth=yo(e["--cfm-media-max-width"])),e["--cfm-media-radius"]&&(b.mediaRadius=A(e["--cfm-media-radius"])),e["--cfm-media-caption-color"]&&(b.captionColor=e["--cfm-media-caption-color"]),e["--cfm-media-caption-size"]&&(b.captionSize=A(e["--cfm-media-caption-size"])),Object.keys(b).length&&(g.TEXT_AND_MEDIA=b);let F={};e["--cfm-heatmap-pin"]&&(F.pinColor=e["--cfm-heatmap-pin"]),e["--cfm-heatmap-pin-size"]&&(F.pinSize=A(e["--cfm-heatmap-pin-size"])),e["--cfm-heatmap-pin-border"]&&(F.pinBorderColor=e["--cfm-heatmap-pin-border"]),e["--cfm-heatmap-overlay-opacity"]&&(F.overlayOpacity=Ce(e["--cfm-heatmap-overlay-opacity"])),Object.keys(F).length&&(g.HEATMAP=F);let C={};return e["--cfm-rank-item-bg"]&&(C.itemBg=e["--cfm-rank-item-bg"]),e["--cfm-rank-badge"]&&(C.rankBadgeColor=e["--cfm-rank-badge"]),e["--cfm-rank-handle"]&&(C.dragHandleColor=e["--cfm-rank-handle"]),e["--cfm-rank-item-padding"]&&(C.itemPadding=A(e["--cfm-rank-item-padding"])),e["--cfm-rank-item-gap"]&&(C.itemGap=A(e["--cfm-rank-item-gap"])),Object.keys(C).length&&(g.RANK_ORDER=C),Object.keys(n).length&&(t.colorScheme=n),Object.keys(r).length&&(t.header=r),Object.keys(i).length&&(t.footer=i),Object.keys(s).length&&(t.theme=s),Object.keys(c).length&&(t.layout=c),Object.keys(d).length&&(t.typography=d),Object.keys(m).length&&(t.motion=m),o}function fe(e){let o=[Te.join(e,"src","styles","survey-theme.css"),Te.join(e,"src","app","survey-theme.css"),Te.join(e,"src","styles","globals.css"),Te.join(e,"src","app","globals.css")];for(let t of o)if(_e.existsSync(t)&&_e.readFileSync(t,"utf8").includes("--cfm-"))return t;return null}var po,go,mo,ve=z(()=>{"use strict";po={"36rem":"narrow","48rem":"standard","64rem":"wide"},go={"0px":"sharp","12px":"rounded","9999px":"pill"},mo={"system-ui, sans-serif":"system","Inter, sans-serif":"modern","Georgia, serif":"serif"}});import*as De from"fs";import*as bo from"path";function yt(e){for(let o of mt){let t=bo.join(e,o);if(De.existsSync(t))return t}return null}function ht(e){let o=e.trim();if(!o||o.startsWith("http")||o.startsWith("data:"))return null;let t=o.split("?")[0];return t.startsWith("/")?t.slice(1):t}function So(e){let o=yt(e);if(!o)return null;let t=De.readFileSync(o,"utf8"),n=t.match(/data-cfm-logo[\s\S]*?src=["']([^"']+)["']/i)??t.match(/src=["']([^"']+)["'][\s\S]*?data-cfm-logo/i);if(n){let s=ht(n[1]);if(s)return{mode:"image",publicPath:s,fileName:s}}let r=t.match(/data-cfm-logo-text[^>]*>([^<]+)</i);if(r)return{mode:"text",label:r[1].trim()};let i=t.match(/data-cfm-company[^>]*>([^<]+)</i);return i&&!n?{mode:"text",label:i[1].trim()}:null}var mt,Co=z(()=>{"use strict";mt=["src/components/Header.tsx","components/Header.tsx","app/components/Header.tsx"]});var Ao={};Ie(Ao,{logSeedSource:()=>He,resolveInitialConfig:()=>pe,writeResolvedUiConfig:()=>Ve});import*as G from"fs";import*as ee from"path";function Xe(e){return e.filter(o=>J.includes(o))}function To(e){try{let o=JSON.parse(G.readFileSync(e,"utf8"));return o.version!=="1.0"?null:(delete o.configuredAt,o)}catch{return null}}function St(e){let o={global:{}};if(!G.existsSync(e))return o;let t=G.readFileSync(e,"utf8"),n=new Set;for(let i of J)t.includes(i)&&n.add(i);n.size&&(o.surveyTypes=[...n]);let r=t.match(/\*\*Branding source:\*\*\s*(.+)/i);if(r){let i=r[1].trim(),s=i.match(/company[:\s]+([^,;]+)/i),c=i.match(/title[:\s]+([^,;]+)/i);if(s&&(o.global.companyName=s[1].trim()),c){let d=c[1].trim();o.global.surveyTitle=d,o.global.browserTabTitle=d}}return o}function Ro(e,o){let t=ee.join(e,o);if(!G.existsSync(t))return null;let n=G.readFileSync(t);if(n.length>wt)return{fileName:o,dataUrl:""};let r=ee.extname(o).toLowerCase(),i=bt[r]??"application/octet-stream";return{fileName:o,dataUrl:`data:${i};base64,${n.toString("base64")}`}}function xo(e,o){if(!o)return null;if(o.url&&typeof o.url=="string")return{fileName:o.fileName??null,url:o.url};if(o.fileName){let t=Ro(e,o.fileName);if(t)return{fileName:t.fileName,url:t.dataUrl||null}}return o.fileName===null&&o.url===null?{fileName:null,url:null}:null}function $o(e,o){let t=e.global??{},n=o.global??{},r=e.questionTypes??{},i=o.questionTypes??{},s={...r};for(let[c,d]of Object.entries(i))s[c]={...s[c]??{},...d};return{...e,...o,surveyTypes:o.surveyTypes??e.surveyTypes,global:{...t,...n,header:{...t.header,...n.header},footer:{...t.footer,...n.footer},theme:{...t.theme,...n.theme},layout:{...t.layout,...n.layout},buttons:{...t.buttons,...n.buttons},logo:{...t.logo,...n.logo},colorScheme:{...t.colorScheme,...n.colorScheme},typography:{...t.typography,...n.typography},motion:{...t.motion,...n.motion}},questionTypes:s,placeholders:{...e.placeholders,...o.placeholders},customFields:{...e.customFields,...o.customFields},deploy:{...e.deploy,...o.deploy}}}function pe(e){let o=e.projectRoot??process.env.INIT_CWD??process.cwd(),t=ee.join(o,"survey-ui-config.json"),n=ee.join(o,"implementation_plan.md"),r=ee.join(o,"public"),i=Xe(e.surveyTypes),s={},c="defaults",d=fe(o);if(d){let C=G.readFileSync(d,"utf8"),B=ho(C);Object.keys(B).length>0&&(s=wo(B),c="survey-theme.css")}let m=St(n);s=$o(s,m);let g=To(t);g&&(s=$o(s,g),c="survey-ui-config.json");let S=ee.join(o,"survey-ui-config.final.json"),x=To(S),k=!!g?.configuredAt,E=!!x?.configuredAt;if(x&&E&&!k){let C=xo(r,x.global?.logo);C&&(s.global={...s.global??{},logo:{fileName:C.fileName,url:C.url}})}let R=xo(r,s.global?.logo),p=So(o),h=!!g?.configuredAt,T=R?.fileName!=null&&/^logo_\d+_/i.test(R.fileName),$=p?.mode==="image"?p.fileName:null,b=!h&&T&&$!=null&&R?.fileName!==$;if(R&&!b)s.global={...s.global??{},logo:{fileName:R.fileName,url:R.url}};else if(p?.mode==="image"){let C=Ro(r,p.fileName);s.global={...s.global??{},logo:{fileName:p.fileName,url:C?.dataUrl||null}}}else p?.mode==="text"&&(s.global={...s.global??{},logo:{fileName:null,url:null},companyName:s.global?.companyName??p.label});return s.surveyTypes=Xe(s.surveyTypes??i),s.surveyTypes?.length||(s.surveyTypes=i),e.instanceId&&(s.instanceId=e.instanceId),{config:je(s),source:c}}function He(e){console.log(e==="survey-ui-config.json"?`${ue.dim} Seeding wizard from survey-ui-config.json${ue.reset}`:e==="survey-theme.css"?`${ue.dim} Seeding wizard from survey-theme.css + defaults${ue.reset}`:`${ue.dim} Seeding wizard from SDK defaults${ue.reset}`)}function Ve(e={}){let o=e.projectRoot??process.env.INIT_CWD??process.cwd(),t=e.surveyTypes??Xe(J),{config:n}=pe({projectRoot:o,surveyTypes:t,instanceId:e.instanceId}),r=ee.join(o,"survey-ui-config.json");return G.writeFileSync(r,JSON.stringify(n,null,2),"utf8"),r}var ue,wt,bt,xe=z(()=>{"use strict";q();We();ve();Se();Co();ue=l,wt=512e3,bt={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml"}});function W(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function w(e,o){return typeof e=="number"&&Number.isFinite(e)?e:o}function a(e,o){return typeof e=="string"&&e.length?e:o}function _t(){return{"--cfm-header-brand-gap":"16px","--cfm-header-padding-y":"12px","--cfm-header-company-margin-top":"0","--cfm-header-company-margin-left":"0","--cfm-header-company-margin-right":"0","--cfm-header-logo-col":"1","--cfm-header-logo-justify":"start"}}function vt(){return{"--cfm-footer-inner-display":"grid","--cfm-footer-inner-direction":"row","--cfm-footer-logo-col":"1","--cfm-footer-logo-justify":"start","--cfm-footer-links-col":"3","--cfm-footer-links-justify":"end","--cfm-footer-logo-copyright-gap":"12px"}}function Me(e,o){o.numberLabelMode&&(e["--cfm-number-label-mode"]=a(o.numberLabelMode,"traffic")),o.monochromeNumberColor&&(e["--cfm-number-mono-color"]=a(o.monochromeNumberColor,"#9CA3AF"));let t=o.individualNumberColors;Array.isArray(t)&&t.forEach((n,r)=>{typeof n=="string"&&(e[`--cfm-number-color-${r}`]=n)})}function _o(e,o){o.hintLabelColor&&(e["--cfm-hint-label-color"]=a(o.hintLabelColor,"#6B7280")),o.hintLabelBgColor&&(e["--cfm-hint-label-bg"]=a(o.hintLabelBgColor,"transparent"))}function Ye(e,o,t){(t==="matrix"||t==="csat")&&(o.columnLabelColor&&(e["--cfm-matrix-column-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-matrix-column-label-bg"]=a(o.columnLabelBgColor,"transparent"))),t==="csat"&&(o.columnLabelColor&&(e["--cfm-csat-column-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-csat-column-label-bg"]=a(o.columnLabelBgColor,"transparent"))),t==="rating"&&(o.columnLabelColor&&(e["--cfm-rating-column-label-color"]=a(o.columnLabelColor,"#4B5563")),o.columnLabelBgColor&&(e["--cfm-rating-column-label-bg"]=a(o.columnLabelBgColor,"transparent")))}function Dt(e,o){let t=a(o.optionStyle??o.cardStyle,"outlined");e["--cfm-mcq-border-radius"]=`${w(o.borderRadius,8)}px`,e["--cfm-mcq-option-gap"]=`${w(o.optionGap,8)}px`,e["--cfm-mcq-card-padding"]=`${w(o.optionPadding??o.cardPadding,12)}px`,e["--cfm-mcq-hover-border"]=a(o.hoverBorderColor,"#00B5AD"),e["--cfm-mcq-option-style"]=t,o.filledOptionBg&&(e["--cfm-mcq-filled-bg"]=a(o.filledOptionBg,"#F9FAFB"))}function Lt(e,o){e["--cfm-input-radius"]=`${w(o.inputRadius,8)}px`,e["--cfm-input-border"]=a(o.borderColor,"#E5E7EB"),e["--cfm-input-padding"]=`${w(o.inputPadding,12)}px`,e["--cfm-input-height"]=`${w(o.inputHeight,44)}px`,e["--cfm-input-placeholder"]=a(o.placeholderColor,"#9CA3AF")}function Mt(e,o){e["--cfm-nps-cell-size"]=`${w(o.cellSize,40)}px`,e["--cfm-nps-cell-gap"]=`${w(o.cellGap,4)}px`,e["--cfm-nps-button-style"]=a(o.buttonStyle,"numbered"),e["--cfm-nps-selected-fill"]=a(o.selectedFill,"#E8F5FD"),e["--cfm-nps-track-bar"]=a(o.trackBarColor,"#F2F2F2"),e["--cfm-nps-track-highlight"]=a(o.trackHighlightColor,"#FBE8F3"),_o(e,o),Me(e,o)}function Bt(e,o){e["--cfm-matrix-row-width"]=`${w(o.rowLabelWidth,180)}px`,e["--cfm-matrix-bipolar-width"]=`${w(o.bipolarColumnWidthPercent,25)}%`,e["--cfm-matrix-cell-padding"]=`${w(o.cellPadding,8)}px`,o.carouselDotColor&&(e["--cfm-matrix-carousel-dot"]=a(o.carouselDotColor,"#2563EB")),Ye(e,o,"matrix")}function Ot(e,o){e["--cfm-csat-emoji-size"]=`${w(o.emojiSize,24)}px`,e["--cfm-csat-unselected-opacity"]=String(w(o.unselectedOpacity,.5)),e["--cfm-star-unselected-opacity"]=String(w(o.unselectedStarOpacity??o.unselectedOpacity,.5)),e["--cfm-csat-cell-size"]=`${w(o.cellSize,40)}px`,e["--cfm-csat-tooltip-bg"]=a(o.tooltipBg,"#1F2937"),e["--cfm-csat-accent"]=a(o.accentColor,e["--cfm-accent"]??"#00B5AD"),e["--cfm-matrix-row-width"]=`${w(o.rowLabelWidth,180)}px`,e["--cfm-slider-track"]=a(o.graphicsTrackColor,"#E5E7EB"),e["--cfm-slider-thumb"]=a(o.graphicsThumbColor,e["--cfm-accent"]??"#00B5AD"),Ye(e,o,"csat"),Me(e,o)}function Ut(e,o){e["--cfm-star-color"]=a(o.starColor,"#F59E0B"),e["--cfm-badge-color"]=a(o.badgeColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-csat-emoji-size"]=`${w(o.emojiSize,24)}px`,e["--cfm-star-unselected-opacity"]=String(w(o.unselectedStarOpacity,.5)),e["--cfm-csat-unselected-opacity"]=String(w(o.unselectedStarOpacity,.5)),e["--cfm-matrix-row-width"]=`${w(o.rowLabelWidth,180)}px`,e["--cfm-slider-track"]=a(o.graphicsTrackColor,"#E5E7EB"),e["--cfm-slider-thumb"]=a(o.graphicsThumbColor,e["--cfm-primary"]??"#1A1F36"),Ye(e,o,"rating"),Me(e,o)}function zt(e,o){e["--cfm-slider-track"]=a(o.trackColor,e["--cfm-accent"]??"#00B5AD"),e["--cfm-slider-thumb"]=a(o.thumbColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-slider-tick"]=a(o.tickColor,"#9CA3AF"),e["--cfm-matrix-row-width"]=`${w(o.rowLabelWidth,180)}px`,e["--cfm-slider-row-band"]=a(o.rowBandColor,e["--cfm-row-band"]??"#F3F4F6"),e["--cfm-slider-tick-size"]=`${w(o.tickBadgeSize,28)}px`,_o(e,o),Me(e,o)}function qt(e,o){e["--cfm-upload-border-color"]=a(o.borderColor??o.accentColor,"#D1D5DB"),e["--cfm-upload-padding"]=`${w(o.dropzonePadding,24)}px`,e["--cfm-upload-fill"]=a(o.dropzoneFillColor,"#F9FAFB"),e["--cfm-upload-border-style"]=a(o.dropzoneStyle,"dashed")}function Wt(e,o){e["--cfm-media-max-width"]=`${w(o.mediaMaxWidth,100)}%`,e["--cfm-media-radius"]=`${w(o.mediaRadius,8)}px`,e["--cfm-media-caption-color"]=a(o.captionColor,"#6B7280"),e["--cfm-media-caption-size"]=`${w(o.captionSize,14)}px`}function Xt(e,o){e["--cfm-heatmap-pin"]=a(o.pinColor,e["--cfm-accent"]??"#00B5AD"),e["--cfm-heatmap-pin-size"]=`${w(o.pinSize,12)}px`,e["--cfm-heatmap-pin-border"]=a(o.pinBorderColor,"#FFFFFF"),e["--cfm-heatmap-overlay-opacity"]=String(w(o.overlayOpacity,0))}function Ht(e,o){let t=W(o.drag)??o,n=W(o.dropdown)??t,r=a(n.itemHoverBg??t.itemHoverBg,"#F3F4F6");e["--cfm-rank-item-bg"]=a(t.itemBg??n.itemBg,"#F9FAFB"),e["--cfm-rank-dropdown-hover-bg"]=r,e["--cfm-rank-badge-bg"]=a(t.rankBadgeColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-rank-badge-text"]="#ffffff",e["--cfm-rank-badge"]=a(t.rankBadgeColor,e["--cfm-primary"]??"#1A1F36"),e["--cfm-rank-item-padding"]=`${w(t.itemPadding,12)}px`,e["--cfm-rank-item-gap"]=`${w(t.itemGap,8)}px`,e["--cfm-rank-handle"]=a(t.dragHandleColor,"#9CA3AF"),e["--cfm-rank-select-border"]=a(n.selectBorderColor,"#E5E7EB")}function Be(e){let o=W(e.global)??{},t=W(o.colorScheme)??{},n=W(o.header)??{},r=W(o.footer)??{},i=W(o.theme)??{},s=W(o.layout)??{},c=W(o.typography)??{},d=W(o.motion)??{},m=e.questionTypes??{},g=a(s.fontStyle,"modern"),S=jo[g]??a(c.fontFamily,jo.modern),x=a(s.width,"standard"),k=a(s.borderStyle,"rounded"),E=a(i.cellSelectedColor,a(t.accent,"#00B5AD")),R=a(i.focusRingColor,a(t.accent,"#00B5AD")),p=a(i.selectedBackground,a(t.secondary,"#E8F5FD")),h={"--cfm-primary":a(t.primary,"#1A1F36"),"--cfm-secondary":a(t.secondary,"#E8F5FD"),"--cfm-accent":a(t.accent,"#00B5AD"),"--cfm-background":a(i.pageBackground??t.background,"#FFFFFF"),"--cfm-text":a(t.text,"#1A1F36"),"--cfm-button-text":a(t.buttonText,"#FFFFFF"),"--cfm-max-width":Io[x]??Io.standard,"--cfm-border-radius":No[k]??No.rounded,"--cfm-font-family":S,"--cfm-heading-weight":String(w(c.headingWeight,700)),"--cfm-motion-duration":`${w(d.durationMs,200)}ms`,"--cfm-header-height":`${w(n.height,120)}px`,"--cfm-header-logo-width":`${w(n.logoBoxWidth,120)}px`,"--cfm-header-logo-height":`${w(n.logoBoxHeight,120)}px`,"--cfm-header-logo-padding":`${w(n.logoPadding,10)}px`,"--cfm-header-show-company":n.showCompanyName===!1?"0":"1","--cfm-header-bg":a(n.backgroundColor,"#FFFFFF"),"--cfm-header-company-color":a(n.companyNameColor,a(t.text,"#1A1F36")),"--cfm-header-company-size":`${w(n.companyNameFontSize,18)}px`,"--cfm-header-company-weight":String(w(n.companyNameFontWeight,600)),"--cfm-header-border":a(n.borderBottomColor,"#E5E7EB"),"--cfm-header-padding-x":`${w(n.contentPaddingX,40)}px`,"--cfm-header-shadow":n.shadowEnabled===!1?"none":"0 2px 8px rgba(0,0,0,0.06)",..._t(),"--cfm-footer-bg":a(r.backgroundColor,"#262626"),"--cfm-footer-text":a(r.textColor,"#9CA3AF"),"--cfm-footer-link":a(r.linkColor,"#9CA3AF"),"--cfm-footer-link-hover":a(r.linkHoverColor,"#FFFFFF"),"--cfm-footer-logo-width":`${w(r.logoWidth,120)}px`,"--cfm-footer-logo-height":`${w(r.logoHeight,32)}px`,"--cfm-footer-padding-y":`${w(r.paddingY,24)}px`,"--cfm-footer-padding-x":`${w(r.paddingX,40)}px`,...vt(),"--cfm-card-bg":a(i.cardBackground,"#FFFFFF"),"--cfm-card-border-color":a(i.cardBorderColor,"#E5E7EB"),"--cfm-card-padding":`${w(i.cardPadding,24)}px`,"--cfm-card-gap":"32px","--cfm-card-shadow":i.cardShadowEnabled===!1?"none":`0 ${w(i.cardShadowOffsetY,1)}px ${w(i.cardShadowBlur,3)}px ${a(i.cardShadowColor,"rgba(0,0,0,0.1)")}`,"--cfm-selected-bg":p,"--cfm-mcq-selected-accent":R,"--cfm-mcq-selected-bg":p,"--cfm-matrix-selected":E,"--cfm-csat-ring-color":E,"--cfm-input-focus-ring":R,"--cfm-zebra-row":a(i.zebraRowColor,"rgba(249,250,251,0.8)"),"--cfm-row-band":a(i.rowBandColor,"#F3F4F6"),"--cfm-validation-border":a(i.validationBorder,"#333333"),"--cfm-validation-bg":a(i.validationBackground,"#D9D9D9"),"--cfm-tooltip-bg":a(i.tooltipBackground,"#1F2937"),"--cfm-progress-height":`${w(i.progressTrackHeight,12)}px`,"--cfm-progress-track":a(i.progressTrackColor,"#E5E7EB"),"--cfm-progress-fill":a(i.progressFillColor,a(t.primary,"#1A1F36")),"--cfm-sticky-pt":`${w(i.stickyChromePaddingTop,16)}px`,"--cfm-sticky-pb":`${w(i.stickyChromePaddingBottom,20)}px`,"--cfm-language-bg":a(i.languageSelectorBackground,"#FFFFFF"),"--cfm-language-text":a(i.languageSelectorTextColor,"#2563EB"),"--cfm-language-border":a(i.languageSelectorBorderColor,"#2563EB")},T=[["MCQ",Dt],["TEXTFIELD",Lt],["NPS_SCALE",Mt],["CFM_MATRIX",Bt],["CSAT_MATRIX",Ot],["RATING_MATRIX",Ut],["SLIDER_MATRIX",zt],["FILE_UPLOAD",qt],["TEXT_AND_MEDIA",Wt],["HEATMAP",Xt],["RANK_ORDER",Ht]];for(let[$,b]of T){let F=W(m[$]);F&&b(h,F)}return h}function Ze(e){let o=e.questionTypes??{},t=W(o.MCQ),n=W(o.NPS_SCALE),r=W(o.FILE_UPLOAD),i={};return i["data-cfm-mcq-style"]=a(t?.optionStyle??t?.cardStyle,"outlined"),n?.buttonStyle&&(i["data-cfm-nps-button-style"]=a(n.buttonStyle,"numbered")),r?.dropzoneStyle&&(i["data-cfm-dropzone-style"]=a(r.dropzoneStyle,"dashed")),i}var Io,No,jo,eo=z(()=>{"use strict";Io={narrow:"36rem",standard:"48rem",wide:"64rem"},No={sharp:"0px",rounded:"12px",pill:"9999px"},jo={system:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',inter:"Inter, system-ui, sans-serif",modern:"Inter, sans-serif",roboto:"Roboto, system-ui, sans-serif",openSans:'"Open Sans", system-ui, sans-serif',lato:"Lato, system-ui, sans-serif",poppins:"Poppins, system-ui, sans-serif",montserrat:"Montserrat, system-ui, sans-serif",nunito:"Nunito, system-ui, sans-serif",raleway:"Raleway, system-ui, sans-serif",sourceSans:'"Source Sans 3", system-ui, sans-serif',georgia:'Georgia, "Times New Roman", serif',serif:"Georgia, serif",merriweather:"Merriweather, Georgia, serif",playfair:'"Playfair Display", Georgia, serif'}});import*as oe from"fs";import*as se from"path";function Vt(e){return`:root {
|
|
3
3
|
${Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>` ${t}: ${n};`).join(`
|
|
4
4
|
`)}
|
|
5
|
-
}`}function
|
|
5
|
+
}`}function Jt(e,o){let t=Be(e),n=Vt(t),r=o.match(/:root\s*\{[\s\S]*?\n\}/);return r?o.replace(r[0],n):`${n}
|
|
6
6
|
|
|
7
|
-
${o}`}function
|
|
8
|
-
`)}function te(e){return{seedPath:he.join(e,"survey-ui-config.seed.json"),finalPath:he.join(e,"survey-ui-config.final.json"),diffJsonPath:he.join(e,"survey-ui-config.diff.json"),diffMdPath:he.join(e,"survey-ui-config.diff.md"),activeConfigPath:he.join(e,"survey-ui-config.json")}}function
|
|
9
|
-
${s}`,
|
|
7
|
+
${o}`}function Gt(e){let o=se.join(e,"src","styles","survey-theme.css");if(oe.existsSync(se.dirname(o)))return o;let t=se.join(e,"src","app","survey-theme.css");return oe.existsSync(se.dirname(t))?t:(oe.mkdirSync(se.dirname(o),{recursive:!0}),o)}function vo(e,o,t){let n=oe.readFileSync(t,"utf8"),r=Gt(e),i=Jt(o,n);return oe.writeFileSync(r,i,"utf8"),r}var Do=z(()=>{"use strict";eo()});import*as ye from"fs";import*as he from"path";function Lo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Mo(e,o){return JSON.stringify(e)===JSON.stringify(o)}function me(e){return typeof e=="string"&&e.startsWith("data:")&&e.length>80?`${e.slice(0,48)}\u2026 (${e.length} chars)`:e}function Bo(e,o,t,n){if(Mo(e,o)){n.unchangedCount+=1;return}if(e===void 0&&o!==void 0){n.added.push({path:t,before:void 0,after:me(o)});return}if(e!==void 0&&o===void 0){n.removed.push({path:t,before:me(e),after:void 0});return}if(Array.isArray(e)&&Array.isArray(o)){Mo(e,o)?n.unchangedCount+=1:n.changed.push({path:t,before:me(e),after:me(o)});return}if(Lo(e)&&Lo(o)){let r=new Set([...Object.keys(e),...Object.keys(o)]);for(let i of r){if(Qt.has(i)&&t==="")continue;let s=t?`${t}.${i}`:i;Bo(e[i],o[i],s,n)}return}n.changed.push({path:t,before:me(e),after:me(o)})}function oo(e,o){let t={changed:[],added:[],removed:[],unchangedCount:0};return Bo(e,o,"",t),t}function Oe(e){let o=["# UI Config Diff (seed \u2192 final)","",`**Changed:** ${e.changed.length} \xB7 **Added:** ${e.added.length} \xB7 **Removed:** ${e.removed.length}`,"","> Review only \u2014 run `npx cfm-sdk confirm-ui-config` to apply final config to the project.",""],t=(n,r)=>{if(r.length){o.push(`## ${n}`,"");for(let i of r)o.push(`### \`${i.path}\``),o.push(`- **Before:** \`${JSON.stringify(i.before)}\``),o.push(`- **After:** \`${JSON.stringify(i.after)}\``),o.push("")}};return t("Changed",e.changed),t("Added",e.added),t("Removed",e.removed),!e.changed.length&&!e.added.length&&!e.removed.length&&o.push("_No differences \u2014 final config matches seed._",""),o.join(`
|
|
8
|
+
`)}function te(e){return{seedPath:he.join(e,"survey-ui-config.seed.json"),finalPath:he.join(e,"survey-ui-config.final.json"),diffJsonPath:he.join(e,"survey-ui-config.diff.json"),diffMdPath:he.join(e,"survey-ui-config.diff.md"),activeConfigPath:he.join(e,"survey-ui-config.json")}}function Ue(e,o,t){let n=te(e),r=oo(o,t);return ye.writeFileSync(n.seedPath,JSON.stringify(o,null,2),"utf8"),ye.writeFileSync(n.finalPath,JSON.stringify(t,null,2),"utf8"),ye.writeFileSync(n.diffJsonPath,JSON.stringify(r,null,2),"utf8"),ye.writeFileSync(n.diffMdPath,Oe(r),"utf8"),ye.writeFileSync(n.activeConfigPath,JSON.stringify(o,null,2),"utf8"),r}var Qt,$e=z(()=>{"use strict";Qt=new Set(["configuredAt","instanceId"])});function Uo(e){return Oo[e]?Oo[e]:/individualNumberColors\.\d+/.test(e)||e.startsWith("questionTypes.")&&e.includes("columnLabel")||e.startsWith("questionTypes.")&&e.includes("hintLabel")||e.startsWith("questionTypes.")&&e.includes("numberLabel")?"css":e.startsWith("customFields.")||e.startsWith("placeholders.")?"runtime":"unknown"}var Oo,zo=z(()=>{"use strict";Oo={"global.colorScheme.primary":"css","global.colorScheme.secondary":"css","global.colorScheme.accent":"css","global.colorScheme.background":"css","global.colorScheme.text":"css","global.colorScheme.buttonText":"css","global.theme.pageBackground":"css","global.theme.cardBackground":"css","global.theme.cardBorderColor":"css","global.theme.cardPadding":"css","global.theme.cardShadowEnabled":"css","global.theme.cardShadowColor":"css","global.theme.cardShadowBlur":"css","global.theme.cardShadowOffsetY":"css","global.theme.cellSelectedColor":"css","global.theme.focusRingColor":"css","global.theme.selectedBackground":"css","global.theme.zebraRowColor":"css","global.theme.rowBandColor":"css","global.theme.validationBorder":"css","global.theme.validationBackground":"css","global.theme.tooltipBackground":"css","global.theme.progressTrackHeight":"css","global.theme.progressTrackColor":"css","global.theme.progressFillColor":"css","global.theme.stickyChromePaddingTop":"css","global.theme.stickyChromePaddingBottom":"css","global.theme.languageSelectorBackground":"css","global.theme.languageSelectorTextColor":"css","global.theme.languageSelectorBorderColor":"css","global.header.height":"css","global.header.logoBoxWidth":"css","global.header.logoBoxHeight":"css","global.header.logoPadding":"css","global.header.logoPlacement":"css","global.header.showCompanyName":"css","global.header.companyNamePlacement":"css","global.header.companyNameFontSize":"css","global.header.companyNameFontWeight":"css","global.header.companyNameColor":"css","global.header.backgroundColor":"css","global.header.shadowEnabled":"css","global.header.borderBottomColor":"css","global.header.contentPaddingX":"css","global.footer.backgroundColor":"css","global.footer.textColor":"css","global.footer.linkColor":"css","global.footer.linkHoverColor":"css","global.footer.showLogo":"layout","global.footer.logoWidth":"css","global.footer.logoHeight":"css","global.footer.logoPlacement":"css","global.footer.copyrightText":"content","global.footer.layout":"css","global.footer.paddingY":"css","global.footer.paddingX":"css","global.footer.links":"content","global.layout.showHeader":"layout","global.layout.showFooter":"layout","global.layout.showProgressBar":"layout","global.layout.showLanguageSwitcher":"layout","global.layout.showNextButton":"layout","global.layout.showBackButton":"layout","global.layout.showQuestionNumbers":"layout","global.layout.showRequiredAsterisk":"layout","global.layout.width":"css","global.layout.borderStyle":"css","global.layout.fontStyle":"css","global.typography.fontFamily":"css","global.typography.headingWeight":"css","global.motion.durationMs":"css","global.motion.enabled":"css","global.surveyTitle":"content","global.companyName":"content","global.browserTabTitle":"content","global.thankYouMessage":"content","global.buttons.next":"content","global.buttons.back":"content","global.buttons.submit":"content","global.logo.fileName":"content","global.logo.url":"runtime","questionTypes.MCQ.optionStyle":"dom","questionTypes.MCQ.cardStyle":"dom","questionTypes.MCQ.optionGap":"css","questionTypes.MCQ.borderRadius":"css","questionTypes.MCQ.optionPadding":"css","questionTypes.MCQ.cardPadding":"css","questionTypes.MCQ.hoverBorderColor":"css","questionTypes.MCQ.filledOptionBg":"css","questionTypes.TEXTFIELD.inputRadius":"css","questionTypes.TEXTFIELD.borderColor":"css","questionTypes.TEXTFIELD.inputPadding":"css","questionTypes.TEXTFIELD.inputHeight":"css","questionTypes.TEXTFIELD.placeholderColor":"css","questionTypes.TEXTFIELD.defaultPlaceholder":"runtime","questionTypes.NPS_SCALE.buttonStyle":"dom","questionTypes.NPS_SCALE.trackBarColor":"css","questionTypes.NPS_SCALE.trackHighlightColor":"css","questionTypes.NPS_SCALE.cellSize":"css","questionTypes.NPS_SCALE.cellGap":"css","questionTypes.NPS_SCALE.hintMinText":"runtime","questionTypes.NPS_SCALE.hintMaxText":"runtime","questionTypes.NPS_SCALE.hintLabelColor":"css","questionTypes.NPS_SCALE.hintLabelBgColor":"css","questionTypes.NPS_SCALE.numberLabelMode":"css","questionTypes.NPS_SCALE.monochromeNumberColor":"css","questionTypes.CFM_MATRIX.rowLabelWidth":"css","questionTypes.CFM_MATRIX.bipolarColumnWidthPercent":"css","questionTypes.CFM_MATRIX.cellPadding":"css","questionTypes.CFM_MATRIX.columnLabelColor":"css","questionTypes.CFM_MATRIX.columnLabelBgColor":"css","questionTypes.CSAT_MATRIX.emojiSize":"css","questionTypes.CSAT_MATRIX.unselectedOpacity":"css","questionTypes.CSAT_MATRIX.cellSize":"css","questionTypes.CSAT_MATRIX.tooltipBg":"css","questionTypes.CSAT_MATRIX.rowLabelWidth":"css","questionTypes.CSAT_MATRIX.graphicsTrackColor":"css","questionTypes.CSAT_MATRIX.graphicsThumbColor":"css","questionTypes.CSAT_MATRIX.columnLabelColor":"css","questionTypes.CSAT_MATRIX.columnLabelBgColor":"css","questionTypes.RATING_MATRIX.unselectedStarOpacity":"css","questionTypes.RATING_MATRIX.emojiSize":"css","questionTypes.RATING_MATRIX.rowLabelWidth":"css","questionTypes.RATING_MATRIX.starColor":"css","questionTypes.RATING_MATRIX.badgeColor":"css","questionTypes.RATING_MATRIX.graphicsTrackColor":"css","questionTypes.RATING_MATRIX.graphicsThumbColor":"css","questionTypes.RATING_MATRIX.columnLabelColor":"css","questionTypes.RATING_MATRIX.columnLabelBgColor":"css","questionTypes.SLIDER_MATRIX.trackColor":"css","questionTypes.SLIDER_MATRIX.thumbColor":"css","questionTypes.SLIDER_MATRIX.tickColor":"css","questionTypes.SLIDER_MATRIX.rowLabelWidth":"css","questionTypes.SLIDER_MATRIX.rowBandColor":"css","questionTypes.SLIDER_MATRIX.tickBadgeSize":"css","questionTypes.SLIDER_MATRIX.hintMinText":"runtime","questionTypes.SLIDER_MATRIX.hintMaxText":"runtime","questionTypes.SLIDER_MATRIX.hintLabelColor":"css","questionTypes.SLIDER_MATRIX.hintLabelBgColor":"css","questionTypes.FILE_UPLOAD.dropzoneStyle":"dom","questionTypes.FILE_UPLOAD.borderColor":"css","questionTypes.FILE_UPLOAD.dropzoneFillColor":"css","questionTypes.FILE_UPLOAD.dropzonePadding":"css","questionTypes.TEXT_AND_MEDIA.mediaMaxWidth":"css","questionTypes.TEXT_AND_MEDIA.mediaRadius":"css","questionTypes.TEXT_AND_MEDIA.captionColor":"css","questionTypes.TEXT_AND_MEDIA.captionSize":"css","questionTypes.HEATMAP.pinColor":"css","questionTypes.HEATMAP.pinSize":"css","questionTypes.HEATMAP.pinBorderColor":"css","questionTypes.HEATMAP.overlayOpacity":"css","questionTypes.RANK_ORDER.drag.itemBg":"css","questionTypes.RANK_ORDER.drag.itemHoverBg":"css","questionTypes.RANK_ORDER.drag.rankBadgeColor":"css","questionTypes.RANK_ORDER.drag.dragHandleColor":"css","questionTypes.RANK_ORDER.drag.itemPadding":"css","questionTypes.RANK_ORDER.drag.itemGap":"css","questionTypes.RANK_ORDER.dropdown.itemBg":"css","questionTypes.RANK_ORDER.dropdown.selectBorderColor":"css","questionTypes.RANK_ORDER.dropdown.itemHoverBg":"css","questionTypes.RANK_ORDER.dropdown.itemPadding":"css","questionTypes.RANK_ORDER.dropdown.itemGap":"css","placeholders.firstName":"runtime","placeholders.lastName":"runtime","placeholders.email":"runtime",customFields:"runtime","debug.enabled":"runtime","deploy.target":"runtime","deploy.autoDeploy":"runtime"}});var Re={};Ie(Re,{runApplyUiConfig:()=>rn});import*as _ from"fs";import*as L from"path";function Yt(e,o){if(o&&_.existsSync(o))return o;let t=L.join(e,"survey-ui-config.json");if(_.existsSync(t))return t;let n=te(e).finalPath;if(_.existsSync(n))return n;throw new Error("No survey-ui-config.json found. Complete the wizard or run confirm-ui-config first.")}function Zt(e,o){let t=L.relative(L.dirname(o),o),n=(o.includes(`${L.sep}styles${L.sep}`),"./survey-theme.css"),r=[L.join(e,"src","app","globals.css"),L.join(e,"src","styles","globals.css")];for(let i of r){if(!_.existsSync(i))continue;let s=_.readFileSync(i,"utf8"),c=`@import '${n}';`;if(s.includes("survey-theme.css"))return;s.includes(c)||(s=`${c}
|
|
9
|
+
${s}`,_.writeFileSync(i,s,"utf8"));return}}function en(e,o){let t=Ze(o),n=L.join(e,"src","lib");_.mkdirSync(n,{recursive:!0});let r=L.join(n,"surveyUiDomAttributes.ts"),s=`/**
|
|
10
10
|
* Runtime DOM attributes for wizard style modes (MCQ / NPS / upload).
|
|
11
11
|
* Auto-generated by \`npx cfm-sdk apply-ui-config\` \u2014 do not edit manually.
|
|
12
12
|
*/
|
|
@@ -16,7 +16,7 @@ export function applySurveyUiDomAttributes(): void {
|
|
|
16
16
|
${Object.entries(t).map(([c,d])=>` root.setAttribute('${c}', ${JSON.stringify(d)});`).join(`
|
|
17
17
|
`)}
|
|
18
18
|
}
|
|
19
|
-
`;return
|
|
19
|
+
`;return _.writeFileSync(r,s,"utf8"),r}function on(e){let o=L.join(e,"src","components");_.mkdirSync(o,{recursive:!0});let t=L.join(o,"SurveyUiConfigInit.tsx");return _.existsSync(t)||_.writeFileSync(t,Kt,"utf8"),t}function tn(e,o){let t=L.join(e,"src","lib","uiConfig.ts");if(_.existsSync(t))return;let n=L.join(o,"docs","templates","uiConfig.ts");_.existsSync(n)&&(_.mkdirSync(L.dirname(t),{recursive:!0}),_.copyFileSync(n,t))}function nn(e,o){let t=e.replace(/\.json$/,".diff.json");if(_.existsSync(t))try{let n=JSON.parse(_.readFileSync(t,"utf8")),r=[...(n.changed??[]).map(i=>i.path),...(n.added??[]).map(i=>i.path),...(n.removed??[]).map(i=>i.path)];for(let i of r)Uo(i)==="unknown"&&o.push(`Unmapped config path (verify manually): ${i}`)}catch{}}function rn(e={}){let o=e.projectRoot??process.env.INIT_CWD??process.cwd(),t=Yt(o,e.configPath),n=L.join(__dirname,"..",".."),r=L.join(n,"templates","survey-theme.css"),i=L.join(n,"templates"),s=[],c=JSON.parse(_.readFileSync(t,"utf8")),d=[...new Set([...c.surveyTypes??[],...J])],m=je({...c,surveyTypes:d}),g=vo(o,m,r);Zt(o,g),tn(o,i),en(o,m);let S;e.skipInitComponent||(S=on(o));let x=Be(m),k=Ze(m);nn(t,s),console.log(`${Q.green}\u2705 Applied UI config \u2192 ${g}${Q.reset}`),console.log(`${Q.dim} ${Object.keys(x).length} CSS variables regenerated${Q.reset}`),console.log(`${Q.dim} DOM attrs: ${Object.entries(k).map(([E,R])=>`${E}=${R}`).join(", ")}${Q.reset}`),S&&console.log(`${Q.dim} Runtime init: ${S} (mount in layout if not already)${Q.reset}`);for(let E of s)console.log(`${Q.yellow} \u26A0 ${E}${Q.reset}`);return{configPath:t,themeCssPath:g,cssVarCount:Object.keys(x).length,domAttributes:k,initComponentPath:S,warnings:s}}var Q,Kt,Ae=z(()=>{"use strict";q();We();eo();Do();$e();zo();Se();Q=l,Kt=`'use client';
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Applies wizard DOM attributes from survey-ui-config.json at runtime.
|
|
@@ -32,10 +32,10 @@ export function SurveyUiConfigInit() {
|
|
|
32
32
|
}, []);
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
-
`});import*as ce from"fs";import*as Jo from"http";import*as Go from"https";import*as no from"path";function
|
|
35
|
+
`});import*as ce from"fs";import*as Jo from"http";import*as Go from"https";import*as no from"path";function ze(e){if(!e.config)return null;let o=JSON.parse(JSON.stringify(e.config)),n=o.global?.logo;return e.logoUrl&&n&&(n.url=e.logoUrl),o}function Vo(e){return new Promise((o,t)=>{let n=new URL(e);(n.protocol==="https:"?Go:Jo).get(n,i=>{if((i.statusCode??500)>=400){t(new Error(`Logo download failed HTTP ${i.statusCode}`));return}let s=[];i.on("data",c=>s.push(c)),i.on("end",()=>o(Buffer.concat(s)))}).on("error",t)})}async function an(e,o={}){return new Promise((t,n)=>{let r=new URL(e),s=(r.protocol==="https:"?Go:Jo).request(r,{method:"GET",headers:o.headers??{}},c=>{let d="";c.on("data",m=>d+=m),c.on("end",()=>{if((c.statusCode??500)>=400){n(new Error(`HTTP ${c.statusCode}: ${d}`));return}try{t(JSON.parse(d))}catch{n(new Error(`Invalid JSON: ${d.slice(0,200)}`))}})});s.on("error",n),s.end()})}async function le(e){let{projectRoot:o,fileName:t,logoUrl:n,jwt:r,apiBase:i,surveyId:s}=e,c=no.join(o,"public");ce.existsSync(c)||ce.mkdirSync(c,{recursive:!0});let d=no.join(c,t);if(n){let m=await Vo(n);return ce.writeFileSync(d,m),d}if(r&&i&&s){let m=await an(`${i.replace(/\/$/,"")}/wizard/logo/${encodeURIComponent(s)}/${encodeURIComponent(t)}`,{headers:{Authorization:`Bearer ${r}`}}),g=await Vo(m.downloadUrl);return ce.writeFileSync(d,g),d}throw new Error("Logo download requires logoUrl from wizard poll or CFM_INSTANCE_ID + CFM_DEPLOY_API_BASE")}var qe=z(()=>{"use strict"});var et={};Ie(et,{runConfirmUiConfig:()=>mn});import*as K from"fs";function gn(e){try{let o=e.split(".")[1];return JSON.parse(Buffer.from(o,"base64url").toString("utf8")).surveyId??null}catch{return null}}async function mn(e={}){let o=process.env.INIT_CWD??process.cwd(),t=te(o);if(!K.existsSync(t.finalPath))throw new Error(`Missing ${t.finalPath}. Run customize-ui with --review and complete the wizard first.`);let n=JSON.parse(K.readFileSync(K.existsSync(t.seedPath)?t.seedPath:t.activeConfigPath,"utf8")),r=JSON.parse(K.readFileSync(t.finalPath,"utf8")),i=oo(n,r);if(console.log(`
|
|
36
36
|
${V.bold}${V.cyan}\u{1F4CB} UI config review${V.reset}
|
|
37
|
-
`),console.log(
|
|
38
|
-
${X.green}\u2705 Fetched final config (review mode)${X.reset}`),console.log(`${X.green} Final: ${s.finalPath}${X.reset}`),console.log(`${X.green} Diff: ${s.diffMdPath}${X.reset}`),console.log(`${X.yellow} ${S.changed.length} changed, ${S.added.length} added, ${S.removed.length} removed${X.reset}`),console.log(`${X.dim} Apply when ready: npx cfm-sdk confirm-ui-config${X.reset}`)}var X,nt=z(()=>{"use strict";q()
|
|
37
|
+
`),console.log(Oe(i)),e.diffOnly){K.writeFileSync(t.diffJsonPath,JSON.stringify(i,null,2),"utf8"),K.writeFileSync(t.diffMdPath,Oe(i),"utf8"),console.log(`${V.dim} Updated ${t.diffMdPath}${V.reset}`);return}K.writeFileSync(t.activeConfigPath,JSON.stringify(r,null,2),"utf8"),console.log(`${V.green}\u2705 Applied final config \u2192 ${t.activeConfigPath}${V.reset}`);let{runApplyUiConfig:s}=await Promise.resolve().then(()=>(Ae(),Re));s({projectRoot:o,configPath:t.activeConfigPath});let c=r.global?.logo;if(!c?.fileName)return;let d=process.env.CFM_INSTANCE_ID,m=(process.env.CFM_DEPLOY_API_BASE??"").replace(/\/$/,""),g=d?gn(d):null;try{await le({projectRoot:o,fileName:c.fileName,logoUrl:c.url,jwt:d??void 0,apiBase:m||void 0,surveyId:g??void 0}),console.log(`${V.green} Logo saved to public/${c.fileName}${V.reset}`),c.url&&console.log(`${V.dim} Public logo URL: ${c.url}${V.reset}`)}catch(S){console.log(`${V.yellow} Logo not downloaded \u2014 ${S instanceof Error?S.message:String(S)}${V.reset}`)}}var V,ot=z(()=>{"use strict";q();$e();qe();V=l});var tt={};Ie(tt,{runFetchUiConfig:()=>Sn});import*as Fe from"fs";import*as yn from"http";import*as hn from"https";async function wn(e,o={}){return new Promise((t,n)=>{let r=new URL(e),s=(r.protocol==="https:"?hn:yn).request(r,{method:"GET",headers:o.headers??{}},c=>{let d="";c.on("data",m=>d+=m),c.on("end",()=>{if((c.statusCode??500)>=400){n(new Error(`HTTP ${c.statusCode}: ${d}`));return}try{t(JSON.parse(d))}catch{n(new Error(`Invalid JSON: ${d.slice(0,200)}`))}})});s.on("error",n),s.end()})}function bn(e){try{let o=e.split(".")[1];return JSON.parse(Buffer.from(o,"base64url").toString("utf8")).surveyId??null}catch{return null}}async function Sn(e={}){let o=process.env.CFM_INSTANCE_ID,t=(process.env.CFM_DEPLOY_API_BASE??"").replace(/\/$/,""),n=e.sessionId??process.env.CFM_WIZARD_SESSION_ID;if(!o)throw new Error("CFM_INSTANCE_ID (JWT) is required");if(!t)throw new Error("CFM_DEPLOY_API_BASE is required");if(!n)throw new Error("CFM_WIZARD_SESSION_ID or --session= is required");let r=bn(o);if(!r)throw new Error("Could not parse surveyId from CFM_INSTANCE_ID JWT");let i=process.env.INIT_CWD??process.cwd(),s=te(i),c=Fe.existsSync(s.seedPath)?s.seedPath:s.activeConfigPath;if(!Fe.existsSync(c))throw new Error(`Missing seed config at ${c}. Run customize-ui --review first.`);let d=await wn(`${t}/wizard/config/${encodeURIComponent(r)}?sessionId=${encodeURIComponent(n)}`,{headers:{Authorization:`Bearer ${o}`}});if(d.status!=="ready"||!d.config)throw new Error(`Wizard not complete yet (status: ${d.status})`);let m=ze(d)??d.config,g=JSON.parse(Fe.readFileSync(c,"utf8")),S=Ue(i,g,m),x=m.global?.logo;if(x?.fileName)try{await le({projectRoot:i,fileName:x.fileName,logoUrl:d.logoUrl,jwt:o,apiBase:t,surveyId:r}),console.log(`${X.green} Logo saved to public/${x.fileName}${X.reset}`)}catch(k){console.warn(`${X.yellow} Logo download failed: ${k}${X.reset}`)}console.log(`
|
|
38
|
+
${X.green}\u2705 Fetched final config (review mode)${X.reset}`),console.log(`${X.green} Final: ${s.finalPath}${X.reset}`),console.log(`${X.green} Diff: ${s.diffMdPath}${X.reset}`),console.log(`${X.yellow} ${S.changed.length} changed, ${S.added.length} added, ${S.removed.length} removed${X.reset}`),console.log(`${X.dim} Apply when ready: npx cfm-sdk confirm-ui-config${X.reset}`)}var X,nt=z(()=>{"use strict";q();$e();qe();X=l});q();q();import{execSync as io,spawn as st}from"child_process";function ae(e){try{let o=process.platform==="win32"?`where ${e}`:`command -v ${e}`;return io(o,{stdio:"ignore"}),!0}catch{return!1}}var ct={stdio:"inherit",shell:process.platform==="win32"?"cmd.exe":"/bin/sh"};function be(e,o){try{let t=`${e} ${o.join(" ")}`;return io(t,ct),!0}catch{return!1}}function Ne(e,o){return new Promise(t=>{st(e,o,{stdio:"inherit",shell:!0}).on("close",r=>{t(r)})})}import lt from"readline/promises";import{stdin as at,stdout as dt}from"process";async function de(e){let o=lt.createInterface({input:at,output:dt});try{return(await o.question(e)).trim()}finally{o.close()}}async function so(){let e=parseInt(process.version.slice(1).split(".")[0],10);if(console.log(`${l.dim}Step 1/4: Checking Node.js version (current: ${process.version})...${l.reset}`),e<18){console.log(`\u26A0\uFE0F ${l.yellow}Outdated Node.js version detected. v18.0.0 or higher is required.${l.reset}`),console.log(`${l.dim}Note: If you already have a higher version installed via nvm, please run 'nvm use <version>' first.${l.reset}
|
|
39
39
|
`);let o=await de("Would you like to install/upgrade Node.js v18+ automatically? (y/N): ");o.toLowerCase()==="y"||o.toLowerCase()==="yes"||(console.log(`
|
|
40
40
|
\u274C ${l.red}Aborted. Please manually upgrade Node.js to v18+ and try again.${l.reset}
|
|
41
41
|
`),process.exit(1));let n=process.platform==="win32",r=process.platform==="darwin";n?ae("winget")?(console.log(`
|
|
@@ -65,7 +65,7 @@ ${l.dim}Step 4/4: Deploying project to production...${l.reset}`);let t=["--prod"
|
|
|
65
65
|
${l.bold}${l.green}\u{1F389} Deployment completed successfully!${l.reset}
|
|
66
66
|
`)}async function fo(){console.log(`
|
|
67
67
|
${l.bold}${l.cyan}\u{1F680} Starting CFM Vercel Deployment...${l.reset}
|
|
68
|
-
`),await so();let{vercelCmd:e,useNpx:o}=await co(),t=await lo(o);await ao(o,t)}q();import*as ke from"http";import*as P from"fs";import*as M from"path";function U(e){return e instanceof Error?e.message:String(e)}xe();q();import*as
|
|
68
|
+
`),await so();let{vercelCmd:e,useNpx:o}=await co(),t=await lo(o);await ao(o,t)}q();import*as ke from"http";import*as P from"fs";import*as M from"path";function U(e){return e instanceof Error?e.message:String(e)}xe();q();import*as j from"fs";import*as N from"path";ve();ve();import*as u from"fs";import*as f from"path";import{execSync as Ct}from"child_process";function ie(e,o){if(u.existsSync(e)){u.mkdirSync(o,{recursive:!0});for(let t of u.readdirSync(e,{withFileTypes:!0})){let n=f.join(e,t.name),r=f.join(o,t.name);t.isDirectory()?ie(n,r):u.copyFileSync(n,r)}}}function Je(e){let o=[],t=e;for(let n=0;n<6;n++){let r=f.join(t,"node_modules");u.existsSync(r)&&o.push(r);let i=f.dirname(t);if(i===t)break;t=i}return o}function Tt(e,o){let t=Je(e);for(let n of t)for(let r of["@explorer02/cfm-survey-sdk","@repo/sdk"])for(let i of["mjs","js"]){let s=f.join(n,r,"dist",`index.${i}`);if(u.existsSync(s))return s}for(let n of["mjs","js"]){let r=f.join(o,"dist",`index.${n}`);if(u.existsSync(r))return r}throw new Error("Could not resolve @explorer02/cfm-survey-sdk for preview build")}function xt(e,o){let t=[...Je(o).map(n=>f.join(n,"vite","bin","vite.js")),f.join(e,"node_modules","vite","bin","vite.js")];for(let n of t)if(u.existsSync(n))return n;throw new Error("Vite is required for agent preview builds. Install vite in the project or SDK package.")}function $t(e){let o=f.join(e,"src","components");if(!u.existsSync(f.join(o,"Question.tsx")))throw new Error(`Missing src/components/Question.tsx in ${e}. Build the survey UI before export-previews.`);let t=f.join(e,"src","lib"),n=f.join(e,"public");return{componentsDir:o,libDir:u.existsSync(t)?t:void 0,publicDir:u.existsSync(n)?n:void 0}}function Rt(e,o,t){let n=f.join(e,"templates","docs","templates"),r=f.join(o,"agent","src","lib");u.mkdirSync(r,{recursive:!0});let i=f.join(n,"uiConfig.ts");if(!u.existsSync(i))throw new Error(`Missing template uiConfig.ts at ${i}`);u.copyFileSync(i,f.join(r,"uiConfig.ts"));let s=f.join(o,"agent","survey-ui-config.json"),c=f.join(t,"survey-ui-config.json");u.existsSync(c)?u.copyFileSync(c,s):u.existsSync(s)||u.writeFileSync(s,JSON.stringify({version:"1.0",global:{},questionTypes:{},placeholders:{}},null,2))}function At(e,o,t){let n=f.join(e,"templates","docs","templates"),r=f.join(o,"agent","src","components"),i=f.join(o,"agent","src","lib","surveyUi");u.mkdirSync(i,{recursive:!0});let s=["Question.tsx","RatingScale.tsx","LikertMatrixScale.tsx","CsatMatrixScale.tsx","SliderMatrixScale.tsx","CustomSliderTrack.tsx","MatrixDropdown.tsx","FileUploadScale.tsx","HeatmapScale.tsx","RankOrderScale.tsx","surveyUiScaleUtils.ts","surveyUiIcons.tsx","Header.tsx","ProgressBar.tsx","Footer.tsx","LanguageSelector.tsx","SurveyStickyChrome.tsx"];for(let m of s){let g=f.join(n,m);u.existsSync(g)&&u.copyFileSync(g,f.join(r,m))}let c=["selectionStyles.ts","labelStyles.ts","heatmapCoords.ts"];for(let m of c){let g=f.join(n,m);u.existsSync(g)&&u.copyFileSync(g,f.join(i,m))}let d=f.join(n,"heatmapCoords.ts");u.existsSync(d)&&u.copyFileSync(d,f.join(r,"heatmapCoords.ts")),Rt(e,o,t)}function Et(e){let o=`import React from 'react';
|
|
69
69
|
import { mountPreview } from '../mount';
|
|
70
70
|
`;switch(e){case"header":return`${o}import Header from '@/components/Header';
|
|
71
71
|
import ProgressBar from '@/components/ProgressBar';
|
|
@@ -86,7 +86,7 @@ mountPreview(<Footer />);`;default:return`${o}import { QuestionPreview } from '.
|
|
|
86
86
|
import { PREVIEW_FIXTURES } from '../fixtures/questions';
|
|
87
87
|
const question = PREVIEW_FIXTURES[${JSON.stringify(e)}];
|
|
88
88
|
if (!question) throw new Error('Missing fixture for ${e}');
|
|
89
|
-
mountPreview(<QuestionPreview question={question} />);`}}function
|
|
89
|
+
mountPreview(<QuestionPreview question={question} />);`}}function kt(e,o,t,n){let r=Tt(o,t),i=n.map(c=>` '${c}': path.resolve(workDir, '${c}', 'index.html'),`).join(`
|
|
90
90
|
`),s=`import path from 'path';
|
|
91
91
|
import { fileURLToPath } from 'url';
|
|
92
92
|
import { defineConfig } from 'vite';
|
|
@@ -121,38 +121,38 @@ ${i}
|
|
|
121
121
|
},
|
|
122
122
|
},
|
|
123
123
|
});
|
|
124
|
-
`;
|
|
124
|
+
`;u.writeFileSync(f.join(e,"vite.config.mjs"),s)}function Ft(e,o){let t=u.readFileSync(e,"utf8");if(t.includes("preview-bridge.inline"))return;let n=`<script>${o}</script>`;t=t.includes("</body>")?t.replace("</body>",`${n}
|
|
125
125
|
</body>`):`${t}
|
|
126
|
-
${n}`,
|
|
126
|
+
${n}`,u.writeFileSync(e,t)}function Pt(e){return e.replace(/_/g," ")}async function Eo(e){let{projectRoot:o,outputDir:t,keys:n}=e,r=f.join(__dirname,"..",".."),i=f.join(r,"templates","preview-harness","vite-app");if(!u.existsSync(i))throw new Error(`Missing Vite preview harness template at ${i}`);let s=$t(o),c=f.join(t,".preview-vite-work");u.existsSync(c)&&u.rmSync(c,{recursive:!0,force:!0}),ie(i,c),u.mkdirSync(f.join(c,"agent","src"),{recursive:!0}),ie(s.componentsDir,f.join(c,"agent","src","components")),s.libDir&&ie(s.libDir,f.join(c,"agent","src","lib")),s.publicDir&&ie(s.publicDir,f.join(c,"agent","public")),At(r,c,o);let d=f.join(o,"survey-ui-config.json");u.existsSync(d)&&u.copyFileSync(d,f.join(c,"agent","survey-ui-config.json"));let m=fe(o),g=f.join(c,"src","survey-theme.css");u.writeFileSync(g,m?u.readFileSync(m,"utf8"):u.readFileSync(f.join(r,"templates","survey-theme.css"),"utf8")),u.mkdirSync(f.join(c,"src","entries"),{recursive:!0});for(let T of n)u.mkdirSync(f.join(c,T),{recursive:!0}),u.writeFileSync(f.join(c,T,"index.html"),`<!DOCTYPE html>
|
|
127
127
|
<html lang="en">
|
|
128
128
|
<head>
|
|
129
129
|
<meta charset="UTF-8" />
|
|
130
130
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
131
|
-
<title>${
|
|
131
|
+
<title>${Pt(T)} \u2014 CFM Preview</title>
|
|
132
132
|
</head>
|
|
133
133
|
<body>
|
|
134
134
|
<div id="root"></div>
|
|
135
135
|
<script type="module" src="../src/entries/${T}.tsx"></script>
|
|
136
136
|
</body>
|
|
137
|
-
</html>`),
|
|
138
|
-
${I.green}\u2705 UI configuration saved to ${t}${I.reset}`);try{let{runApplyUiConfig:C}=await Promise.resolve().then(()=>(Ae()
|
|
139
|
-
${I.bold}${I.cyan}\u{1F3A8} Survey UI Customization Wizard${I.reset}`),console.log(`${I.bold}\u{1F517} Client wizard link \u2014 share this URL only:${I.reset}`),console.log(` ${I.green}${
|
|
140
|
-
`),
|
|
141
|
-
${
|
|
142
|
-
`),
|
|
143
|
-
`));let S=[...J],{outputDir:x,files:k}=await ge({projectRoot:c,useTemplatesOnly:e.useTemplatesOnly,surveyTypes:S}),E=k.map(
|
|
144
|
-
${
|
|
145
|
-
`),
|
|
146
|
-
${
|
|
147
|
-
${
|
|
137
|
+
</html>`),u.writeFileSync(f.join(c,"src","entries",`${T}.tsx`),Et(T));u.writeFileSync(f.join(c,"tsconfig.json"),JSON.stringify({compilerOptions:{target:"ES2020",lib:["ES2020","DOM","DOM.Iterable"],module:"ESNext",moduleResolution:"bundler",jsx:"react-jsx",strict:!0,skipLibCheck:!0,paths:{"@/*":["./agent/src/*"]}},include:["src","agent/src","stubs"]},null,2)),kt(c,o,r,n);let S=xt(r,o),x=Je(o).join(f.delimiter);Ct(`node "${S}" build --config "${f.join(c,"vite.config.mjs")}"`,{cwd:c,stdio:"inherit",env:{...process.env,NODE_PATH:x}});let k=f.join(t,"previews");u.mkdirSync(k,{recursive:!0});let E=f.join(c,"dist"),R=u.readFileSync(f.join(r,"templates","preview-harness","preview-bridge.inline.js"),"utf8");for(let T of n){let $=f.join(E,T),b=f.join(k,T);if(!u.existsSync(f.join($,"index.html")))throw new Error(`Vite build did not produce ${T}/index.html`);u.existsSync(b)&&u.rmSync(b,{recursive:!0,force:!0}),ie($,b),Ft(f.join(b,"index.html"),R)}let p=f.join(E,"assets");u.existsSync(p)&&ie(p,f.join(k,"assets"));let h=f.join(c,"agent","public");if(u.existsSync(h))for(let T of u.readdirSync(h)){let $=f.join(h,T);u.statSync($).isFile()&&u.copyFileSync($,f.join(k,T))}u.rmSync(c,{recursive:!0,force:!0})}import*as Ge from"fs";import*as Qe from"path";function Le(e){if(e)return e;let o=process.cwd();if(Ge.existsSync(Qe.join(o,"src","components","Question.tsx")))return o;let t=process.env.INIT_CWD;return t&&Ge.existsSync(Qe.join(t,"src","components","Question.tsx"))?t:o}var ko=["header","footer","survey_page"],Fo={MCQ:["MCQ_single","MCQ_multiple"],TEXTFIELD:["TEXTFIELD_short","TEXTFIELD_long"],NPS_SCALE:["NPS_SCALE"],CFM_MATRIX:["CFM_likert","CFM_bipolar"],TEXT_AND_MEDIA:["TEXT_AND_MEDIA"],CSAT_MATRIX:["CSAT_emoji","CSAT_star","CSAT_numbered","CSAT_graphics"],RATING_MATRIX:["RATING_star","RATING_numbered","RATING_radio","RATING_emoji","RATING_graphics"],SLIDER_MATRIX:["SLIDER_matrix"],FILE_UPLOAD:["FILE_UPLOAD"],HEATMAP:["HEATMAP"],RANK_ORDER:["RANK_drag","RANK_dropdown"]},ur=[...ko,...Object.values(Fo).flat()];function Po(e){let o=new Set(ko);for(let t of e)for(let n of Fo[t]??[])o.add(n);return[...o]}var O=l;function It(){return N.join(__dirname,"..","..","templates")}function Nt(e){let o=j.readFileSync(e,"utf8"),t=new Set,n=["MCQ","TEXTFIELD","NPS_SCALE","CFM_MATRIX","CSAT_MATRIX","RATING_MATRIX","SLIDER_MATRIX","FILE_UPLOAD","TEXT_AND_MEDIA","HEATMAP","RANK_ORDER"];for(let r of n)o.includes(r)&&t.add(r);return t.size?[...t]:n}function jt(e,o){let t=new Set(Po(o));return e.filter(n=>t.has(n))}function Ke(e,o,t){if(j.existsSync(e))for(let n of j.readdirSync(e)){let r=N.join(e,n),i=N.posix.join(o,n);if(j.statSync(r).isDirectory())Ke(r,i,t);else{let s=N.extname(n).toLowerCase(),c=s===".html"?"text/html":s===".css"?"text/css":s===".js"?"application/javascript":s===".json"?"application/json":s===".svg"?"image/svg+xml":s===".jpg"||s===".jpeg"?"image/jpeg":s===".png"?"image/png":"application/octet-stream";t.push({path:i,contentType:c,sizeBytes:j.statSync(r).size})}}}async function ge(e={}){let o=Le(e.projectRoot),t=e.outputDir??N.join(o,"out"),n=It(),r=N.join(n,"preview-harness");e.useTemplatesOnly&&console.log(`${O.dim} Using SDK template preview harness only (--use-templates-only)${O.reset}`);let i=N.join(r,"previewPages.js"),{PREVIEW_PAGE_DEFS:s,buildPreviewHtml:c,PREVIEW_KEYS:d}=Pe(i),m=(()=>{let p=fe(o);return p?(console.log(`${O.dim} Using project theme: ${N.relative(o,p)}${O.reset}`),j.readFileSync(p,"utf8")):j.readFileSync(N.join(n,"survey-theme.css"),"utf8")})(),g=j.readFileSync(N.join(r,"preview-bridge.inline.js"),"utf8"),S=e.surveyTypes;if(!S){let p=N.join(o,"implementation_plan.md");S=j.existsSync(p)?Nt(p):["MCQ","TEXTFIELD","NPS_SCALE","CFM_MATRIX","CSAT_MATRIX","RATING_MATRIX","SLIDER_MATRIX","FILE_UPLOAD","TEXT_AND_MEDIA","HEATMAP","RANK_ORDER"]}let x=jt(d,S),k=N.join(t,"previews");if(j.existsSync(k)&&(j.rmSync(k,{recursive:!0,force:!0}),console.log(`${O.dim} Cleared previous preview output${O.reset}`)),j.mkdirSync(k,{recursive:!0}),!e.useTemplatesOnly)try{console.log(`${O.dim} Building previews from agent components (Vite)\u2026${O.reset}`),await Eo({projectRoot:o,outputDir:t,keys:x});let p={};for(let T of x)p[T]=`previews/${T}/index.html`;j.writeFileSync(N.join(t,"previews","manifest.json"),JSON.stringify(p,null,2));let h=[];return Ke(N.join(t,"previews"),"previews",h),console.log(`${O.green}\u2705 Exported ${x.length} agent component previews \u2192 ${t}${O.reset}`),{outputDir:t,manifestPath:N.join(t,"previews","manifest.json"),files:h,surveyTypes:S}}catch(p){console.warn(`${O.yellow}\u26A0 Agent Vite preview build failed; falling back to template harness.${O.reset}`),console.warn(`${O.dim} ${U(p)}${O.reset}`)}for(let p of s){if(!x.includes(p.key))continue;let h=N.join(t,"previews",p.key);j.mkdirSync(h,{recursive:!0}),j.writeFileSync(N.join(h,"index.html"),c(p,m,g))}let E={};for(let p of x)E[p]=`previews/${p}/index.html`;j.writeFileSync(N.join(t,"previews","manifest.json"),JSON.stringify(E,null,2));let R=[];return Ke(N.join(t,"previews"),"previews",R),console.log(`${O.green}\u2705 Exported ${x.length} preview pages \u2192 ${t}${O.reset}`),{outputDir:t,manifestPath:N.join(t,"previews","manifest.json"),files:R,surveyTypes:S}}var I=l,Ee=["MCQ","TEXTFIELD","NPS_SCALE","CFM_MATRIX","CSAT_MATRIX","RATING_MATRIX","SLIDER_MATRIX","FILE_UPLOAD","TEXT_AND_MEDIA","HEATMAP","RANK_ORDER"];function Xo(e){return new Promise(o=>{let t=ke.createServer();t.listen(e,()=>{t.close(()=>o(e))}),t.on("error",()=>o(Xo(e+1)))})}function qo(e){return new Promise((o,t)=>{let n="";e.on("data",r=>n+=r),e.on("end",()=>o(n)),e.on("error",t)})}function sn(e){let{exec:o}=Pe("child_process"),t=process.platform==="darwin"?`open "${e}"`:process.platform==="win32"?`start "" "${e}"`:`xdg-open "${e}"`;o(t)}function Wo(e){let o=M.extname(e).toLowerCase();return{".html":"text/html",".js":"application/javascript",".css":"text/css",".json":"application/json",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".woff2":"font/woff2",".ico":"image/x-icon"}[o]??"application/octet-stream"}function cn(e){let o=new Set,t,n=e.match(/\*\*instanceId:\*\*\s*(.+)/i);if(n){let i=n[1].replace(/[()[\]]/g,"").trim();i&&!i.startsWith("(")&&i!=="JWT"&&(t=i)}for(let i of Ee)e.includes(i)&&o.add(i);let r=e.matchAll(/\|\s*`([A-Z_]+)`\s*\|/g);for(let i of r)Ee.includes(i[1])&&o.add(i[1]);return{surveyTypes:o.size>0?[...o]:[...Ee],instanceId:t}}async function ln(e){return new Promise(o=>{try{let t=ke.get(e,n=>{o((n.statusCode??500)<500),n.resume()});t.on("error",()=>o(!1)),t.setTimeout(2e3,()=>{t.destroy(),o(!1)})}catch{o(!1)}})}function to(e){let o=M.join(e,"out","previews");P.existsSync(o)&&(P.rmSync(o,{recursive:!0,force:!0}),console.log(`${I.dim} Removed local preview files: out/previews/${I.reset}`))}async function Ho(){let e=process.env.INIT_CWD||process.cwd(),o=M.join(e,"public"),t=M.join(e,"survey-ui-config.json"),n=M.join(e,"implementation_plan.md"),r=M.join(__dirname,"..","..","templates"),i=M.join(r,"wizard-dist"),s=process.env.CFM_PREVIEW_URL??"http://localhost:3000",c={},d=M.join(e,"out","previews"),m=M.join(d,"manifest.json");console.log(`${I.dim} Exporting component previews for local wizard\u2026${I.reset}`),await ge({projectRoot:e,surveyTypes:[...Ee]}),P.existsSync(m)&&(c=JSON.parse(P.readFileSync(m,"utf8")));let g=await Xo(4200),S=`http://localhost:${g}`;return new Promise((x,k)=>{let E=ke.createServer(async(p,h)=>{try{let T=p.url??"/";if(p.method==="GET"&&T==="/api/inventory"){let $;if(P.existsSync(n)){let C=P.readFileSync(n,"utf8");$=cn(C).instanceId}if(P.existsSync(t))try{let C=JSON.parse(P.readFileSync(t,"utf8"));C.instanceId&&($=C.instanceId)}catch{}let b=[...Ee],{config:F}=pe({projectRoot:e,surveyTypes:b,instanceId:$});h.writeHead(200,{"Content-Type":"application/json"}),h.end(JSON.stringify({surveyTypes:b,instanceId:$,previewUrl:s,initialConfig:F,previewManifest:Object.fromEntries(Object.keys(c).map(C=>[C,`${S}/previews/${C}/index.html`]))}));return}if(p.method==="GET"&&T==="/api/preview-url"){let $=await ln(s);h.writeHead(200,{"Content-Type":"application/json"}),h.end(JSON.stringify({url:s,connected:$}));return}if(p.method==="POST"&&T.split("?")[0]==="/api/wizard-quit"){to(e),h.writeHead(200,{"Content-Type":"application/json"}),h.end(JSON.stringify({ok:!0,deleted:"out/previews"})),setTimeout(()=>{E.close(()=>{k(new Error("Client quit the wizard without saving. Local preview garbage collection complete (out/previews removed)."))})},300);return}if(p.method==="POST"&&T==="/api/upload-logo"){let $=await qo(p),b=JSON.parse($);P.existsSync(o)||P.mkdirSync(o,{recursive:!0});let F=b.base64.replace(/^data:image\/\w+;base64,/,""),C=Buffer.from(F,"base64"),B=M.extname(b.filename),H=M.basename(b.filename,B).toLowerCase().replace(/[^a-z0-9_-]/g,""),re=`logo_${Date.now()}_${H}${B||".png"}`;P.writeFileSync(M.join(o,re),C),h.writeHead(200,{"Content-Type":"application/json"}),h.end(JSON.stringify({fileName:re}));return}if(p.method==="POST"&&T==="/api/save-config"){let $=await qo(p),b=JSON.parse($);b.configuredAt=new Date().toISOString();let F=b.global?.logo;F?.url?.startsWith("data:")&&(F.url=null),P.writeFileSync(t,JSON.stringify(b,null,2),"utf8"),console.log(`
|
|
138
|
+
${I.green}\u2705 UI configuration saved to ${t}${I.reset}`);try{let{runApplyUiConfig:C}=await Promise.resolve().then(()=>(Ae(),Re));C({projectRoot:e,configPath:t})}catch(C){console.log(`${I.yellow} CSS apply skipped: ${C instanceof Error?C.message:String(C)}${I.reset}`)}to(e),console.log(`${I.dim} Local preview garbage collection complete (out/previews removed)${I.reset}`),h.writeHead(200,{"Content-Type":"application/json"}),h.end(JSON.stringify({ok:!0})),setTimeout(()=>{E.close(()=>x())},500);return}if(p.method==="GET"){let $=T.split("?")[0];if($==="/"&&($="/index.html"),$.startsWith("/previews/")&&P.existsSync(d)){let C=$.replace(/^\/previews\//,""),B=M.join(d,C),H=M.normalize(B);if(H.startsWith(d)&&P.existsSync(H)&&P.statSync(H).isFile()){let re=P.readFileSync(H);h.writeHead(200,{"Content-Type":Wo(H)}),h.end(re);return}}let b=P.existsSync(i),F=b?M.join(i,$):M.join(r,"wizard.html");if(b&&P.existsSync(F)&&P.statSync(F).isFile()){let C=P.readFileSync(F);h.writeHead(200,{"Content-Type":Wo(F)}),h.end(C);return}if(!b&&$==="/index.html"){let C=P.readFileSync(M.join(r,"wizard.html"),"utf8");h.writeHead(200,{"Content-Type":"text/html"}),h.end(C);return}}h.writeHead(404,{"Content-Type":"text/plain"}),h.end("Not found")}catch(T){h.writeHead(500,{"Content-Type":"text/plain"}),h.end(`Server error: ${U(T)}`)}});E.listen(g,()=>{let p=S;console.log(`
|
|
139
|
+
${I.bold}${I.cyan}\u{1F3A8} Survey UI Customization Wizard${I.reset}`),console.log(`${I.bold}\u{1F517} Client wizard link \u2014 share this URL only:${I.reset}`),console.log(` ${I.green}${p}${I.reset}`),console.log(`${I.dim} Port ${g} (auto-selected if 4200 was in use)${I.reset}`),console.log(`${I.dim} Live previews: ${I.reset}${Object.keys(c).length} components`),console.log(`${I.dim} Preview target: ${I.reset}${s}`),console.log(`${I.dim} Default wizard \u2014 saves directly to survey-ui-config.json when client clicks Review & Build${I.reset}
|
|
140
|
+
`),sn(p)}),E.on("error",k);let R=()=>{to(e),E.close(()=>process.exit(130))};process.once("SIGINT",R),process.once("SIGTERM",R)})}q();import*as we from"fs";import*as Qo from"path";import*as Ko from"http";import*as Yo from"https";Se();xe();$e();qe();var y=l;function dn(e){let{exec:o}=Pe("child_process"),t=process.platform==="darwin"?`open "${e}"`:process.platform==="win32"?`start "" "${e}"`:`xdg-open "${e}"`;o(t)}function fn(e){return new Promise(o=>setTimeout(o,e))}async function ro(e,o={}){return new Promise((t,n)=>{let r=new URL(e),s=(r.protocol==="https:"?Yo:Ko).request(r,{method:o.method??"GET",headers:o.headers??{}},c=>{let d="";c.on("data",m=>d+=m),c.on("end",()=>{if((c.statusCode??500)>=400){n(new Error(`HTTP ${c.statusCode}: ${d}`));return}try{t(JSON.parse(d))}catch{n(new Error(`Invalid JSON: ${d.slice(0,200)}`))}})});s.on("error",n),o.body&&s.write(o.body),s.end()})}async function un(e,o,t,n){return new Promise((r,i)=>{let s=new URL(e),c=s.protocol==="https:"?Yo:Ko,d={"Content-Type":t,"Content-Length":o.length};n&&(d["X-Wizard-Session"]=n.sessionSecret,d["X-Wizard-Session-Id"]=n.sessionId);let m=c.request(s,{method:"PUT",headers:d},g=>{if((g.statusCode??500)>=400){let S="";g.on("data",x=>S+=x),g.on("end",()=>i(new Error(`PUT failed ${g.statusCode}: ${S}`)));return}g.resume(),r()});m.on("error",i),m.write(o),m.end()})}function pn(e){try{let o=e.split(".")[1];return JSON.parse(Buffer.from(o,"base64url").toString("utf8")).surveyId??null}catch{return null}}async function Zo(e={}){let o=e.wait!==!1,t=e.pollIntervalMs??Number(process.env.CFM_WIZARD_POLL_MS??3e3),n=e.timeoutMs??Number(process.env.CFM_WIZARD_TIMEOUT_MS??72e5),r=process.env.CFM_INSTANCE_ID,i=(process.env.CFM_DEPLOY_API_BASE??"http://localhost:3000").replace(/\/$/,"");if(!r)throw new Error("CFM_INSTANCE_ID (JWT) is required");let s=pn(r);if(!s)throw new Error("Could not parse surveyId from CFM_INSTANCE_ID JWT");let c=Le(),d=te(c),m=d.activeConfigPath,g=e.apply?!1:e.review!==!1;console.log(`
|
|
141
|
+
${y.bold}${y.cyan}\u{1F3A8} CFM UI Customization (AWS)${y.reset}
|
|
142
|
+
`),g&&(console.log(`${y.dim} Review mode: seed kept in survey-ui-config.json; final + diff written on complete.${y.reset}`),console.log(`${y.dim} Apply later with: npx cfm-sdk confirm-ui-config${y.reset}
|
|
143
|
+
`));let S=[...J],{outputDir:x,files:k}=await ge({projectRoot:c,useTemplatesOnly:e.useTemplatesOnly,surveyTypes:S}),E=k.map(b=>({path:b.path,contentType:b.contentType,sizeBytes:b.sizeBytes})),{config:R,source:p}=pe({projectRoot:c,surveyTypes:S,instanceId:s});R.surveyTypes=S,He(p),g&&(we.writeFileSync(d.seedPath,JSON.stringify(R,null,2),"utf8"),we.writeFileSync(m,JSON.stringify(R,null,2),"utf8"),console.log(`${y.dim} Seed snapshot \u2192 survey-ui-config.json (+ .seed.json)${y.reset}`));let h=await ro(`${i}/wizard/session/start`,{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({files:E,surveyTypes:S,initialConfig:R})});console.log(`${y.dim} Uploading ${E.length} preview files\u2026${y.reset}`);for(let b of h.uploads){let F=Qo.join(x,b.path),C=we.readFileSync(F),B=E.find(H=>H.path===b.path)?.contentType??"application/octet-stream";await un(b.uploadUrl,C,B,{sessionId:h.sessionId,sessionSecret:h.sessionSecret})}if(await ro(`${i}/wizard/previews/upload/complete`,{method:"POST",headers:{Authorization:`Bearer ${r}`,"Content-Type":"application/json"},body:JSON.stringify({sessionId:h.sessionId})}),console.log(`${y.green}\u2705 Previews uploaded${y.reset}`),console.log(`${y.dim} ${E.length} component preview page(s) \u2192 EC2 local server (disk)${y.reset}`),console.log(`
|
|
144
|
+
${y.bold}${y.cyan}\u{1F517} Client wizard link \u2014 share with the client:${y.reset}`),console.log(`${y.green} ${h.wizardUrl}${y.reset}`),console.log(`${y.dim} (Deployed on EC2 \u2014 client customizes here; agent keeps CLI open until submit)${y.reset}
|
|
145
|
+
`),dn(h.wizardUrl),!o){console.log(`${y.yellow}--no-wait: wizard URL (not polling):${y.reset}`),console.log(h.wizardUrl),g&&console.log(`${y.dim} When wizard completes, poll manually or re-run without --no-wait to capture final + diff.${y.reset}`);return}let T=Date.now()+n,$=0;for(;Date.now()<T;){$+=1,process.stdout.write(`\r${y.dim}Waiting for client to finish wizard\u2026 (poll ${$})${y.reset}`);let b=await ro(`${i}/wizard/config/${encodeURIComponent(s)}?sessionId=${h.sessionId}`,{headers:{Authorization:`Bearer ${r}`}});if(b.status==="abandoned")throw console.log(`
|
|
146
|
+
${y.yellow}\u26A0 Client quit the wizard \u2014 session cleaned up on S3${y.reset}`),new Error("Client quit the wizard without saving. S3 preview garbage was removed. Re-run customize-ui to start a new session.");if(b.status==="ready"&&b.config){let F=ze(b)??b.config;if(console.log(`
|
|
147
|
+
${y.green}\u2705 Configuration ready${y.reset}`),b.logoUrl&&console.log(`${y.dim} Logo URL: ${b.logoUrl}${y.reset}`),g){let H=Ue(c,R,F);console.log(`${y.green} Seed (unchanged active): ${m}${y.reset}`),console.log(`${y.green} Final: ${d.finalPath}${y.reset}`),console.log(`${y.green} Diff: ${d.diffMdPath}${y.reset}`),console.log(`${y.yellow} ${H.changed.length} changed, ${H.added.length} added, ${H.removed.length} removed${y.reset}`);let re=F.global?.logo;if(re?.fileName)try{await le({projectRoot:c,fileName:re.fileName,logoUrl:b.logoUrl,jwt:r,apiBase:i,surveyId:s}),console.log(`${y.green} Logo saved to public/${re.fileName}${y.reset}`)}catch(rt){console.warn(`${y.yellow} Logo download deferred: ${U(rt)}${y.reset}`)}console.log(`${y.dim} Apply when ready: npx cfm-sdk confirm-ui-config (promotes JSON + regenerates survey-theme.css)${y.reset}`);return}we.writeFileSync(m,JSON.stringify(F,null,2),"utf8"),console.log(`${y.green} Written ${m}${y.reset}`);let{runApplyUiConfig:C}=await Promise.resolve().then(()=>(Ae(),Re));C({projectRoot:c,configPath:m});let B=F.global?.logo;B?.fileName&&(await le({projectRoot:c,fileName:B.fileName,logoUrl:b.logoUrl,jwt:r,apiBase:i,surveyId:s}),console.log(`${y.green} Logo saved to public/${B.fileName}${y.reset}`));return}await fn(t)}throw new Error("Timed out waiting for wizard completion")}xe();q();var v=l,ne=process.argv.slice(2),Y=ne[0];async function Cn(){if(Y==="customize"||Y==="init"){Y==="init"&&console.log(`${v.yellow}\u26A0 cfm-sdk init is deprecated. Use \`cfm-sdk customize\` instead.${v.reset}
|
|
148
148
|
`);try{await Ho()}catch(e){console.error(`
|
|
149
|
-
${
|
|
150
|
-
${
|
|
151
|
-
${
|
|
152
|
-
${
|
|
153
|
-
${
|
|
154
|
-
${
|
|
155
|
-
${
|
|
156
|
-
${
|
|
157
|
-
${
|
|
158
|
-
Usage:`),console.log(" npx cfm-sdk customize \u2013 Local UI customization wizard"),console.log(" npx cfm-sdk customize-ui \u2013 AWS wizard (review mode: seed + diff, no auto-apply)"),console.log(" npx cfm-sdk customize-ui --apply \u2013 AWS wizard (legacy: write final config immediately)"),console.log(" npx cfm-sdk confirm-ui-config \u2013 Promote final config + apply CSS to project"),console.log(" npx cfm-sdk apply-ui-config \u2013 Regenerate survey-theme.css from survey-ui-config.json"),console.log(" npx cfm-sdk fetch-ui-config \u2013 Pull final + diff after client completes (--no-wait)"),console.log(" npx cfm-sdk export-previews \u2013 Build component preview pages only"),console.log(" npx cfm-sdk resolve-ui-config --write \u2013 Write draft survey-ui-config.json from project"),console.log(" npx cfm-sdk deploy \u2013 Deploy to Vercel"),process.exit(0)}
|
|
149
|
+
${v.red}\u274C Error: ${U(e)}${v.reset}`),process.exit(1)}}else if(Y==="customize-ui"){let e=ne.includes("--use-templates-only"),o=ne.includes("--no-wait"),t=ne.includes("--apply"),n=ne.includes("--no-review")?!1:!t;try{await Zo({useTemplatesOnly:e,wait:!o,review:n,apply:t})}catch(r){console.error(`
|
|
150
|
+
${v.red}\u274C Error: ${U(r)}${v.reset}`),process.exit(1)}}else if(Y==="confirm-ui-config"){let e=ne.includes("--diff-only");try{let{runConfirmUiConfig:o}=await Promise.resolve().then(()=>(ot(),et));await o({diffOnly:e})}catch(o){console.error(`
|
|
151
|
+
${v.red}\u274C Error: ${U(o)}${v.reset}`),process.exit(1)}}else if(Y==="apply-ui-config")try{let{runApplyUiConfig:e}=await Promise.resolve().then(()=>(Ae(),Re));e({})}catch(e){console.error(`
|
|
152
|
+
${v.red}\u274C Error: ${U(e)}${v.reset}`),process.exit(1)}else if(Y==="fetch-ui-config"){let o=ne.find(t=>t.startsWith("--session="))?.split("=")[1];try{let{runFetchUiConfig:t}=await Promise.resolve().then(()=>(nt(),tt));await t({sessionId:o})}catch(t){console.error(`
|
|
153
|
+
${v.red}\u274C Error: ${U(t)}${v.reset}`),process.exit(1)}}else if(Y==="export-previews"){let e=ne.includes("--use-templates-only");try{await ge({useTemplatesOnly:e})}catch(o){console.error(`
|
|
154
|
+
${v.red}\u274C Error: ${U(o)}${v.reset}`),process.exit(1)}}else if(Y==="resolve-ui-config"){let e=ne.includes("--write");try{if(e){let o=Ve();console.log(`${v.green}\u2705 Wrote ${o}${v.reset}`)}else{let{resolveInitialConfig:o}=await Promise.resolve().then(()=>(xe(),Ao)),{config:t,source:n}=o({surveyTypes:[]});console.log(JSON.stringify({source:n,config:t},null,2))}}catch(o){console.error(`
|
|
155
|
+
${v.red}\u274C Error: ${U(o)}${v.reset}`),process.exit(1)}}else if(Y==="deploy")try{await fo()}catch(e){console.error(`
|
|
156
|
+
${v.red}\u274C Error: ${U(e)}${v.reset}`),process.exit(1)}else console.log(`
|
|
157
|
+
${v.bold}${v.cyan}CFM SDK CLI Tool${v.reset}`),console.log(`
|
|
158
|
+
Usage:`),console.log(" npx cfm-sdk customize \u2013 Local UI customization wizard"),console.log(" npx cfm-sdk customize-ui \u2013 AWS wizard (review mode: seed + diff, no auto-apply)"),console.log(" npx cfm-sdk customize-ui --apply \u2013 AWS wizard (legacy: write final config immediately)"),console.log(" npx cfm-sdk confirm-ui-config \u2013 Promote final config + apply CSS to project"),console.log(" npx cfm-sdk apply-ui-config \u2013 Regenerate survey-theme.css from survey-ui-config.json"),console.log(" npx cfm-sdk fetch-ui-config \u2013 Pull final + diff after client completes (--no-wait)"),console.log(" npx cfm-sdk export-previews \u2013 Build component preview pages only"),console.log(" npx cfm-sdk resolve-ui-config --write \u2013 Write draft survey-ui-config.json from project"),console.log(" npx cfm-sdk deploy \u2013 Deploy to Vercel"),process.exit(0)}Cn();
|