@emeraldemperaur/vector-sigma 1.4.45 → 1.4.47

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/README.md CHANGED
@@ -343,25 +343,34 @@ import { useVectorSigma } from './hooks/useVectorSigma';
343
343
 
344
344
  <li><strong>🎨Theming Extensibilty</strong></br>
345
345
  <p align="justify">Customizable to fit seamlessly into an existing design system and allow developer control of the visual layer through standard CSS patterns.</p>
346
+ <p>Radix UI <code>theme</code> {} passed into the <code>transfrom()</code> or <code>render()</code> method(s) as an <code>options</code> attribute can be leveraged to cleverly align the returned xForm style and appearance with an extant application design system.</p>
346
347
 
347
348
  ```javascript
348
- import { Theme, File, Dropdown } from '@emeraldemperaur/vector-sigma';
349
+ import React from 'react';
350
+ import { VectorSigma } from './VectorSigma';
349
351
 
350
- const App = () => {
351
- return (
352
-
353
- <Theme>
354
- <File/>
355
- <Dropdown/>
356
- </Theme>
357
- );
358
- }
352
+ const xForm97 = new VectorSigma(apiJSONData);
353
+
354
+ return xForm97.render({
355
+ displayMode: 'codex',
356
+ // www.radix-ui.com/themes/docs/components/theme
357
+ theme: {
358
+ appearance: 'dark',
359
+ accentColor: 'yellow',
360
+ grayColor: 'slate',
361
+ radius: 'none',
362
+ scaling: '100%'
363
+ },
364
+ onSubmit: async (values, actions, instance) => {
365
+ console.log(values);
366
+ }
367
+ });
359
368
  ```
360
369
  </li>
361
370
 
362
371
  <li><strong>🧩Exported UI Components</strong></br>
363
372
  <p align="justify">Explicitly exported reusable form UI components with material, outline and neumorphic design variants from package entry point <code>src/index.ts</code> to enable developer-friendly use as lightweight ARIA compliant component library.</p>
364
- <p><em>Container, Row, Column, Theme, Accordion, AccordionItem, Codex, CodexItem, CodexControls, AvatarInput, ButtonInput, CheckboxGroupInput, ConditionalTrigger, DatePicker, DateRangePicker, DateTimePicker, Dropdown, File, FileMultiple, FlagIcon, Icon, Image, Input, PasswordInput, PhoneInput, CreditCardInput, CurrencyInput, StockInput, RadioGroupInput, OptionSelect, MultipleSelect, RangeSlider, SliderInput, Toggle, SectionTitle, Teletraan1 (Render Matrix)</em></p>
373
+ <p><em>Container, Row, Column, Theme, Accordion, AccordionItem, Codex, CodexItem, CodexControls, AvatarInput, ButtonInput, CheckboxGroupInput, ConditionalTrigger, DatePicker, DateRangePicker, DateTimePicker, Dropdown, CountrySelect, File, FileMultiple, FlagIcon, Icon, Image, Input, PasswordInput, PhoneInput, CreditCardInput, CurrencyInput, StockInput, RadioGroupInput, OptionSelect, MultipleSelect, RangeSlider, SliderInput, Toggle, SectionTitle, Teletraan1 (Render Matrix)</em></p>
365
374
 
366
375
  ```javascript
367
376
  import { Container, Column, Row, CheckboxGroup, Dropdown, File, RangeSlider }
package/lib/index.cjs CHANGED
@@ -31804,13 +31804,11 @@ const File$1 = (_a) => {
31804
31804
  width: '100%',
31805
31805
  position: 'relative',
31806
31806
  overflow: 'hidden',
31807
+ boxSizing: 'border-box',
31807
31808
  };
31808
31809
  const materialTrigger = Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'var(--color-surface)', boxShadow: hasError ? 'inset 0 0 0 1px var(--red-9)' : '0 2px 5px rgba(0,0,0,0.1)' });
31809
31810
  const outlineTrigger = Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'transparent', border: hasError ? '2px dashed var(--red-9)' : '2px dashed var(--gray-8)' });
31810
- const neumorphicTrigger = Object.assign(Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'var(--neu-bg)', color: hasError ? 'var(--red-9)' : 'var(--neu-text)',
31811
- // Empty: (Dropzone effect)
31812
- // Selected: (Card effect)
31813
- boxShadow: !selectedFile
31811
+ const neumorphicTrigger = Object.assign(Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'var(--neu-bg)', color: hasError ? 'var(--red-9)' : 'var(--neu-text)', boxShadow: !selectedFile
31814
31812
  ? 'inset 3px 3px 6px var(--neu-shadow-dark), inset -3px -3px 6px var(--neu-shadow-light)'
31815
31813
  : '6px 6px 12px var(--neu-shadow-dark), -6px -6px 12px var(--neu-shadow-light)', border: 'none' }), neuVars);
31816
31814
  const activeStyle = inputtype === 'fileinput-neumorphic' ? neumorphicTrigger :
@@ -31827,11 +31825,11 @@ const File$1 = (_a) => {
31827
31825
  } }, !selectedFile ? (
31828
31826
  // --- EMPTY STATE RENDER ---
31829
31827
  React.createElement(p$5, { align: "center", gap: "3", style: { width: '100%', color: 'var(--gray-10)' } },
31830
- React.createElement(p$8, { style: { padding: 8, borderRadius: '50%', backgroundColor: 'var(--gray-3)' } },
31828
+ React.createElement(p$8, { style: { padding: 8, borderRadius: '50%', backgroundColor: 'var(--gray-3)', flexShrink: 0 } },
31831
31829
  React.createElement(Icon, { name: 'upload', width: "18", height: "18" })),
31832
- React.createElement(p$5, { direction: "column" },
31833
- React.createElement(p$d, { size: "2", weight: "bold", color: "gray" }, "Upload File"),
31834
- React.createElement(p$d, { size: "1", color: "gray" }, "Supports PDF, Images, Excel, JSON...")))) : (
31830
+ React.createElement(p$5, { direction: "column", style: { minWidth: 0, flex: 1 } },
31831
+ React.createElement(p$d, { size: "2", weight: "bold", color: "gray", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, "Upload File"),
31832
+ React.createElement(p$d, { size: "1", color: "gray", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, "Supports PDF, Images, Excel, JSON...")))) : (
31835
31833
  // --- SELECTED STATE RENDER ---
31836
31834
  React.createElement(p$5, { align: "center", gap: "4", style: { width: '100%' } },
31837
31835
  preview && previewUrl ? (React.createElement(i$9, { ratio: 1, style: { width: 48, height: 48, borderRadius: 6, overflow: 'hidden', flexShrink: 0 } },
@@ -31841,24 +31839,19 @@ const File$1 = (_a) => {
31841
31839
  backgroundColor: 'var(--accent-3)', color: 'var(--accent-9)',
31842
31840
  borderRadius: 6, flexShrink: 0
31843
31841
  } }, getFileIcon$1(selectedFile.type, selectedFile.name))),
31844
- React.createElement(p$5, { direction: "column", style: { flexGrow: 1, overflow: 'hidden' } },
31842
+ React.createElement(p$5, { direction: "column", style: { flexGrow: 1, minWidth: 0, overflow: 'hidden' } },
31845
31843
  React.createElement(p$d, { size: "2", weight: "bold", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, selectedFile.name),
31846
31844
  React.createElement(p$5, { gap: "2", align: "center" },
31847
31845
  React.createElement(p$d, { size: "1", color: "gray" }, formatBytes(selectedFile.size)),
31848
31846
  React.createElement(e$a, { size: "1", color: "gray", variant: "soft" }, (_b = selectedFile.name.split('.').pop()) === null || _b === void 0 ? void 0 : _b.toUpperCase()))),
31849
31847
  React.createElement(o$5, { size: "1", variant: "ghost", color: "red", onClick: handleClear, style: { borderRadius: '50%', padding: 4 } },
31850
31848
  React.createElement(Icon, { name: 'close', width: "16", height: "16" }))))),
31851
- React.createElement("div", null,
31852
- React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: inputId }, inputLabel),
31853
- "\u00A0",
31854
- isHinted ?
31855
- React.createElement(React.Fragment, null,
31856
- React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
31857
- React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer" },
31858
- React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))) : null,
31859
- hasError ?
31860
- React.createElement(React.Fragment, null,
31861
- React.createElement("p", { id: errorId, className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : "Required field"))) : null))));
31849
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
31850
+ inputLabel && (React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: inputId }, inputLabel)),
31851
+ isHinted && (React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
31852
+ React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
31853
+ React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
31854
+ hasError && (React.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
31862
31855
  };
31863
31856
 
31864
31857
  const getFileIcon = (fileOrUrl) => {
@@ -31961,20 +31954,21 @@ const FileMultiple = (_a) => {
31961
31954
  const isNeumorphic = inputtype === 'filemultiple-neumorphic';
31962
31955
  return (React.createElement(Column, { span: width, newLine: newRow },
31963
31956
  React.createElement(p$5, { direction: "column", gap: "2", className: className, style: Object.assign({ width: '100%' }, style) },
31964
- React.createElement(p$8, { onClick: () => { var _a; return !readOnly && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click()); }, p: "4", style: Object.assign(Object.assign({}, styles[inputtype]), { cursor: readOnly ? 'default' : 'pointer', transition: 'all 0.2s', borderColor: hasError ? 'var(--red-9)' : (styles[inputtype].borderBottom ? 'var(--accent-9)' : 'var(--gray-a8)'), position: 'relative', opacity: readOnly ? 0.7 : 1 }) },
31957
+ React.createElement(p$8, { onClick: () => { var _a; return !readOnly && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click()); }, p: "4", style: Object.assign(Object.assign({}, styles[inputtype]), { cursor: readOnly ? 'default' : 'pointer', transition: 'all 0.2s', borderColor: hasError ? 'var(--red-9)' : (inputtype === 'filemultiple-material' ? 'var(--accent-9)' : 'var(--gray-a8)'), position: 'relative', opacity: readOnly ? 0.7 : 1, boxSizing: 'border-box', width: '100%', overflow: 'hidden' }) },
31965
31958
  React.createElement(p$5, { align: "center", gap: "4" },
31966
31959
  React.createElement(p$8, { style: {
31967
31960
  background: isNeumorphic ? '#e0e0e0' : 'var(--accent-3)',
31968
31961
  borderRadius: '50%',
31969
31962
  padding: '10px',
31970
- boxShadow: isNeumorphic ? 'inset 3px 3px 6px #b8b9be, inset -3px -3px 6px #ffffff' : 'none'
31963
+ boxShadow: isNeumorphic ? 'inset 3px 3px 6px #b8b9be, inset -3px -3px 6px #ffffff' : 'none',
31964
+ flexShrink: 0
31971
31965
  } },
31972
31966
  React.createElement(Icon, { name: 'upload', width: "20", height: "20", color: isNeumorphic ? '#555' : 'var(--accent-9)' })),
31973
- React.createElement(p$5, { direction: "column" },
31974
- React.createElement(p$d, { weight: "bold", style: { color: isNeumorphic ? '#444' : 'inherit' } }, currentFiles.length > 0
31967
+ React.createElement(p$5, { direction: "column", style: { minWidth: 0, flex: 1 } },
31968
+ React.createElement(p$d, { weight: "bold", style: { color: isNeumorphic ? '#444' : 'inherit', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, currentFiles.length > 0
31975
31969
  ? `${currentFiles.length} file${currentFiles.length !== 1 ? 's' : ''} selected`
31976
31970
  : (placeholder || "Choose files...")),
31977
- React.createElement(p$d, { size: "1", color: "gray", style: { opacity: 0.8 } }, "PDF, Images, Office Docs, JSON, ZIP"))),
31971
+ React.createElement(p$d, { size: "1", color: "gray", style: { opacity: 0.8, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, "PDF, Images, Office Docs, JSON, ZIP"))),
31978
31972
  React.createElement("input", { id: inputId, ref: inputRef, name: alias, type: "file", multiple: true, accept: ACCEPTED_EXTENSIONS, onChange: handleFileChange, disabled: readOnly, style: { display: 'none' }, "aria-describedby": hasError ? errorId : undefined })),
31979
31973
  preview && currentFiles.length > 0 && (React.createElement(o$6, { columns: "repeat(auto-fill, minmax(220px, 1fr))", gap: "3", mt: "1" }, currentFiles.map((file, index) => {
31980
31974
  let previewUrl = null;
@@ -32003,7 +31997,8 @@ const FileMultiple = (_a) => {
32003
31997
  background: 'var(--gray-a3)',
32004
31998
  display: 'flex',
32005
31999
  alignItems: 'center',
32006
- justifyContent: 'center'
32000
+ justifyContent: 'center',
32001
+ flexShrink: 0
32007
32002
  } }, previewUrl && (fileName.match(/\.(jpeg|jpg|png|gif|webp)$/i) || (file instanceof File && file.type.startsWith('image/'))) ? (React.createElement("img", { src: previewUrl, alt: "preview", style: { width: '100%', height: '100%', objectFit: 'cover' } })) : (getFileIcon(file))),
32008
32003
  React.createElement(p$5, { direction: "column", style: { flex: 1, overflow: 'hidden' } },
32009
32004
  React.createElement(p$d, { size: "1", weight: "bold", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', color: isNeumorphic ? '#444' : 'inherit' } }, fileName),
@@ -32014,13 +32009,12 @@ const FileMultiple = (_a) => {
32014
32009
  } },
32015
32010
  React.createElement(Icon, { name: 'close' }))))));
32016
32011
  }))),
32017
- React.createElement("div", null,
32012
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
32018
32013
  inputLabel && (React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: inputId }, inputLabel)),
32019
- "\u00A0",
32020
- isHinted && (React.createElement(e, { content: hintText || "No hint available" },
32021
- React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer" },
32022
- React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray', marginLeft: 4 } })))),
32023
- hasError && (React.createElement(p$d, { id: errorId, size: "1", color: "red", style: { display: 'block', marginTop: 2 } }, typeof fieldError === 'string' ? (errorText || fieldError) : 'Invalid file selection'))))));
32014
+ isHinted && (React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
32015
+ React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
32016
+ React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
32017
+ hasError && (React.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
32024
32018
  };
32025
32019
 
32026
32020
  const getStyles = (design, layout) => {
@@ -32055,9 +32049,9 @@ const getStyles = (design, layout) => {
32055
32049
  const ImageOutput = ({ id, src, alt = "Image", design = 'outline', layout = 'normal', aspectratio = 16 / 9, height, width = '100%', className, style, onClick, }) => {
32056
32050
  const containerStyles = getStyles(design, layout);
32057
32051
  const iconColor = design === 'neumorphic' ? '#555' : 'var(--gray-9)';
32058
- const content = (React.createElement(p$8, { className: className, style: Object.assign(Object.assign(Object.assign({}, containerStyles), { width, height: height || 'auto' }), style), onClick: onClick }, src ? (React.createElement("img", { id: String(id), src: src, alt: alt, style: {
32059
- width: '333px',
32060
- height: '333px',
32052
+ const content = (React.createElement(p$8, { className: className, style: Object.assign(Object.assign(Object.assign({}, containerStyles), { width: '100%', height: height || '100%' }), style), onClick: onClick }, src ? (React.createElement("img", { id: String(id), src: src, alt: alt, style: {
32053
+ width: '100%',
32054
+ height: '100%',
32061
32055
  objectFit: 'cover',
32062
32056
  display: 'block',
32063
32057
  } })) : (React.createElement(p$5, { align: "center", justify: "center", style: {
@@ -32069,11 +32063,7 @@ const ImageOutput = ({ id, src, alt = "Image", design = 'outline', layout = 'nor
32069
32063
  React.createElement(p$5, { direction: "column", align: "center", gap: "2" },
32070
32064
  React.createElement(Icon, { name: 'image', width: "32", height: "32", color: iconColor, style: { opacity: 0.5 } }),
32071
32065
  React.createElement(p$d, { size: "1", color: "gray" }, "No Image"))))));
32072
- if (height) {
32073
- return content;
32074
- }
32075
- return (React.createElement(p$8, { style: { width } },
32076
- React.createElement(i$9, { ratio: aspectratio }, content)));
32066
+ return (React.createElement(p$8, { style: { width, maxWidth: 500, maxHeight: 500 } }, height ? (content) : (React.createElement(i$9, { ratio: aspectratio }, content))));
32077
32067
  };
32078
32068
 
32079
32069
  const Input$1 = (_a) => {
@@ -39690,7 +39680,7 @@ function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) le
39690
39680
  function _extends$8() { _extends$8 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
39691
39681
  function _objectWithoutProperties$8(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$8(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
39692
39682
  function _objectWithoutPropertiesLoose$8(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
39693
- function CountrySelect(_ref) {
39683
+ function CountrySelect$1(_ref) {
39694
39684
  var value = _ref.value,
39695
39685
  onChange = _ref.onChange,
39696
39686
  options = _ref.options,
@@ -39724,7 +39714,7 @@ function CountrySelect(_ref) {
39724
39714
  }, label);
39725
39715
  }));
39726
39716
  }
39727
- CountrySelect.propTypes = {
39717
+ CountrySelect$1.propTypes = {
39728
39718
  /**
39729
39719
  * A two-letter country code.
39730
39720
  * Example: "US", "RU", etc.
@@ -39769,7 +39759,7 @@ function CountrySelectWithIcon(_ref3) {
39769
39759
  }, [options, value]);
39770
39760
  return /*#__PURE__*/React.createElement("div", {
39771
39761
  className: "PhoneInputCountry"
39772
- }, /*#__PURE__*/React.createElement(CountrySelect, _extends$8({}, rest, {
39762
+ }, /*#__PURE__*/React.createElement(CountrySelect$1, _extends$8({}, rest, {
39773
39763
  value: value,
39774
39764
  options: options,
39775
39765
  className: classNames('PhoneInputCountrySelect', className)
@@ -55533,7 +55523,6 @@ const CreditCardInput = (_a) => {
55533
55523
  React.createElement("div", { style: { display: 'flex', alignItems: 'center' } }, getCardIcon())),
55534
55524
  React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
55535
55525
  inputLabel && (React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
55536
- "\u00A0",
55537
55526
  isHinted && (React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
55538
55527
  React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
55539
55528
  React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
@@ -55688,8 +55677,8 @@ const CurrencyInput = (_a) => {
55688
55677
  textAlign: 'right',
55689
55678
  width: '100%'
55690
55679
  }, inputMode: "decimal", autoComplete: "off" }))),
55691
- React.createElement("div", null,
55692
- React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel),
55680
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
55681
+ inputLabel && (React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
55693
55682
  isHinted && (React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
55694
55683
  React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
55695
55684
  React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
@@ -55769,12 +55758,12 @@ const StockInput = (_a) => {
55769
55758
  fontWeight: 500,
55770
55759
  fontFamily: 'var(--default-font-family)',
55771
55760
  }, inputMode: "decimal", autoComplete: "off" }))),
55772
- React.createElement("div", null,
55761
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
55773
55762
  inputLabel && (React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
55774
55763
  isHinted && (React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
55775
55764
  React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
55776
55765
  React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
55777
- hasError && (React.createElement("p", { id: errorId, className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
55766
+ hasError && (React.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
55778
55767
  };
55779
55768
 
55780
55769
  const RadioGroupInput = (_a) => {
@@ -56187,9 +56176,8 @@ const SliderInput = (_a) => {
56187
56176
  }, onValueCommit: () => {
56188
56177
  setFieldTouched(alias, true, false);
56189
56178
  }, className: inputtype === 'slider-neumorphic' ? 'neu-slider' : inputtype === 'slider-outline' ? 'outline-slider' : '', style: neuVars }),
56190
- React.createElement("div", null,
56191
- React.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold" }, inputLabel),
56192
- "\u00A0",
56179
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
56180
+ inputLabel && (React.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold" }, inputLabel)),
56193
56181
  isHinted ?
56194
56182
  React.createElement(React.Fragment, null,
56195
56183
  React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
@@ -56259,8 +56247,8 @@ const RangeSlider = (_a) => {
56259
56247
  React.createElement(s, { name: alias, id: `${alias}FormInput`, disabled: readOnly, "aria-labelledby": labelId, min: minvalue, max: maxvalue, step: stepvalue, minStepsBetweenThumbs: minStepsBetweenThumbs, value: sliderValue, onValueChange: (val) => {
56260
56248
  setFieldValue(alias, isRange ? val : val[0]);
56261
56249
  }, onValueCommit: () => setFieldTouched(alias, true, false), className: inputtype === 'range-neumorphic' ? 'neu-slider' : inputtype === 'range-outline' ? 'outline-slider' : '', style: neuVars }),
56262
- React.createElement("div", null,
56263
- React.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold", style: { display: 'inline' } }, inputLabel),
56250
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
56251
+ inputLabel && (React.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold", style: { display: 'inline' } }, inputLabel)),
56264
56252
  isHinted && (React.createElement(React.Fragment, null,
56265
56253
  React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
56266
56254
  React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer" },
@@ -56863,6 +56851,9 @@ const datePickerInputType = ["datepicker", "datepickerinput", "datepicker-input"
56863
56851
  const dateRangePickerInputType = ["daterangepicker", "daterangepickerinput", "daterangepicker-input", "input-daterangepicker", "inputdaterangepicker"];
56864
56852
  const dateTimePickerInputType = ["datetimepicker", "datetimepickerinput", "datetimepicker-input", "input-datetimepicker", "inputdatetimepicker"];
56865
56853
  const dropdownInputType = ["dropdown", "dropdowninput", "dropdown-input", "input-dropdown", "inputdropdown"];
56854
+ const countrydropdownInputType = ["countrydropdown", "countrydropdowninput", "countrydropdown-input", "input-countrydropdown", "inputcountrydropdown",
56855
+ "countryselect", "countryselect-input", "countryselectinput", "input-countryselect"];
56856
+ const countrymultiselectInputType = ["countrymultiselect", "countrymultiselectinput", "countrymultiselect-input", "input-countrymultiselect", "inputcountrymultiselect"];
56866
56857
  const fileInputType = ["file", "fileinput", "file-input", "input-file", "inputfile"];
56867
56858
  const fileMultipleInputType = ["filemultiple", "filemultipleinput", "filemultiple-input", "input-filemultiple", "inputfilemultiple"];
56868
56859
  const imageOutputType = ["image", "imageoutput", "image-output", "output-image", "outputimage"];
@@ -57012,6 +57003,151 @@ const DateTimePicker = ({ alias, inputLabel, inputtype = 'datetimepicker-outline
57012
57003
  hasError && (React.createElement(p$d, { size: "1", color: "red", style: { display: 'block' } }, errorText || (typeof fieldError === 'string' ? fieldError : "Required field")))))));
57013
57004
  };
57014
57005
 
57006
+ const CountrySelect = (_a) => {
57007
+ var _b;
57008
+ var { inputtype = 'countryselect-outline', alias, readOnly, width, inputLabel, placeholder = 'Select Country...', newRow, isHinted, hintText, hintUrl, errorText, displayFlag = true, multiselect = false, enableSearch = false, style, className, formikContext } = _a; __rest$1(_a, ["inputtype", "alias", "readOnly", "width", "inputLabel", "placeholder", "newRow", "isHinted", "hintText", "hintUrl", "errorText", "displayFlag", "multiselect", "enableSearch", "style", "className", "formikContext"]);
57009
+ const defaultFormikContext = formik.useFormikContext();
57010
+ const activeContext = formikContext || defaultFormikContext;
57011
+ if (!activeContext) {
57012
+ console.error(`CountryDropdown '${alias}' must be used within a Formik provider.`);
57013
+ return null;
57014
+ }
57015
+ const { values, touched, errors, setFieldValue, setFieldTouched } = activeContext;
57016
+ const fieldValue = formik.getIn(values, alias);
57017
+ const fieldTouched = formik.getIn(touched, alias);
57018
+ const fieldError = formik.getIn(errors, alias);
57019
+ const selectedValues = React.useMemo(() => {
57020
+ if (multiselect)
57021
+ return Array.isArray(fieldValue) ? fieldValue : [];
57022
+ return fieldValue ? [String(fieldValue)] : [];
57023
+ }, [fieldValue, multiselect]);
57024
+ const hasError = Boolean(fieldTouched && fieldError);
57025
+ const triggerRef = React.useRef(null);
57026
+ const [neuVars, setNeuVars] = React.useState({});
57027
+ const [isOpen, setIsOpen] = React.useState(false);
57028
+ const [searchQuery, setSearchQuery] = React.useState("");
57029
+ const errorId = `${alias}-error`;
57030
+ const allCountries = React.useMemo(() => {
57031
+ return getCountries().map(c => ({ value: c, label: en[c] }));
57032
+ }, []);
57033
+ const filteredCountries = React.useMemo(() => {
57034
+ if (!enableSearch || !searchQuery)
57035
+ return allCountries;
57036
+ const lowerSearch = searchQuery.toLowerCase();
57037
+ return allCountries.filter(c => c.label.toLowerCase().includes(lowerSearch));
57038
+ }, [allCountries, searchQuery, enableSearch]);
57039
+ const handleSelection = (countryCode) => {
57040
+ if (multiselect) {
57041
+ const newValues = selectedValues.includes(countryCode)
57042
+ ? selectedValues.filter((v) => v !== countryCode)
57043
+ : [...selectedValues, countryCode];
57044
+ setFieldValue(alias, newValues);
57045
+ }
57046
+ else {
57047
+ setFieldValue(alias, countryCode);
57048
+ setIsOpen(false);
57049
+ }
57050
+ setTimeout(() => setFieldTouched(alias, true, false), 0);
57051
+ };
57052
+ const displayLabel = React.useMemo(() => {
57053
+ if (selectedValues.length === 0)
57054
+ return placeholder;
57055
+ if (!multiselect) {
57056
+ const c = allCountries.find(x => x.value === selectedValues[0]);
57057
+ return c ? c.label : selectedValues[0];
57058
+ }
57059
+ if (selectedValues.length <= 2) {
57060
+ return selectedValues.map(v => { var _a; return ((_a = allCountries.find(x => x.value === v)) === null || _a === void 0 ? void 0 : _a.label) || v; }).join(', ');
57061
+ }
57062
+ return `${selectedValues.length} countries selected`;
57063
+ }, [selectedValues, multiselect, allCountries, placeholder]);
57064
+ React.useEffect(() => {
57065
+ if (inputtype === 'countryselect-neumorphic' && triggerRef.current) {
57066
+ const parentBg = getNearestParentBackground(triggerRef.current.parentElement);
57067
+ setNeuVars({
57068
+ '--neu-bg': parentBg,
57069
+ '--neu-shadow-dark': adjustColor(parentBg, -30),
57070
+ '--neu-shadow-light': adjustColor(parentBg, 30),
57071
+ '--neu-text': 'var(--gray-12)',
57072
+ '--neu-error': 'var(--red-9)',
57073
+ });
57074
+ }
57075
+ }, [inputtype]);
57076
+ React.useEffect(() => {
57077
+ if (!isOpen)
57078
+ setSearchQuery("");
57079
+ }, [isOpen]);
57080
+ // --- STYLES ---
57081
+ const baseTrigger = {
57082
+ display: 'flex',
57083
+ alignItems: 'center',
57084
+ justifyContent: 'space-between',
57085
+ width: '100%',
57086
+ cursor: readOnly ? 'default' : 'pointer',
57087
+ textAlign: 'left',
57088
+ padding: '0 12px',
57089
+ fontSize: 'var(--font-size-2)',
57090
+ fontFamily: 'var(--default-font-family)',
57091
+ whiteSpace: 'nowrap',
57092
+ overflow: 'hidden',
57093
+ boxSizing: 'border-box',
57094
+ opacity: readOnly ? 0.7 : 1,
57095
+ };
57096
+ const materialTrigger = Object.assign(Object.assign({}, baseTrigger), { backgroundColor: 'var(--color-surface)', border: hasError ? '1px solid var(--red-9)' : 'none', boxShadow: '0 2px 5px rgba(0,0,0,0.1)', borderRadius: '4px', height: '32px', fontWeight: 500 });
57097
+ const outlineTrigger = Object.assign(Object.assign({}, baseTrigger), { backgroundColor: 'transparent', border: hasError ? '2px solid var(--red-9)' : '2px solid var(--gray-7)', borderRadius: '4px', height: '32px', fontWeight: 600 });
57098
+ const neumorphicTrigger = Object.assign(Object.assign({}, baseTrigger), { backgroundColor: 'var(--neu-bg)', color: hasError ? 'var(--neu-error)' : 'var(--neu-text)', border: 'none', borderRadius: '12px', height: '40px', fontWeight: 600, boxShadow: isOpen
57099
+ ? 'inset 6px 6px 12px var(--neu-shadow-dark), inset -6px -6px 12px var(--neu-shadow-light)'
57100
+ : '6px 6px 12px var(--neu-shadow-dark), -6px -6px 12px var(--neu-shadow-light)', transition: 'all 0.2s ease' });
57101
+ const activeTrigger = inputtype === 'countryselect-material' ? materialTrigger :
57102
+ inputtype === 'countryselect-outline' ? outlineTrigger : Object.assign(Object.assign({}, neumorphicTrigger), neuVars);
57103
+ return (React.createElement(Column, { span: width, newLine: newRow },
57104
+ React.createElement(p$5, { direction: "column", gap: "2", style: { width: '100%' } },
57105
+ React.createElement(P$1, { open: isOpen, onOpenChange: (open) => {
57106
+ if (readOnly)
57107
+ return;
57108
+ setIsOpen(open);
57109
+ if (!open)
57110
+ setFieldTouched(alias, true, false);
57111
+ } },
57112
+ React.createElement(s$1, null,
57113
+ React.createElement("button", { id: `${alias}FormInput`, type: "button", ref: triggerRef, className: className, style: Object.assign(Object.assign({}, activeTrigger), style), "aria-describedby": `${alias}InputLabel`, disabled: readOnly },
57114
+ React.createElement(p$5, { align: "center", gap: "2", style: { minWidth: 0, flex: 1 } },
57115
+ !multiselect && displayFlag && selectedValues.length === 1 && (React.createElement(FlagIcon, { country: selectedValues[0] })),
57116
+ React.createElement("span", { style: {
57117
+ overflow: 'hidden',
57118
+ textOverflow: 'ellipsis',
57119
+ whiteSpace: 'nowrap',
57120
+ color: selectedValues.length === 0 ? 'var(--gray-8)' : 'inherit'
57121
+ } }, displayLabel)),
57122
+ React.createElement(Icon, { name: 'chevrondown', style: { flexShrink: 0, opacity: 0.5, marginLeft: 8 } }))),
57123
+ React.createElement(i$3, { align: "start", sideOffset: 5, style: Object.assign({ width: ((_b = triggerRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth) || 240, padding: 0, overflow: 'hidden', backgroundColor: inputtype === 'countryselect-neumorphic' ? 'var(--neu-bg)' : 'var(--color-panel-solid)' }, neuVars) },
57124
+ enableSearch && (React.createElement(p$8, { p: "2", style: { borderBottom: inputtype === 'countryselect-neumorphic' ? 'none' : '1px solid var(--gray-6)' } },
57125
+ React.createElement(u, { placeholder: "Search countries...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), variant: inputtype === 'countryselect-neumorphic' ? 'soft' : 'surface' },
57126
+ React.createElement(c, null,
57127
+ React.createElement(Icon, { name: "magnifyingglass", height: "14", width: "14", style: { opacity: 0.5 } }))))),
57128
+ React.createElement(c$1, { type: "auto", scrollbars: "vertical", style: { maxHeight: 250 } },
57129
+ React.createElement(p$8, { p: "2" },
57130
+ React.createElement(p$5, { direction: "column", gap: "1" }, filteredCountries.length === 0 ? (React.createElement(p$d, { size: "2", color: "gray", align: "center", style: { padding: '16px 0' } }, "No countries found.")) : (filteredCountries.map((country) => {
57131
+ const isSelected = selectedValues.includes(country.value);
57132
+ return (React.createElement(p$5, { key: country.value, align: "center", gap: "3", onClick: () => handleSelection(country.value), style: {
57133
+ padding: '8px',
57134
+ cursor: 'pointer',
57135
+ borderRadius: '4px',
57136
+ backgroundColor: isSelected ? 'var(--accent-a3)' : 'transparent',
57137
+ transition: 'background-color 0.1s'
57138
+ } },
57139
+ multiselect && (React.createElement(c$2, { checked: isSelected, style: { pointerEvents: 'none' } })),
57140
+ displayFlag && (React.createElement(FlagIcon, { country: country.value })),
57141
+ React.createElement(p$d, { size: "2", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, country.label)));
57142
+ }))))))),
57143
+ React.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
57144
+ inputLabel && (React.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
57145
+ isHinted && (React.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
57146
+ React.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
57147
+ React.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
57148
+ hasError && (React.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
57149
+ };
57150
+
57015
57151
  const Teletraan1 = ({ xFormModel, readOnlyMode = false, displayMode = 'codice', brandColor = "#000000", onPrev, onNext, onFinish }) => {
57016
57152
  const [dualToggled, setDualToggled] = React.useState(false);
57017
57153
  const [neuVars] = React.useState({
@@ -57058,6 +57194,10 @@ const Teletraan1 = ({ xFormModel, readOnlyMode = false, displayMode = 'codice',
57058
57194
  return React.createElement(DateTimePicker, Object.assign({}, layoutProps, { placeholder: inputPlaceholder }));
57059
57195
  case dropdownInputType.includes(normalizedType):
57060
57196
  return React.createElement(Dropdown, Object.assign({}, layoutProps, { placeholder: inputPlaceholder, inputOptions: inputOptions || [InputOptionsPlaceholder] }));
57197
+ case countrydropdownInputType.includes(normalizedType):
57198
+ return React.createElement(CountrySelect, Object.assign({ displayFlag: true, enableSearch: true }, layoutProps, { placeholder: inputPlaceholder }));
57199
+ case countrymultiselectInputType.includes(normalizedType):
57200
+ return React.createElement(CountrySelect, Object.assign({ displayFlag: true, enableSearch: true, multiselect: true }, layoutProps, { placeholder: inputPlaceholder }));
57061
57201
  case fileInputType.includes(normalizedType):
57062
57202
  return React.createElement(File$1, Object.assign({}, layoutProps, { preview: true }));
57063
57203
  case fileMultipleInputType.includes(normalizedType):
@@ -57129,7 +57269,7 @@ const Teletraan1 = ({ xFormModel, readOnlyMode = false, displayMode = 'codice',
57129
57269
  case 'codex':
57130
57270
  return (React.createElement(Codex, { brandColor: brandColor }, xFormModel.model.map((formsection, index, array) => (React.createElement(CodexItem, { key: formsection.sectionId, stepId: String(formsection.sectionId), title: formsection.title, subtitleDescription: formsection.subtitle ? formsection.subtitle : undefined, icon: React.createElement(Icon, { name: formsection.icon || "fontfamily" }) },
57131
57271
  React.createElement(Row, { key: formsection.sectionId }, renderQueries(formsection.queries)),
57132
- React.createElement(CodexControls, { prevStepId: index > 0 ? String(array[index - 1].sectionId) : undefined, nextStepId: index < array.length - 1 ? String(array[index + 1].sectionId) : undefined, onPrev: onPrev, onNext: onNext, onFinish: onFinish }))))));
57272
+ React.createElement(CodexControls, { prevStepId: index > 0 ? String(array[index - 1].sectionId) : undefined, nextStepId: index < array.length - 1 ? String(array[index + 1].sectionId) : undefined, onPrev: onPrev, onNext: onNext, onFinish: () => onFinish }))))));
57133
57273
  case 'codice':
57134
57274
  default:
57135
57275
  return (React.createElement(React.Fragment, { key: xFormModel.uuid }, xFormModel.model.map((formsection) => (React.createElement(React.Fragment, { key: formsection.sectionId || crypto.randomUUID() },
@@ -57213,14 +57353,15 @@ class VectorSigma {
57213
57353
  "checkbox", "checkboxes", "checkboxinput", "chechbox-input", "input-checkbox", "inputcheckbox", "checkboxgroup-input",
57214
57354
  "filemultiple", "filemultipleinput", "filemultiple-input", "input-filemultiple", "inputfilemultiple",
57215
57355
  "selectmultiple", "selectmultipleinput", "selectmultiple-input", "input-selectmultiple", "inputselectmultiple",
57216
- "range", "rangeslider", "rangeinput", "rangesliderinput", "rangeslider-input", "range-input", "input-rangeslider", "inputrangeslider"
57356
+ "countrymultiselect", "countrymultiselectinput", "countrymultiselect-input", "input-countrymultiselect", "inputcountrymultiselect",
57357
+ "range", "rangeslider", "rangeinput", "rangesliderinput", "rangeslider-input", "range-input", "input-rangeslider", "inputrangeslider",
57358
+ "slider", "sliderinput", "slider-input", "input-slider", "inputslider"
57217
57359
  ];
57218
57360
  const booleanTypes = [
57219
57361
  "toggle", "switch", "toggleinput", "toggle-input", "input-toggle", "inputtoggle",
57220
57362
  "conditionaltoggle", "conditionalcheckbox", "conditional-toggle", "conditional-checkbox"
57221
57363
  ];
57222
57364
  const numberTypes = [
57223
- "slider", "sliderinput", "slider-input", "input-slider", "inputslider",
57224
57365
  "currency", "currencyinput", "currency-input", "input-currency", "inputcurrency",
57225
57366
  "stock", "stockinput", "stock-input", "input-stock", "inputstock"
57226
57367
  ];
@@ -57442,7 +57583,8 @@ class VectorSigma {
57442
57583
  const sanitizedData = normalizeXForm(this.formObject);
57443
57584
  const { initialValues, validationSchema } = this.buildFormikConfig(sanitizedData);
57444
57585
  const isCodexMode = (options === null || options === void 0 ? void 0 : options.displayMode) === 'codex';
57445
- return (React.createElement(R, null,
57586
+ const themeConfig = Object.assign({ appearance: 'inherit', accentColor: 'blue', radius: 'medium' }, options === null || options === void 0 ? void 0 : options.theme);
57587
+ return (React.createElement(R, Object.assign({}, themeConfig),
57446
57588
  React.createElement(formik.Formik, { initialValues: initialValues, validationSchema: validationSchema, onSubmit: (values, actions) => __awaiter(this, void 0, void 0, function* () {
57447
57589
  try {
57448
57590
  this.statusCode = 2;
@@ -57453,7 +57595,7 @@ class VectorSigma {
57453
57595
  yield options.onSubmit(values, actions, this);
57454
57596
  }
57455
57597
  if (options === null || options === void 0 ? void 0 : options.onFinish) {
57456
- options.onFinish();
57598
+ options.onFinish(values, actions, this);
57457
57599
  }
57458
57600
  }
57459
57601
  catch (error) {
@@ -57640,6 +57782,7 @@ exports.CodexItem = CodexItem;
57640
57782
  exports.Column = Column;
57641
57783
  exports.ConditionalTrigger = ConditionalTrigger;
57642
57784
  exports.Container = Container;
57785
+ exports.CountrySelect = CountrySelect;
57643
57786
  exports.CreditCardInput = CreditCardInput;
57644
57787
  exports.CurrencyInput = CurrencyInput;
57645
57788
  exports.DatePicker = DatePicker;
package/lib/index.esm.js CHANGED
@@ -31783,13 +31783,11 @@ const File$1 = (_a) => {
31783
31783
  width: '100%',
31784
31784
  position: 'relative',
31785
31785
  overflow: 'hidden',
31786
+ boxSizing: 'border-box',
31786
31787
  };
31787
31788
  const materialTrigger = Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'var(--color-surface)', boxShadow: hasError ? 'inset 0 0 0 1px var(--red-9)' : '0 2px 5px rgba(0,0,0,0.1)' });
31788
31789
  const outlineTrigger = Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'transparent', border: hasError ? '2px dashed var(--red-9)' : '2px dashed var(--gray-8)' });
31789
- const neumorphicTrigger = Object.assign(Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'var(--neu-bg)', color: hasError ? 'var(--red-9)' : 'var(--neu-text)',
31790
- // Empty: (Dropzone effect)
31791
- // Selected: (Card effect)
31792
- boxShadow: !selectedFile
31790
+ const neumorphicTrigger = Object.assign(Object.assign(Object.assign({}, baseTriggerStyle), { backgroundColor: 'var(--neu-bg)', color: hasError ? 'var(--red-9)' : 'var(--neu-text)', boxShadow: !selectedFile
31793
31791
  ? 'inset 3px 3px 6px var(--neu-shadow-dark), inset -3px -3px 6px var(--neu-shadow-light)'
31794
31792
  : '6px 6px 12px var(--neu-shadow-dark), -6px -6px 12px var(--neu-shadow-light)', border: 'none' }), neuVars);
31795
31793
  const activeStyle = inputtype === 'fileinput-neumorphic' ? neumorphicTrigger :
@@ -31806,11 +31804,11 @@ const File$1 = (_a) => {
31806
31804
  } }, !selectedFile ? (
31807
31805
  // --- EMPTY STATE RENDER ---
31808
31806
  React__default.createElement(p$5, { align: "center", gap: "3", style: { width: '100%', color: 'var(--gray-10)' } },
31809
- React__default.createElement(p$8, { style: { padding: 8, borderRadius: '50%', backgroundColor: 'var(--gray-3)' } },
31807
+ React__default.createElement(p$8, { style: { padding: 8, borderRadius: '50%', backgroundColor: 'var(--gray-3)', flexShrink: 0 } },
31810
31808
  React__default.createElement(Icon, { name: 'upload', width: "18", height: "18" })),
31811
- React__default.createElement(p$5, { direction: "column" },
31812
- React__default.createElement(p$d, { size: "2", weight: "bold", color: "gray" }, "Upload File"),
31813
- React__default.createElement(p$d, { size: "1", color: "gray" }, "Supports PDF, Images, Excel, JSON...")))) : (
31809
+ React__default.createElement(p$5, { direction: "column", style: { minWidth: 0, flex: 1 } },
31810
+ React__default.createElement(p$d, { size: "2", weight: "bold", color: "gray", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, "Upload File"),
31811
+ React__default.createElement(p$d, { size: "1", color: "gray", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, "Supports PDF, Images, Excel, JSON...")))) : (
31814
31812
  // --- SELECTED STATE RENDER ---
31815
31813
  React__default.createElement(p$5, { align: "center", gap: "4", style: { width: '100%' } },
31816
31814
  preview && previewUrl ? (React__default.createElement(i$9, { ratio: 1, style: { width: 48, height: 48, borderRadius: 6, overflow: 'hidden', flexShrink: 0 } },
@@ -31820,24 +31818,19 @@ const File$1 = (_a) => {
31820
31818
  backgroundColor: 'var(--accent-3)', color: 'var(--accent-9)',
31821
31819
  borderRadius: 6, flexShrink: 0
31822
31820
  } }, getFileIcon$1(selectedFile.type, selectedFile.name))),
31823
- React__default.createElement(p$5, { direction: "column", style: { flexGrow: 1, overflow: 'hidden' } },
31821
+ React__default.createElement(p$5, { direction: "column", style: { flexGrow: 1, minWidth: 0, overflow: 'hidden' } },
31824
31822
  React__default.createElement(p$d, { size: "2", weight: "bold", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, selectedFile.name),
31825
31823
  React__default.createElement(p$5, { gap: "2", align: "center" },
31826
31824
  React__default.createElement(p$d, { size: "1", color: "gray" }, formatBytes(selectedFile.size)),
31827
31825
  React__default.createElement(e$a, { size: "1", color: "gray", variant: "soft" }, (_b = selectedFile.name.split('.').pop()) === null || _b === void 0 ? void 0 : _b.toUpperCase()))),
31828
31826
  React__default.createElement(o$5, { size: "1", variant: "ghost", color: "red", onClick: handleClear, style: { borderRadius: '50%', padding: 4 } },
31829
31827
  React__default.createElement(Icon, { name: 'close', width: "16", height: "16" }))))),
31830
- React__default.createElement("div", null,
31831
- React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: inputId }, inputLabel),
31832
- "\u00A0",
31833
- isHinted ?
31834
- React__default.createElement(React__default.Fragment, null,
31835
- React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
31836
- React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer" },
31837
- React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))) : null,
31838
- hasError ?
31839
- React__default.createElement(React__default.Fragment, null,
31840
- React__default.createElement("p", { id: errorId, className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : "Required field"))) : null))));
31828
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
31829
+ inputLabel && (React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: inputId }, inputLabel)),
31830
+ isHinted && (React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
31831
+ React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
31832
+ React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
31833
+ hasError && (React__default.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
31841
31834
  };
31842
31835
 
31843
31836
  const getFileIcon = (fileOrUrl) => {
@@ -31940,20 +31933,21 @@ const FileMultiple = (_a) => {
31940
31933
  const isNeumorphic = inputtype === 'filemultiple-neumorphic';
31941
31934
  return (React__default.createElement(Column, { span: width, newLine: newRow },
31942
31935
  React__default.createElement(p$5, { direction: "column", gap: "2", className: className, style: Object.assign({ width: '100%' }, style) },
31943
- React__default.createElement(p$8, { onClick: () => { var _a; return !readOnly && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click()); }, p: "4", style: Object.assign(Object.assign({}, styles[inputtype]), { cursor: readOnly ? 'default' : 'pointer', transition: 'all 0.2s', borderColor: hasError ? 'var(--red-9)' : (styles[inputtype].borderBottom ? 'var(--accent-9)' : 'var(--gray-a8)'), position: 'relative', opacity: readOnly ? 0.7 : 1 }) },
31936
+ React__default.createElement(p$8, { onClick: () => { var _a; return !readOnly && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click()); }, p: "4", style: Object.assign(Object.assign({}, styles[inputtype]), { cursor: readOnly ? 'default' : 'pointer', transition: 'all 0.2s', borderColor: hasError ? 'var(--red-9)' : (inputtype === 'filemultiple-material' ? 'var(--accent-9)' : 'var(--gray-a8)'), position: 'relative', opacity: readOnly ? 0.7 : 1, boxSizing: 'border-box', width: '100%', overflow: 'hidden' }) },
31944
31937
  React__default.createElement(p$5, { align: "center", gap: "4" },
31945
31938
  React__default.createElement(p$8, { style: {
31946
31939
  background: isNeumorphic ? '#e0e0e0' : 'var(--accent-3)',
31947
31940
  borderRadius: '50%',
31948
31941
  padding: '10px',
31949
- boxShadow: isNeumorphic ? 'inset 3px 3px 6px #b8b9be, inset -3px -3px 6px #ffffff' : 'none'
31942
+ boxShadow: isNeumorphic ? 'inset 3px 3px 6px #b8b9be, inset -3px -3px 6px #ffffff' : 'none',
31943
+ flexShrink: 0
31950
31944
  } },
31951
31945
  React__default.createElement(Icon, { name: 'upload', width: "20", height: "20", color: isNeumorphic ? '#555' : 'var(--accent-9)' })),
31952
- React__default.createElement(p$5, { direction: "column" },
31953
- React__default.createElement(p$d, { weight: "bold", style: { color: isNeumorphic ? '#444' : 'inherit' } }, currentFiles.length > 0
31946
+ React__default.createElement(p$5, { direction: "column", style: { minWidth: 0, flex: 1 } },
31947
+ React__default.createElement(p$d, { weight: "bold", style: { color: isNeumorphic ? '#444' : 'inherit', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, currentFiles.length > 0
31954
31948
  ? `${currentFiles.length} file${currentFiles.length !== 1 ? 's' : ''} selected`
31955
31949
  : (placeholder || "Choose files...")),
31956
- React__default.createElement(p$d, { size: "1", color: "gray", style: { opacity: 0.8 } }, "PDF, Images, Office Docs, JSON, ZIP"))),
31950
+ React__default.createElement(p$d, { size: "1", color: "gray", style: { opacity: 0.8, whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, "PDF, Images, Office Docs, JSON, ZIP"))),
31957
31951
  React__default.createElement("input", { id: inputId, ref: inputRef, name: alias, type: "file", multiple: true, accept: ACCEPTED_EXTENSIONS, onChange: handleFileChange, disabled: readOnly, style: { display: 'none' }, "aria-describedby": hasError ? errorId : undefined })),
31958
31952
  preview && currentFiles.length > 0 && (React__default.createElement(o$6, { columns: "repeat(auto-fill, minmax(220px, 1fr))", gap: "3", mt: "1" }, currentFiles.map((file, index) => {
31959
31953
  let previewUrl = null;
@@ -31982,7 +31976,8 @@ const FileMultiple = (_a) => {
31982
31976
  background: 'var(--gray-a3)',
31983
31977
  display: 'flex',
31984
31978
  alignItems: 'center',
31985
- justifyContent: 'center'
31979
+ justifyContent: 'center',
31980
+ flexShrink: 0
31986
31981
  } }, previewUrl && (fileName.match(/\.(jpeg|jpg|png|gif|webp)$/i) || (file instanceof File && file.type.startsWith('image/'))) ? (React__default.createElement("img", { src: previewUrl, alt: "preview", style: { width: '100%', height: '100%', objectFit: 'cover' } })) : (getFileIcon(file))),
31987
31982
  React__default.createElement(p$5, { direction: "column", style: { flex: 1, overflow: 'hidden' } },
31988
31983
  React__default.createElement(p$d, { size: "1", weight: "bold", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', color: isNeumorphic ? '#444' : 'inherit' } }, fileName),
@@ -31993,13 +31988,12 @@ const FileMultiple = (_a) => {
31993
31988
  } },
31994
31989
  React__default.createElement(Icon, { name: 'close' }))))));
31995
31990
  }))),
31996
- React__default.createElement("div", null,
31991
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
31997
31992
  inputLabel && (React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: inputId }, inputLabel)),
31998
- "\u00A0",
31999
- isHinted && (React__default.createElement(e, { content: hintText || "No hint available" },
32000
- React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer" },
32001
- React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray', marginLeft: 4 } })))),
32002
- hasError && (React__default.createElement(p$d, { id: errorId, size: "1", color: "red", style: { display: 'block', marginTop: 2 } }, typeof fieldError === 'string' ? (errorText || fieldError) : 'Invalid file selection'))))));
31993
+ isHinted && (React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
31994
+ React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
31995
+ React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
31996
+ hasError && (React__default.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
32003
31997
  };
32004
31998
 
32005
31999
  const getStyles = (design, layout) => {
@@ -32034,9 +32028,9 @@ const getStyles = (design, layout) => {
32034
32028
  const ImageOutput = ({ id, src, alt = "Image", design = 'outline', layout = 'normal', aspectratio = 16 / 9, height, width = '100%', className, style, onClick, }) => {
32035
32029
  const containerStyles = getStyles(design, layout);
32036
32030
  const iconColor = design === 'neumorphic' ? '#555' : 'var(--gray-9)';
32037
- const content = (React__default.createElement(p$8, { className: className, style: Object.assign(Object.assign(Object.assign({}, containerStyles), { width, height: height || 'auto' }), style), onClick: onClick }, src ? (React__default.createElement("img", { id: String(id), src: src, alt: alt, style: {
32038
- width: '333px',
32039
- height: '333px',
32031
+ const content = (React__default.createElement(p$8, { className: className, style: Object.assign(Object.assign(Object.assign({}, containerStyles), { width: '100%', height: height || '100%' }), style), onClick: onClick }, src ? (React__default.createElement("img", { id: String(id), src: src, alt: alt, style: {
32032
+ width: '100%',
32033
+ height: '100%',
32040
32034
  objectFit: 'cover',
32041
32035
  display: 'block',
32042
32036
  } })) : (React__default.createElement(p$5, { align: "center", justify: "center", style: {
@@ -32048,11 +32042,7 @@ const ImageOutput = ({ id, src, alt = "Image", design = 'outline', layout = 'nor
32048
32042
  React__default.createElement(p$5, { direction: "column", align: "center", gap: "2" },
32049
32043
  React__default.createElement(Icon, { name: 'image', width: "32", height: "32", color: iconColor, style: { opacity: 0.5 } }),
32050
32044
  React__default.createElement(p$d, { size: "1", color: "gray" }, "No Image"))))));
32051
- if (height) {
32052
- return content;
32053
- }
32054
- return (React__default.createElement(p$8, { style: { width } },
32055
- React__default.createElement(i$9, { ratio: aspectratio }, content)));
32045
+ return (React__default.createElement(p$8, { style: { width, maxWidth: 500, maxHeight: 500 } }, height ? (content) : (React__default.createElement(i$9, { ratio: aspectratio }, content))));
32056
32046
  };
32057
32047
 
32058
32048
  const Input$1 = (_a) => {
@@ -39669,7 +39659,7 @@ function _arrayLikeToArray$3(arr, len) { if (len == null || len > arr.length) le
39669
39659
  function _extends$8() { _extends$8 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$8.apply(this, arguments); }
39670
39660
  function _objectWithoutProperties$8(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose$8(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
39671
39661
  function _objectWithoutPropertiesLoose$8(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
39672
- function CountrySelect(_ref) {
39662
+ function CountrySelect$1(_ref) {
39673
39663
  var value = _ref.value,
39674
39664
  onChange = _ref.onChange,
39675
39665
  options = _ref.options,
@@ -39703,7 +39693,7 @@ function CountrySelect(_ref) {
39703
39693
  }, label);
39704
39694
  }));
39705
39695
  }
39706
- CountrySelect.propTypes = {
39696
+ CountrySelect$1.propTypes = {
39707
39697
  /**
39708
39698
  * A two-letter country code.
39709
39699
  * Example: "US", "RU", etc.
@@ -39748,7 +39738,7 @@ function CountrySelectWithIcon(_ref3) {
39748
39738
  }, [options, value]);
39749
39739
  return /*#__PURE__*/React__default.createElement("div", {
39750
39740
  className: "PhoneInputCountry"
39751
- }, /*#__PURE__*/React__default.createElement(CountrySelect, _extends$8({}, rest, {
39741
+ }, /*#__PURE__*/React__default.createElement(CountrySelect$1, _extends$8({}, rest, {
39752
39742
  value: value,
39753
39743
  options: options,
39754
39744
  className: classNames('PhoneInputCountrySelect', className)
@@ -55512,7 +55502,6 @@ const CreditCardInput = (_a) => {
55512
55502
  React__default.createElement("div", { style: { display: 'flex', alignItems: 'center' } }, getCardIcon())),
55513
55503
  React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
55514
55504
  inputLabel && (React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
55515
- "\u00A0",
55516
55505
  isHinted && (React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
55517
55506
  React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
55518
55507
  React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
@@ -55667,8 +55656,8 @@ const CurrencyInput = (_a) => {
55667
55656
  textAlign: 'right',
55668
55657
  width: '100%'
55669
55658
  }, inputMode: "decimal", autoComplete: "off" }))),
55670
- React__default.createElement("div", null,
55671
- React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel),
55659
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
55660
+ inputLabel && (React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
55672
55661
  isHinted && (React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
55673
55662
  React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
55674
55663
  React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
@@ -55748,12 +55737,12 @@ const StockInput = (_a) => {
55748
55737
  fontWeight: 500,
55749
55738
  fontFamily: 'var(--default-font-family)',
55750
55739
  }, inputMode: "decimal", autoComplete: "off" }))),
55751
- React__default.createElement("div", null,
55740
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
55752
55741
  inputLabel && (React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
55753
55742
  isHinted && (React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
55754
55743
  React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
55755
55744
  React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
55756
- hasError && (React__default.createElement("p", { id: errorId, className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
55745
+ hasError && (React__default.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
55757
55746
  };
55758
55747
 
55759
55748
  const RadioGroupInput = (_a) => {
@@ -56166,9 +56155,8 @@ const SliderInput = (_a) => {
56166
56155
  }, onValueCommit: () => {
56167
56156
  setFieldTouched(alias, true, false);
56168
56157
  }, className: inputtype === 'slider-neumorphic' ? 'neu-slider' : inputtype === 'slider-outline' ? 'outline-slider' : '', style: neuVars }),
56169
- React__default.createElement("div", null,
56170
- React__default.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold" }, inputLabel),
56171
- "\u00A0",
56158
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
56159
+ inputLabel && (React__default.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold" }, inputLabel)),
56172
56160
  isHinted ?
56173
56161
  React__default.createElement(React__default.Fragment, null,
56174
56162
  React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
@@ -56238,8 +56226,8 @@ const RangeSlider = (_a) => {
56238
56226
  React__default.createElement(s, { name: alias, id: `${alias}FormInput`, disabled: readOnly, "aria-labelledby": labelId, min: minvalue, max: maxvalue, step: stepvalue, minStepsBetweenThumbs: minStepsBetweenThumbs, value: sliderValue, onValueChange: (val) => {
56239
56227
  setFieldValue(alias, isRange ? val : val[0]);
56240
56228
  }, onValueCommit: () => setFieldTouched(alias, true, false), className: inputtype === 'range-neumorphic' ? 'neu-slider' : inputtype === 'range-outline' ? 'outline-slider' : '', style: neuVars }),
56241
- React__default.createElement("div", null,
56242
- React__default.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold", style: { display: 'inline' } }, inputLabel),
56229
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
56230
+ inputLabel && (React__default.createElement(p$d, { id: labelId, as: "div", size: "2", weight: "bold", style: { display: 'inline' } }, inputLabel)),
56243
56231
  isHinted && (React__default.createElement(React__default.Fragment, null,
56244
56232
  React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
56245
56233
  React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer" },
@@ -56842,6 +56830,9 @@ const datePickerInputType = ["datepicker", "datepickerinput", "datepicker-input"
56842
56830
  const dateRangePickerInputType = ["daterangepicker", "daterangepickerinput", "daterangepicker-input", "input-daterangepicker", "inputdaterangepicker"];
56843
56831
  const dateTimePickerInputType = ["datetimepicker", "datetimepickerinput", "datetimepicker-input", "input-datetimepicker", "inputdatetimepicker"];
56844
56832
  const dropdownInputType = ["dropdown", "dropdowninput", "dropdown-input", "input-dropdown", "inputdropdown"];
56833
+ const countrydropdownInputType = ["countrydropdown", "countrydropdowninput", "countrydropdown-input", "input-countrydropdown", "inputcountrydropdown",
56834
+ "countryselect", "countryselect-input", "countryselectinput", "input-countryselect"];
56835
+ const countrymultiselectInputType = ["countrymultiselect", "countrymultiselectinput", "countrymultiselect-input", "input-countrymultiselect", "inputcountrymultiselect"];
56845
56836
  const fileInputType = ["file", "fileinput", "file-input", "input-file", "inputfile"];
56846
56837
  const fileMultipleInputType = ["filemultiple", "filemultipleinput", "filemultiple-input", "input-filemultiple", "inputfilemultiple"];
56847
56838
  const imageOutputType = ["image", "imageoutput", "image-output", "output-image", "outputimage"];
@@ -56991,6 +56982,151 @@ const DateTimePicker = ({ alias, inputLabel, inputtype = 'datetimepicker-outline
56991
56982
  hasError && (React__default.createElement(p$d, { size: "1", color: "red", style: { display: 'block' } }, errorText || (typeof fieldError === 'string' ? fieldError : "Required field")))))));
56992
56983
  };
56993
56984
 
56985
+ const CountrySelect = (_a) => {
56986
+ var _b;
56987
+ var { inputtype = 'countryselect-outline', alias, readOnly, width, inputLabel, placeholder = 'Select Country...', newRow, isHinted, hintText, hintUrl, errorText, displayFlag = true, multiselect = false, enableSearch = false, style, className, formikContext } = _a; __rest$1(_a, ["inputtype", "alias", "readOnly", "width", "inputLabel", "placeholder", "newRow", "isHinted", "hintText", "hintUrl", "errorText", "displayFlag", "multiselect", "enableSearch", "style", "className", "formikContext"]);
56988
+ const defaultFormikContext = useFormikContext();
56989
+ const activeContext = formikContext || defaultFormikContext;
56990
+ if (!activeContext) {
56991
+ console.error(`CountryDropdown '${alias}' must be used within a Formik provider.`);
56992
+ return null;
56993
+ }
56994
+ const { values, touched, errors, setFieldValue, setFieldTouched } = activeContext;
56995
+ const fieldValue = getIn(values, alias);
56996
+ const fieldTouched = getIn(touched, alias);
56997
+ const fieldError = getIn(errors, alias);
56998
+ const selectedValues = useMemo(() => {
56999
+ if (multiselect)
57000
+ return Array.isArray(fieldValue) ? fieldValue : [];
57001
+ return fieldValue ? [String(fieldValue)] : [];
57002
+ }, [fieldValue, multiselect]);
57003
+ const hasError = Boolean(fieldTouched && fieldError);
57004
+ const triggerRef = useRef(null);
57005
+ const [neuVars, setNeuVars] = useState({});
57006
+ const [isOpen, setIsOpen] = useState(false);
57007
+ const [searchQuery, setSearchQuery] = useState("");
57008
+ const errorId = `${alias}-error`;
57009
+ const allCountries = useMemo(() => {
57010
+ return getCountries().map(c => ({ value: c, label: en[c] }));
57011
+ }, []);
57012
+ const filteredCountries = useMemo(() => {
57013
+ if (!enableSearch || !searchQuery)
57014
+ return allCountries;
57015
+ const lowerSearch = searchQuery.toLowerCase();
57016
+ return allCountries.filter(c => c.label.toLowerCase().includes(lowerSearch));
57017
+ }, [allCountries, searchQuery, enableSearch]);
57018
+ const handleSelection = (countryCode) => {
57019
+ if (multiselect) {
57020
+ const newValues = selectedValues.includes(countryCode)
57021
+ ? selectedValues.filter((v) => v !== countryCode)
57022
+ : [...selectedValues, countryCode];
57023
+ setFieldValue(alias, newValues);
57024
+ }
57025
+ else {
57026
+ setFieldValue(alias, countryCode);
57027
+ setIsOpen(false);
57028
+ }
57029
+ setTimeout(() => setFieldTouched(alias, true, false), 0);
57030
+ };
57031
+ const displayLabel = useMemo(() => {
57032
+ if (selectedValues.length === 0)
57033
+ return placeholder;
57034
+ if (!multiselect) {
57035
+ const c = allCountries.find(x => x.value === selectedValues[0]);
57036
+ return c ? c.label : selectedValues[0];
57037
+ }
57038
+ if (selectedValues.length <= 2) {
57039
+ return selectedValues.map(v => { var _a; return ((_a = allCountries.find(x => x.value === v)) === null || _a === void 0 ? void 0 : _a.label) || v; }).join(', ');
57040
+ }
57041
+ return `${selectedValues.length} countries selected`;
57042
+ }, [selectedValues, multiselect, allCountries, placeholder]);
57043
+ useEffect(() => {
57044
+ if (inputtype === 'countryselect-neumorphic' && triggerRef.current) {
57045
+ const parentBg = getNearestParentBackground(triggerRef.current.parentElement);
57046
+ setNeuVars({
57047
+ '--neu-bg': parentBg,
57048
+ '--neu-shadow-dark': adjustColor(parentBg, -30),
57049
+ '--neu-shadow-light': adjustColor(parentBg, 30),
57050
+ '--neu-text': 'var(--gray-12)',
57051
+ '--neu-error': 'var(--red-9)',
57052
+ });
57053
+ }
57054
+ }, [inputtype]);
57055
+ useEffect(() => {
57056
+ if (!isOpen)
57057
+ setSearchQuery("");
57058
+ }, [isOpen]);
57059
+ // --- STYLES ---
57060
+ const baseTrigger = {
57061
+ display: 'flex',
57062
+ alignItems: 'center',
57063
+ justifyContent: 'space-between',
57064
+ width: '100%',
57065
+ cursor: readOnly ? 'default' : 'pointer',
57066
+ textAlign: 'left',
57067
+ padding: '0 12px',
57068
+ fontSize: 'var(--font-size-2)',
57069
+ fontFamily: 'var(--default-font-family)',
57070
+ whiteSpace: 'nowrap',
57071
+ overflow: 'hidden',
57072
+ boxSizing: 'border-box',
57073
+ opacity: readOnly ? 0.7 : 1,
57074
+ };
57075
+ const materialTrigger = Object.assign(Object.assign({}, baseTrigger), { backgroundColor: 'var(--color-surface)', border: hasError ? '1px solid var(--red-9)' : 'none', boxShadow: '0 2px 5px rgba(0,0,0,0.1)', borderRadius: '4px', height: '32px', fontWeight: 500 });
57076
+ const outlineTrigger = Object.assign(Object.assign({}, baseTrigger), { backgroundColor: 'transparent', border: hasError ? '2px solid var(--red-9)' : '2px solid var(--gray-7)', borderRadius: '4px', height: '32px', fontWeight: 600 });
57077
+ const neumorphicTrigger = Object.assign(Object.assign({}, baseTrigger), { backgroundColor: 'var(--neu-bg)', color: hasError ? 'var(--neu-error)' : 'var(--neu-text)', border: 'none', borderRadius: '12px', height: '40px', fontWeight: 600, boxShadow: isOpen
57078
+ ? 'inset 6px 6px 12px var(--neu-shadow-dark), inset -6px -6px 12px var(--neu-shadow-light)'
57079
+ : '6px 6px 12px var(--neu-shadow-dark), -6px -6px 12px var(--neu-shadow-light)', transition: 'all 0.2s ease' });
57080
+ const activeTrigger = inputtype === 'countryselect-material' ? materialTrigger :
57081
+ inputtype === 'countryselect-outline' ? outlineTrigger : Object.assign(Object.assign({}, neumorphicTrigger), neuVars);
57082
+ return (React__default.createElement(Column, { span: width, newLine: newRow },
57083
+ React__default.createElement(p$5, { direction: "column", gap: "2", style: { width: '100%' } },
57084
+ React__default.createElement(P$1, { open: isOpen, onOpenChange: (open) => {
57085
+ if (readOnly)
57086
+ return;
57087
+ setIsOpen(open);
57088
+ if (!open)
57089
+ setFieldTouched(alias, true, false);
57090
+ } },
57091
+ React__default.createElement(s$1, null,
57092
+ React__default.createElement("button", { id: `${alias}FormInput`, type: "button", ref: triggerRef, className: className, style: Object.assign(Object.assign({}, activeTrigger), style), "aria-describedby": `${alias}InputLabel`, disabled: readOnly },
57093
+ React__default.createElement(p$5, { align: "center", gap: "2", style: { minWidth: 0, flex: 1 } },
57094
+ !multiselect && displayFlag && selectedValues.length === 1 && (React__default.createElement(FlagIcon, { country: selectedValues[0] })),
57095
+ React__default.createElement("span", { style: {
57096
+ overflow: 'hidden',
57097
+ textOverflow: 'ellipsis',
57098
+ whiteSpace: 'nowrap',
57099
+ color: selectedValues.length === 0 ? 'var(--gray-8)' : 'inherit'
57100
+ } }, displayLabel)),
57101
+ React__default.createElement(Icon, { name: 'chevrondown', style: { flexShrink: 0, opacity: 0.5, marginLeft: 8 } }))),
57102
+ React__default.createElement(i$3, { align: "start", sideOffset: 5, style: Object.assign({ width: ((_b = triggerRef.current) === null || _b === void 0 ? void 0 : _b.offsetWidth) || 240, padding: 0, overflow: 'hidden', backgroundColor: inputtype === 'countryselect-neumorphic' ? 'var(--neu-bg)' : 'var(--color-panel-solid)' }, neuVars) },
57103
+ enableSearch && (React__default.createElement(p$8, { p: "2", style: { borderBottom: inputtype === 'countryselect-neumorphic' ? 'none' : '1px solid var(--gray-6)' } },
57104
+ React__default.createElement(u, { placeholder: "Search countries...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), variant: inputtype === 'countryselect-neumorphic' ? 'soft' : 'surface' },
57105
+ React__default.createElement(c, null,
57106
+ React__default.createElement(Icon, { name: "magnifyingglass", height: "14", width: "14", style: { opacity: 0.5 } }))))),
57107
+ React__default.createElement(c$1, { type: "auto", scrollbars: "vertical", style: { maxHeight: 250 } },
57108
+ React__default.createElement(p$8, { p: "2" },
57109
+ React__default.createElement(p$5, { direction: "column", gap: "1" }, filteredCountries.length === 0 ? (React__default.createElement(p$d, { size: "2", color: "gray", align: "center", style: { padding: '16px 0' } }, "No countries found.")) : (filteredCountries.map((country) => {
57110
+ const isSelected = selectedValues.includes(country.value);
57111
+ return (React__default.createElement(p$5, { key: country.value, align: "center", gap: "3", onClick: () => handleSelection(country.value), style: {
57112
+ padding: '8px',
57113
+ cursor: 'pointer',
57114
+ borderRadius: '4px',
57115
+ backgroundColor: isSelected ? 'var(--accent-a3)' : 'transparent',
57116
+ transition: 'background-color 0.1s'
57117
+ } },
57118
+ multiselect && (React__default.createElement(c$2, { checked: isSelected, style: { pointerEvents: 'none' } })),
57119
+ displayFlag && (React__default.createElement(FlagIcon, { country: country.value })),
57120
+ React__default.createElement(p$d, { size: "2", style: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' } }, country.label)));
57121
+ }))))))),
57122
+ React__default.createElement("div", { style: { marginTop: 4, display: 'flex', alignItems: 'center', gap: 6 } },
57123
+ inputLabel && (React__default.createElement(p$d, { id: `${alias}InputLabel`, as: "label", size: "2", weight: "bold", htmlFor: `${alias}FormInput` }, inputLabel)),
57124
+ isHinted && (React__default.createElement(e, { content: hintText || "No hint available", align: "start", sideOffset: 5, className: "core-input-tooltip" },
57125
+ React__default.createElement("a", { href: hintUrl || "", target: "_blank", rel: "noopener noreferrer", style: { display: 'flex' } },
57126
+ React__default.createElement(Icon, { name: "questionmarkcircled", height: "16", width: "16", style: { cursor: 'pointer', color: 'gray' } })))),
57127
+ hasError && (React__default.createElement(p$d, { id: errorId, size: "1", color: "red", className: 'core-input-label-error' }, errorText || (typeof fieldError === 'string' ? fieldError : `Required field`)))))));
57128
+ };
57129
+
56994
57130
  const Teletraan1 = ({ xFormModel, readOnlyMode = false, displayMode = 'codice', brandColor = "#000000", onPrev, onNext, onFinish }) => {
56995
57131
  const [dualToggled, setDualToggled] = useState(false);
56996
57132
  const [neuVars] = useState({
@@ -57037,6 +57173,10 @@ const Teletraan1 = ({ xFormModel, readOnlyMode = false, displayMode = 'codice',
57037
57173
  return React__default.createElement(DateTimePicker, Object.assign({}, layoutProps, { placeholder: inputPlaceholder }));
57038
57174
  case dropdownInputType.includes(normalizedType):
57039
57175
  return React__default.createElement(Dropdown, Object.assign({}, layoutProps, { placeholder: inputPlaceholder, inputOptions: inputOptions || [InputOptionsPlaceholder] }));
57176
+ case countrydropdownInputType.includes(normalizedType):
57177
+ return React__default.createElement(CountrySelect, Object.assign({ displayFlag: true, enableSearch: true }, layoutProps, { placeholder: inputPlaceholder }));
57178
+ case countrymultiselectInputType.includes(normalizedType):
57179
+ return React__default.createElement(CountrySelect, Object.assign({ displayFlag: true, enableSearch: true, multiselect: true }, layoutProps, { placeholder: inputPlaceholder }));
57040
57180
  case fileInputType.includes(normalizedType):
57041
57181
  return React__default.createElement(File$1, Object.assign({}, layoutProps, { preview: true }));
57042
57182
  case fileMultipleInputType.includes(normalizedType):
@@ -57108,7 +57248,7 @@ const Teletraan1 = ({ xFormModel, readOnlyMode = false, displayMode = 'codice',
57108
57248
  case 'codex':
57109
57249
  return (React__default.createElement(Codex, { brandColor: brandColor }, xFormModel.model.map((formsection, index, array) => (React__default.createElement(CodexItem, { key: formsection.sectionId, stepId: String(formsection.sectionId), title: formsection.title, subtitleDescription: formsection.subtitle ? formsection.subtitle : undefined, icon: React__default.createElement(Icon, { name: formsection.icon || "fontfamily" }) },
57110
57250
  React__default.createElement(Row, { key: formsection.sectionId }, renderQueries(formsection.queries)),
57111
- React__default.createElement(CodexControls, { prevStepId: index > 0 ? String(array[index - 1].sectionId) : undefined, nextStepId: index < array.length - 1 ? String(array[index + 1].sectionId) : undefined, onPrev: onPrev, onNext: onNext, onFinish: onFinish }))))));
57251
+ React__default.createElement(CodexControls, { prevStepId: index > 0 ? String(array[index - 1].sectionId) : undefined, nextStepId: index < array.length - 1 ? String(array[index + 1].sectionId) : undefined, onPrev: onPrev, onNext: onNext, onFinish: () => onFinish }))))));
57112
57252
  case 'codice':
57113
57253
  default:
57114
57254
  return (React__default.createElement(React__default.Fragment, { key: xFormModel.uuid }, xFormModel.model.map((formsection) => (React__default.createElement(React__default.Fragment, { key: formsection.sectionId || crypto.randomUUID() },
@@ -57192,14 +57332,15 @@ class VectorSigma {
57192
57332
  "checkbox", "checkboxes", "checkboxinput", "chechbox-input", "input-checkbox", "inputcheckbox", "checkboxgroup-input",
57193
57333
  "filemultiple", "filemultipleinput", "filemultiple-input", "input-filemultiple", "inputfilemultiple",
57194
57334
  "selectmultiple", "selectmultipleinput", "selectmultiple-input", "input-selectmultiple", "inputselectmultiple",
57195
- "range", "rangeslider", "rangeinput", "rangesliderinput", "rangeslider-input", "range-input", "input-rangeslider", "inputrangeslider"
57335
+ "countrymultiselect", "countrymultiselectinput", "countrymultiselect-input", "input-countrymultiselect", "inputcountrymultiselect",
57336
+ "range", "rangeslider", "rangeinput", "rangesliderinput", "rangeslider-input", "range-input", "input-rangeslider", "inputrangeslider",
57337
+ "slider", "sliderinput", "slider-input", "input-slider", "inputslider"
57196
57338
  ];
57197
57339
  const booleanTypes = [
57198
57340
  "toggle", "switch", "toggleinput", "toggle-input", "input-toggle", "inputtoggle",
57199
57341
  "conditionaltoggle", "conditionalcheckbox", "conditional-toggle", "conditional-checkbox"
57200
57342
  ];
57201
57343
  const numberTypes = [
57202
- "slider", "sliderinput", "slider-input", "input-slider", "inputslider",
57203
57344
  "currency", "currencyinput", "currency-input", "input-currency", "inputcurrency",
57204
57345
  "stock", "stockinput", "stock-input", "input-stock", "inputstock"
57205
57346
  ];
@@ -57421,7 +57562,8 @@ class VectorSigma {
57421
57562
  const sanitizedData = normalizeXForm(this.formObject);
57422
57563
  const { initialValues, validationSchema } = this.buildFormikConfig(sanitizedData);
57423
57564
  const isCodexMode = (options === null || options === void 0 ? void 0 : options.displayMode) === 'codex';
57424
- return (React__default.createElement(R, null,
57565
+ const themeConfig = Object.assign({ appearance: 'inherit', accentColor: 'blue', radius: 'medium' }, options === null || options === void 0 ? void 0 : options.theme);
57566
+ return (React__default.createElement(R, Object.assign({}, themeConfig),
57425
57567
  React__default.createElement(Formik, { initialValues: initialValues, validationSchema: validationSchema, onSubmit: (values, actions) => __awaiter(this, void 0, void 0, function* () {
57426
57568
  try {
57427
57569
  this.statusCode = 2;
@@ -57432,7 +57574,7 @@ class VectorSigma {
57432
57574
  yield options.onSubmit(values, actions, this);
57433
57575
  }
57434
57576
  if (options === null || options === void 0 ? void 0 : options.onFinish) {
57435
- options.onFinish();
57577
+ options.onFinish(values, actions, this);
57436
57578
  }
57437
57579
  }
57438
57580
  catch (error) {
@@ -57607,4 +57749,4 @@ const parseUuidFormat = (input) => {
57607
57749
  return numbers;
57608
57750
  };
57609
57751
 
57610
- export { Accordion, AccordionItem, AvatarInput, ButtonInput, CURRENCIES, CheckboxGroupInput, Codex, CodexControls, CodexItem, Column, ConditionalTrigger, Container, CreditCardInput, CurrencyInput, DatePicker, DateRangePicker, DateTimePicker, Dropdown, File$1 as File, FileMultiple, FlagIcon, Icon, ImageOutput, Input$1 as Input, InputOptionSchema, MultipleSelect, OptionSelect, PasswordInput, PhoneInput, QuerySchema, RadioGroupInput, RangeSlider, Row, SectionSchema, SectionTitle, SliderInput, StockInput, Teletraan1, R as Theme, N as ThemePanel, Toggle, UUIDInput, VectorSigma, XFormSchema, normalizeXForm, parseUuidFormat, primeMatrix, useStepper };
57752
+ export { Accordion, AccordionItem, AvatarInput, ButtonInput, CURRENCIES, CheckboxGroupInput, Codex, CodexControls, CodexItem, Column, ConditionalTrigger, Container, CountrySelect, CreditCardInput, CurrencyInput, DatePicker, DateRangePicker, DateTimePicker, Dropdown, File$1 as File, FileMultiple, FlagIcon, Icon, ImageOutput, Input$1 as Input, InputOptionSchema, MultipleSelect, OptionSelect, PasswordInput, PhoneInput, QuerySchema, RadioGroupInput, RangeSlider, Row, SectionSchema, SectionTitle, SliderInput, StockInput, Teletraan1, R as Theme, N as ThemePanel, Toggle, UUIDInput, VectorSigma, XFormSchema, normalizeXForm, parseUuidFormat, primeMatrix, useStepper };
@@ -0,0 +1,103 @@
1
+ import React, { ReactNode } from 'react';
2
+ import { FormikContextType } from 'formik';
3
+ import '../../styles/main.scss';
4
+ export type CountrySelectDesign = 'countryselect' | 'countryselect-material' | 'countryselect-outline' | 'countryselect-neumorphic';
5
+ export interface CountryDropdownProps {
6
+ /**
7
+ * * The required unique identifier for the CountrySelect input field.
8
+ * * @example alias="citizenshipCountries"
9
+ */
10
+ alias: string;
11
+ /**
12
+ * * The design variation of the CountrySelect input.
13
+ * Default: 'countryselect-outline'
14
+ * Variants: 'countryselect', 'countryselect-outline', 'countryselect-material', 'countryselect-neumorphic'.
15
+ */
16
+ inputtype?: CountrySelectDesign & {};
17
+ /**
18
+ * * The optional input label or description.
19
+ */
20
+ inputLabel?: string;
21
+ /**
22
+ * * The required viewport column width for the CountrySelect input field.
23
+ * i.e. 1 - 12
24
+ * * @example
25
+ * width={5}
26
+ */
27
+ width: number;
28
+ /**
29
+ * * Option to render CountrySelect input field on new row.
30
+ * * @example
31
+ * newRow
32
+ */
33
+ newRow?: boolean;
34
+ /**
35
+ * * Option to force set the default value for a CountrySelect input field.
36
+ * * @example
37
+ * placeholder="Select a country"
38
+ */
39
+ placeholder?: string;
40
+ /**
41
+ * * Option to disable edits for CountrySelect input field.
42
+ * * @example
43
+ * readOnly
44
+ */
45
+ readOnly?: boolean;
46
+ /**
47
+ * * Option to enable a hint for CountrySelect input field.
48
+ * * @example
49
+ * isHinted
50
+ */
51
+ isHinted?: boolean;
52
+ /**
53
+ * * Option to specify hint text for CountrySelect input field.
54
+ * * @example
55
+ * hintText="This is a hint for a VΣ CountrySelect"
56
+ */
57
+ hintText?: string;
58
+ /**
59
+ * * Option to specify a hint url reference or resource for CountrySelect input field.
60
+ * * @example
61
+ * hintUrl="https://www.mekaegwim.ca"
62
+ */
63
+ hintUrl?: string;
64
+ /**
65
+ * * Option to specify the isRequired error text for the CountrySelect input field.
66
+ * * @example
67
+ * errorText="Country selection is required"
68
+ */
69
+ errorText?: ReactNode | string | null;
70
+ /**
71
+ * * Option to specify the .scss class selector for the CountrySelect input field.
72
+ * * @example
73
+ * className="teletraan-1-countryselect"
74
+ */
75
+ className?: string;
76
+ /**
77
+ * * Option to inject custom CSS for the CountrySelect input field.
78
+ * * @example
79
+ * style={{ color: "#000000" }}
80
+ */
81
+ style?: React.CSSProperties;
82
+ /**
83
+ * Optional explicit Formik context. Useful when bypassing duplicate
84
+ * context issues in monorepos or bundled npm packages.
85
+ */
86
+ formikContext?: FormikContextType<any>;
87
+ /**
88
+ * * Option to render the country flag icon next to the country name.
89
+ * Default: true
90
+ */
91
+ displayFlag?: boolean;
92
+ /**
93
+ * * Option to allow multiple country selections and return an array of country codes.
94
+ * Default: false
95
+ */
96
+ multiselect?: boolean;
97
+ /**
98
+ * * Option to enable search bar inside the CountrySelect to filter countries.
99
+ * Default: false
100
+ */
101
+ enableSearch?: boolean;
102
+ }
103
+ export declare const CountrySelect: ({ inputtype, alias, readOnly, width, inputLabel, placeholder, newRow, isHinted, hintText, hintUrl, errorText, displayFlag, multiselect, enableSearch, style, className, formikContext, ...props }: CountryDropdownProps) => React.JSX.Element | null;
@@ -98,7 +98,7 @@ export interface xDropDownProps {
98
98
  */
99
99
  className?: string;
100
100
  /**
101
- * * Option to inject custom CSS the Dropdown input field.
101
+ * * Option to inject custom CSS for the Dropdown input field.
102
102
  * * @example
103
103
  * style={{ color: "#000000" }}
104
104
  */
@@ -80,7 +80,7 @@ export interface FileInputProps {
80
80
  */
81
81
  errorText?: ReactNode | string | null;
82
82
  /**
83
- * * Option to inject custom CSS the File input field.
83
+ * * Option to inject custom CSS for the File input field.
84
84
  * * @example
85
85
  * style={{ color: "#000000" }}
86
86
  */
@@ -86,7 +86,7 @@ export interface FileMultipleInputProps {
86
86
  */
87
87
  className?: string;
88
88
  /**
89
- * * Option to inject custom CSS the FileMultiple input field.
89
+ * * Option to inject custom CSS for the FileMultiple input field.
90
90
  * * @example
91
91
  * style={{ color: "#000000" }}
92
92
  */
@@ -9,6 +9,7 @@ export * from './components/datepicker/datepicker';
9
9
  export * from './components/daterangepicker/daterangepicker';
10
10
  export * from './components/datetimepicker/datetimepicker';
11
11
  export * from './components/dropdown/dropdown';
12
+ export * from './components/dropdown/countrydropdown';
12
13
  export * from './components/file/file';
13
14
  export * from './components/file/filemultiple';
14
15
  export * from './components/icons/icons';
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
2
  import { XFormType } from 'utils/voltron';
3
+ import { FormikHelpers } from 'formik';
4
+ import { VectorSigma } from 'vectorSigma';
3
5
  export type teletraan1Display = 'accordion' | 'codice' | 'codex' | 'dual';
4
6
  export interface Teletraan1Props {
5
7
  /**
@@ -49,6 +51,6 @@ export interface Teletraan1Props {
49
51
  * * @example
50
52
  * onFinish={console.log("Teletraan-1 Codex :: onFinish()")}
51
53
  */
52
- onFinish?: () => void;
54
+ onFinish?: (values: any, actions: FormikHelpers<any>, instance: VectorSigma<any>) => void | Promise<any>;
53
55
  }
54
56
  export declare const Teletraan1: ({ xFormModel, readOnlyMode, displayMode, brandColor, onPrev, onNext, onFinish }: Teletraan1Props) => React.JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -6,6 +6,8 @@ export declare const datePickerInputType: string[];
6
6
  export declare const dateRangePickerInputType: string[];
7
7
  export declare const dateTimePickerInputType: string[];
8
8
  export declare const dropdownInputType: string[];
9
+ export declare const countrydropdownInputType: string[];
10
+ export declare const countrymultiselectInputType: string[];
9
11
  export declare const fileInputType: string[];
10
12
  export declare const fileMultipleInputType: string[];
11
13
  export declare const imageOutputType: string[];
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { XFormType, XFormQuery, SectionSchema } from './utils/voltron';
3
3
  import { Teletraan1Props } from './teletraan1';
4
4
  import { z } from "zod";
5
+ import { ThemeProps } from '@radix-ui/themes';
5
6
  import { FormikHelpers } from 'formik';
6
7
  import './styles/main.scss';
7
8
  export interface VectorSigmaRenderProps<T extends Record<string, any> = Record<string, any>> extends Omit<Teletraan1Props, 'xFormModel'> {
@@ -20,6 +21,15 @@ export interface VectorSigmaRenderProps<T extends Record<string, any> = Record<s
20
21
  }}
21
22
  */
22
23
  onSubmit?: (values: T, actions: FormikHelpers<T>, instance: VectorSigma<T>) => void | Promise<any>;
24
+ /**
25
+ * * Optional Radix UI Theme configuration.
26
+ * Enables developer theming extensibility to align xForm appearance with an extant application design system.
27
+ *
28
+ * https://www.radix-ui.com/themes/docs/components/theme
29
+ * @example
30
+ * theme={{ appearance: 'dark', accentColor: 'ruby', radius: 'large' }}
31
+ */
32
+ theme?: Omit<ThemeProps, 'children'>;
23
33
  }
24
34
  export declare class VectorSigma<T extends Record<string, any> = Record<string, any>> {
25
35
  isValid: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emeraldemperaur/vector-sigma",
3
- "version": "1.4.45",
3
+ "version": "1.4.47",
4
4
  "description": "Dynamic Form Orchestrator: NPM Package",
5
5
  "repository": {
6
6
  "type": "git",
File without changes
File without changes