@huntflow/ui 0.1.1 → 0.1.2

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.
@@ -0,0 +1 @@
1
+ export declare const icons: readonly ["ai-20", "alert-20", "alert-24", "alert-fill-20", "alert-fill-24", "archive-16", "archive-18", "archive-20", "archive-24", "archive-28", "arrow-down-20", "arrow-left-18", "arrow-left-20", "arrow-right-18", "arrow-right-20", "arrow-up-20", "attention-16", "attention-18", "attention-20", "attention-24", "attention-28", "calendar-16", "calendar-18", "calendar-20", "calendar-24", "calendar-28", "check-16", "check-18", "check-20", "check-24", "check-28", "check-color-16", "check-color-18", "check-color-20", "check-color-24", "check-color-28", "chevron-down-16", "chevron-down-18", "chevron-down-20", "chevron-down-24", "chevron-down-28", "chevron-left-16", "chevron-left-18", "chevron-left-20", "chevron-left-24", "chevron-left-28", "chevron-right-16", "chevron-right-18", "chevron-right-20", "chevron-right-24", "chevron-right-28", "chevron-up-16", "chevron-up-18", "chevron-up-20", "chevron-up-24", "chevron-up-28", "circle-download-20", "clip-16", "clip-18", "clip-20", "clip-24", "clip-28", "clipboard-16", "clipboard-18", "clipboard-20", "clipboard-24", "clipboard-28", "clock-16", "clock-18", "clock-20", "clock-24", "clock-28", "clock-fill-16", "clock-fill-18", "clock-fill-20", "clock-fill-24", "clock-fill-28", "close-16", "close-20", "crown-16", "crown-18", "crown-20", "crown-24", "crown-28", "dots-horizontal-20", "dots-vertical-20", "download-16", "download-18", "download-20", "download-24", "download-28", "download-circle-18", "drag-16", "drag-20", "drag-24", "edit-16", "edit-18", "edit-20", "edit-24", "edit-28", "feedback-16", "feedback-18", "feedback-20", "feedback-24", "feedback-28", "folder-16", "folder-18", "folder-20", "folder-24", "folder-28", "graph-16", "graph-18", "graph-20", "graph-24", "graph-28", "home-16", "home-18", "home-20", "home-24", "home-28", "info-16", "info-18", "info-20", "info-24", "info-28", "link-16", "link-18", "link-20", "link-24", "link-28", "lock-16", "lock-18", "lock-20", "lock-24", "lock-28", "lock-color-16", "lock-color-18", "lock-color-20", "lock-color-24", "lock-color-28", "message-16", "message-18", "message-20", "message-24", "message-28", "mute-20", "mute-fill-20", "options-16", "options-18", "options-20", "options-24", "options-28", "options-lock-20", "phone-16", "phone-18", "phone-20", "phone-24", "phone-28", "phone-error-16", "phone-error-18", "phone-error-20", "phone-error-24", "phone-error-28", "phone-fill-16", "phone-fill-18", "phone-fill-20", "phone-fill-24", "phone-fill-28", "plus-16", "plus-18", "plus-20", "plus-circle-16", "plus-circle-18", "plus-circle-20", "plus-circle-24", "plus-circle-28", "print-16", "print-18", "print-20", "print-24", "print-28", "priority-20", "question-16", "question-18", "question-20", "question-24", "question-28", "refresh-20", "rocket-16", "rocket-18", "rocket-20", "rocket-24", "rocket-28", "search-16", "search-18", "search-20", "search-24", "search-28", "semiselected-16", "semiselected-18", "semiselected-20", "semiselected-24", "semiselected-28", "settings-16", "settings-18", "settings-20", "settings-24", "settings-28", "share-16", "share-18", "share-20", "share-24", "share-28", "shield-attention-20", "shield-attention-lock-20", "shield-fill-20", "shield-tick-20", "shuffle-20", "sms-16", "sms-18", "sms-20", "sms-24", "sms-28", "star-16", "star-18", "star-20", "star-24", "star-28", "stop-color-16", "stop-color-18", "stop-color-20", "stop-color-24", "stop-color-28", "team-24", "telegram-16", "telegram-18", "telegram-20", "telegram-24", "telegram-28", "text-16", "text-18", "text-20", "text-24", "text-28", "thumbs-28", "thumbsup-16", "thumbsup-18", "thumbsup-20", "thumbsup-24", "trash-16", "trash-18", "trash-20", "trash-24", "trash-28", "unmute-20", "upload-16", "upload-18", "upload-20", "url-16", "url-18", "url-20", "url-24", "url-28", "verification-fill-20", "viber-16", "viber-18", "viber-20", "viber-24", "viber-28", "viber-contour-16", "viber-contour-20", "viber-contour-24", "viber-contour-28", "whatsapp-16", "whatsapp-18", "whatsapp-20", "whatsapp-24", "whatsapp-28", "x-circle-20", "zoom-16", "zoom-18", "zoom-20", "zoom-24", "zoom-28"];
@@ -1,7 +1,7 @@
1
- import { default as icons } from '../../assets/icon-list.json';
2
- export type IconType = (typeof icons)[number];
1
+ import { icons } from './icon-list.ts';
2
+ export type IconType = typeof icons[number];
3
3
  export type UiIconProps = {
4
- type: IconType;
4
+ name: IconType;
5
5
  color?: string;
6
6
  block?: boolean;
7
7
  };
@@ -1,3 +1,4 @@
1
+ import { IconType } from '../index';
1
2
  export type UiInputProps = {
2
3
  value: string;
3
4
  type?: UiInputType;
@@ -13,7 +14,7 @@ export type UiInputProps = {
13
14
  error?: string | null | void;
14
15
  description?: string | null | void;
15
16
  className?: string;
16
- leftIcon?: string;
17
- rightIcon?: string;
17
+ leftIcon?: IconType;
18
+ rightIcon?: IconType;
18
19
  };
19
20
  export type UiInputType = 'text' | 'password' | 'email' | 'tel' | 'search';
package/dist/ui.es.js CHANGED
@@ -1,18 +1,18 @@
1
1
  (function(){"use strict";var o;try{if(typeof document<"u"){var t=document.createElement("style");t.nonce=(o=document.head.querySelector("meta[property=csp-nonce]"))==null?void 0:o.content,t.appendChild(document.createTextNode("@keyframes _loader-animation_t6bg6_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._loader_t6bg6_10{display:block;color:var(--hf-loader-color);flex:0 0 auto}._circle_t6bg6_15{animation-name:_loader-animation_t6bg6_1;animation-iteration-count:infinite;animation-duration:1s;animation-timing-function:linear}._white_t6bg6_22{--hf-loader-color: var(--hf-color-text-invert)}._black_t6bg6_26{--hf-loader-color: var(--hf-color-text-main)}._s_t6bg6_30{width:18px;height:18px}._m_t6bg6_35{width:28px;height:28px}._l_t6bg6_10{width:56px;height:56px}._spinner_t6bg6_45{display:inline-block;border:1px solid var(--hf-loader-color);border-top-color:transparent;border-left-color:transparent;border-radius:50%}._icon_1p8iz_2{font-style:normal;display:inline-block;vertical-align:middle}._button_8zhhb_1{position:relative;display:inline-flex;align-items:center;justify-content:center;border:solid 1px;cursor:pointer;font-family:var(--hf-font-family-body),sans-serif;font-style:normal;min-width:-moz-max-content;min-width:max-content;text-decoration:none;color:inherit;gap:var(--hf-spacing-button-icon)}._button_8zhhb_1:active{background-color:#999}._button_8zhhb_1:focus{outline:none}._button_8zhhb_1:focus-visible{outline:solid 3px var(--hf-color-button-disable-default)}._button_8zhhb_1:is(._disabled_8zhhb_1),._button_8zhhb_1:is(._disabled_8zhhb_1):hover{background:var(--hf-color-button-disable-default);border-color:transparent;color:var(--hf-color-text-light);box-shadow:none;transform:none;cursor:default}._button_8zhhb_1._loading_8zhhb_1{cursor:default}._button_8zhhb_1._loading_8zhhb_1>*:not(._loader_8zhhb_1){visibility:hidden}._button_8zhhb_1+._button_8zhhb_1{margin-left:var(--hf-spacing-button-between)}._content_8zhhb_1{display:flex;line-height:inherit}._content_8zhhb_1:first-child:last-child{width:100%;text-align:center}._loader_8zhhb_1{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}._dropdownIcon_8zhhb_1{margin-left:calc(var(--hf-spacing-button-icon) * -1)}._s_8zhhb_2{border-radius:var(--hf-radius-button-s);font-size:var(--hf-font-size-button-s);font-weight:var(--hf-font-weight-button-s);line-height:var(--hf-font-line-height-button-s);padding:var(--hf-padding-button-top-bottom-s) var(--hf-padding-button-left-right-s)}._xs_8zhhb_1{font-size:var(--hf-font-size-button-xs);font-weight:var(--hf-font-weight-button-xs);line-height:var(--hf-font-line-height-button-xs);padding:var(--hf-padding-button-top-bottom-xs) var(--hf-padding-button-left-right-xs)}._xs_8zhhb_1._square_8zhhb_1{border-radius:var(--hf-radius-button-xs)}._xs_8zhhb_1._circle_8zhhb_1{border-radius:var(--hf-radius-button-circle)}._m_8zhhb_1{border-radius:var(--hf-radius-button-m);font-size:var(--hf-font-size-button-m);font-weight:var(--hf-font-weight-button-m);line-height:var(--hf-font-line-height-button-m);padding:var(--hf-padding-button-top-bottom-m) var(--hf-padding-button-left-right-m)}._l_8zhhb_1{border-radius:var(--hf-radius-button-l);font-size:var(--hf-font-size-button-l);font-weight:var(--hf-font-weight-button-l);line-height:var(--hf-font-line-height-button-l);padding:var(--hf-padding-button-top-bottom-l) var(--hf-padding-button-left-right-l)}._primary_8zhhb_1{color:var(--hf-color-text-invert);background-color:var(--hf-color-button-primary-default);border-color:var(--hf-color-button-primary-default)}._primary_8zhhb_1:hover{background-color:var(--hf-color-button-primary-hover);border-color:var(--hf-color-button-primary-hover)}._primary_8zhhb_1:active{background-color:var(--hf-color-button-primary-active);border-color:var(--hf-color-button-primary-active)}._secondary_8zhhb_1{color:var(--hf-color-text-main);background-color:var(--hf-color-button-secondary-fill-default);border-color:var(--hf-color-button-secondary-border-default);box-shadow:0 1px 4px #0505050a}._secondary_8zhhb_1:hover{background-color:var(--hf-color-button-secondary-fill-hover);border-color:var(--hf-color-button-secondary-fill-hover)}._secondary_8zhhb_1:active{background-color:var(--hf-color-button-secondary-fill-active);border-color:var(--hf-color-button-secondary-fill-active)}._accent_8zhhb_1{color:var(--hf-color-text-invert);background-color:var(--hf-color-button-accent-default);border-color:var(--hf-color-button-accent-default)}._accent_8zhhb_1:hover{background-color:var(--hf-color-button-accent-hover);border-color:var(--hf-color-button-accent-hover)}._accent_8zhhb_1:active{background-color:var(--hf-color-button-accent-active);border-color:var(--hf-color-button-accent-active)}._danger_8zhhb_1{color:var(--hf-color-text-invert);background-color:var(--hf-color-button-danger-default);border-color:var(--hf-color-button-danger-default)}._danger_8zhhb_1:hover{background-color:var(--hf-color-button-danger-hover);border-color:var(--hf-color-button-danger-hover)}._danger_8zhhb_1:active{background-color:var(--hf-color-button-danger-active);border-color:var(--hf-color-button-danger-active)}._jobsites_8zhhb_1{color:var(--hf-color-text-invert);background-color:var(--hf-color-button-jobsite-default);border-color:var(--hf-color-button-jobsite-default)}._jobsites_8zhhb_1:hover{background-color:var(--hf-color-button-jobsite-hover);border-color:var(--hf-color-button-jobsite-hover)}._jobsites_8zhhb_1:active{background-color:var(--hf-color-button-jobsite-active);border-color:var(--hf-color-button-jobsite-active)}._ghost_8zhhb_1{color:var(--hf-color-text-main);background-color:transparent;border-color:transparent}._ghost_8zhhb_1:hover{background-color:var(--hf-color-button-secondary-fill-hover)}._ghost_8zhhb_1:active{background-color:var(--hf-color-button-secondary-fill-active)}._ghost-danger_8zhhb_1{color:var(--hf-color-text-main);background-color:transparent;border-color:transparent}._ghost-danger_8zhhb_1:hover{color:var(--hf-color-text-invert);background-color:var(--hf-color-button-danger-hover)}._ghost-danger_8zhhb_1:active{color:var(--hf-color-text-invert);background-color:var(--hf-color-button-danger-active)}:root{--hf-btn-size-xs: 28px;--hf-btn-size-s: 32px;--hf-btn-size-m: 36px;--hf-btn-size-l: 40px}._s_1oi85_9{width:var(--hf-btn-size-s);height:var(--hf-btn-size-s)}._xs_1oi85_14{width:var(--hf-btn-size-xs);height:var(--hf-btn-size-xs);border-radius:var(--hf-radius-button-circle)}._m_1oi85_20{width:var(--hf-btn-size-m);height:var(--hf-btn-size-m)}._l_1oi85_25{width:var(--hf-btn-size-l);height:var(--hf-btn-size-l)}._button_1oi85_31{padding:0}._button_1vqio_1{padding:0 2px 0 0;border:none;margin:0;cursor:pointer;display:flex;flex-direction:row;gap:var(--hf-spacing-button-link-s);align-items:center;background-color:transparent;color:var(--hf-color-link-default);font-family:var(--hf-font-family-body),sans-serif;font-size:var(--hf-font-size-button-link-s);font-style:normal;font-weight:var(--hf-font-weight-button-link-s);line-height:var(--hf-font-line-height-button-link-s)}._button_1vqio_1:hover{color:var(--hf-color-link-hover)}._label_4sgbr_1{display:flex;flex-direction:row;gap:var(--hf-spacing-xs);font-style:normal;flex:1;margin-bottom:var(--hf-spacing-xs)}._header_4sgbr_10{display:block;color:var(--hf-color-text-main);font-size:var(--hf-font-size-text-h4);font-weight:var(--hf-font-weight-text-h4);line-height:var(--hf-font-line-height-text-h4)}._headerWrapper_4sgbr_18{flex-grow:1;gap:var(--hf-spacing-xs);display:flex;flex-direction:column}._title_4sgbr_25{display:block;color:var(--hf-color-text-main);font-size:var(--hf-font-size-label-title);font-weight:var(--hf-font-weight-label-title);line-height:var(--hf-font-line-height-label-title)}._subTitleRow_4sgbr_33{display:flex;justify-content:space-between;font-size:var(--hf-font-size-label-subtitle);color:var(--hf-color-text-semilight);font-weight:var(--hf-font-weight-label-subtitle)}._subTitle_4sgbr_33{line-height:var(--hf-font-line-height-label-subtitle)}._link_4sgbr_45{overflow:hidden;text-overflow:ellipsis;font-size:var(--hf-font-size-label-title);line-height:var(--hf-font-line-height-label-subtitle);color:var(--hf-color-text-semilight);font-weight:var(--hf-font-weight-label-subtitle);margin-left:auto;align-self:flex-end;height:20px}._link_4sgbr_45 a{text-decoration:none;color:var(--hf-color-text-semilight)}._linkUpper_4sgbr_62{margin-bottom:1px}._wrapper_ep5oa_1{margin-bottom:var(--hf-spacing-xs)}._input_ep5oa_5{border-radius:var(--hf-radius-input-default);border:var(--hf-border-xs) solid var(--hf-color-input-border-default);background:var(--hf-color-input-background-default);padding:var(--hf-padding-input-top-bottom-default) var(--hf-padding-input-right-default) var(--hf-padding-input-top-bottom-default) var(--hf-padding-input-left-default);width:100%;box-sizing:border-box;color:var(--hf-color-input-text-default);font-size:var(--hf-font-size-field-text);font-weight:var(--hf-font-weight-field-text);line-height:var(--hf-font-line-height-field-text)}._input_ep5oa_5:active{border-color:var(--hf-color-input-border-focus)}._input_ep5oa_5:focus{border-color:var(--hf-color-input-border-focus);outline:solid 3px var(--hf-color-input-border-focus-visible)}._input_ep5oa_5:disabled{outline:none;border-color:var(--hf-color-input-text-disable);background:var(--hf-color-input-background-disable);color:var(--hf-color-input-text-disable)}._error_ep5oa_36,._error_ep5oa_36:active{border-color:var(--hf-color-input-border-error)}._error_ep5oa_36:focus{border-color:var(--hf-color-input-border-error);outline:solid 3px var(--hf-color-input-border-error-focus-visible)}._description_ep5oa_48{margin-top:var(--hf-spacing-xs);font-size:var(--hf-font-size-field-error);font-weight:var(--hf-font-weight-field-description);line-height:var(--hf-font-line-height-field-description)}._description_ep5oa_48 a{text-decoration:underline}._descriptionText_ep5oa_59{color:var(--hf-color-input-text-description)}._errorText_ep5oa_63{color:var(--hf-color-text-danger)}._inputWrapper_ep5oa_67{position:relative}._leftSpace_ep5oa_71{padding-left:42px}._rightSpace_ep5oa_75{padding-right:42px}._leftIcon_ep5oa_79,._rightIcon_ep5oa_80{position:absolute;height:100%}._leftIcon_ep5oa_79{left:15px}._rightIcon_ep5oa_80{padding:0 9px;right:0}._rightIcon_ep5oa_80[aria-label^=close]{color:var(--hf-color-text-light);cursor:pointer}._plank_8tn62_1{border-radius:var(--hf-radius-m);padding:var(--hf-spacing-m) var(--hf-spacing-l);border-width:1px;border-style:solid;font-family:var(--hf-font-family-body),sans-serif;font-size:var(--hf-font-size-text-primary);font-weight:var(--hf-font-weight-text-primary-regular);line-height:var(--hf-font-line-height-text-primary);font-style:normal;display:flex;flex-direction:row;gap:var(--hf-spacing-m);align-items:center;justify-content:space-between}._default_8tn62_19{color:var(--hf-color-text-main);border-color:var(--hf-color-plank-default-border);background-color:var(--hf-color-plank-default-background)}._accent_8tn62_25{color:var(--hf-color-plank-success-text);border-color:var(--hf-color-plank-success-border);background-color:var(--hf-color-plank-success-background)}._danger_8tn62_31{color:var(--hf-color-plank-danger-text);border-color:var(--hf-color-plank-danger-border);background-color:var(--hf-color-plank-danger-background)}._text_8tn62_37{flex-grow:1}._icon_8tn62_41{width:var(--hf-font-line-height-text-primary);height:var(--hf-font-line-height-text-primary)}._text_1mrtv_1{font-family:var(--hf-font-family-body);font-style:normal;color:var(--hf-color-text-main);margin:0}._primary_1mrtv_8{font-size:var(--hf-font-size-text-primary);font-weight:var(--hf-font-weight-text-primary-regular);line-height:var(--hf-font-line-height-text-primary)}._primary_1mrtv_8._medium_1mrtv_12{font-weight:var(--hf-font-weight-text-primary-medium)}._secondary_1mrtv_17{font-size:var(--hf-font-size-text-secondary);font-weight:var(--hf-font-weight-text-secondary-regular);line-height:var(--hf-font-line-height-text-secondary)}._secondary_1mrtv_17._medium_1mrtv_12{font-weight:var(--hf-font-weight-text-secondary-medium)}._accent_1mrtv_26{font-size:var(--hf-font-size-text-accent);font-weight:var(--hf-font-weight-text-accent-regular);line-height:var(--hf-font-line-height-text-accent)}._accent_1mrtv_26._medium_1mrtv_12{font-weight:var(--hf-font-weight-text-accent-medium)}._subtitle_1mrtv_35{font-size:var(--hf-font-size-text-subtitle);font-weight:var(--hf-font-weight-text-subtitle);line-height:var(--hf-font-line-height-text-subtitle)}._title_471uj_1{font-family:var(--hf-font-family-body);font-style:normal;color:var(--hf-color-text-main);margin:0}._level-1_471uj_8{font-size:var(--hf-font-size-text-h1);font-weight:var(--hf-font-weight-text-h1-regular);line-height:var(--hf-font-line-height-text-h1)}._level-1_471uj_8._medium_471uj_12{font-weight:var(--hf-font-weight-text-h1-medium)}._level-2_471uj_17{font-size:var(--hf-font-size-text-h2);font-weight:var(--hf-font-weight-text-h2-regular);line-height:var(--hf-font-line-height-text-h2)}._level-2_471uj_17._medium_471uj_12{font-weight:var(--hf-font-weight-text-h2-medium)}._level-3_471uj_26{font-size:var(--hf-font-size-text-h3);font-weight:var(--hf-font-weight-text-h3-regular);line-height:var(--hf-font-line-height-text-h3)}._level-3_471uj_26._medium_471uj_12{font-weight:var(--hf-font-weight-text-h3-medium)}._level-4_471uj_35{font-size:var(--hf-font-size-text-h4);font-weight:var(--hf-font-weight-text-h4-regular);line-height:var(--hf-font-line-height-text-h4)}._level-4_471uj_35._medium_471uj_12{font-weight:var(--hf-font-weight-text-h4-medium)}")),document.head.appendChild(t)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- import { defineComponent as b, computed as u, createElementBlock as m, openBlock as c, normalizeClass as i, unref as l, normalizeStyle as K, createElementVNode as L, useSlots as P, createCommentVNode as _, renderSlot as y, createBlock as k, createVNode as j, mergeProps as U, withCtx as v, Fragment as J, Comment as Q, cloneVNode as X, h as M, toValue as Y, getCurrentInstance as Z, ref as ee, mergeModels as W, useAttrs as te, useModel as ne, createTextVNode as I, toDisplayString as S, resolveDynamicComponent as H } from "vue";
2
+ import { defineComponent as b, computed as u, createElementBlock as m, openBlock as c, normalizeClass as i, unref as l, normalizeStyle as K, createElementVNode as L, useSlots as P, createCommentVNode as p, renderSlot as y, createBlock as k, createVNode as j, mergeProps as U, withCtx as v, Fragment as J, Comment as Q, cloneVNode as X, h as M, toValue as Y, getCurrentInstance as Z, ref as ee, mergeModels as W, useAttrs as te, useModel as ne, createTextVNode as I, toDisplayString as S, resolveDynamicComponent as H } from "vue";
3
3
  const C = (s, e) => {
4
4
  const t = e ? s[e] : s.default;
5
5
  return (t == null ? void 0 : t().some((n) => {
6
6
  const o = n.children;
7
7
  return o && o.toString().trim() !== "";
8
8
  })) ?? !1;
9
- }, se = "_loader_t6bg6_10", oe = "_circle_t6bg6_15", le = "_white_t6bg6_22", re = "_black_t6bg6_26", ae = "_s_t6bg6_30", ce = "_m_t6bg6_35", ie = "_l_t6bg6_10", ue = "_spinner_t6bg6_45", z = {
9
+ }, se = "_loader_t6bg6_10", oe = "_circle_t6bg6_15", le = "_white_t6bg6_22", ae = "_black_t6bg6_26", re = "_s_t6bg6_30", ce = "_m_t6bg6_35", ie = "_l_t6bg6_10", ue = "_spinner_t6bg6_45", z = {
10
10
  loader: se,
11
11
  circle: oe,
12
12
  "loader-animation": "_loader-animation_t6bg6_1",
13
13
  white: le,
14
- black: re,
15
- s: ae,
14
+ black: ae,
15
+ s: re,
16
16
  m: ce,
17
17
  l: ie,
18
18
  spinner: ue
@@ -29,34 +29,34 @@ const C = (s, e) => {
29
29
  class: i([l(z).spinner, t.value])
30
30
  }, null, 2));
31
31
  }
32
- }), pe = ["aria-label", "width", "height"], _e = ["xlink:href"], me = /* @__PURE__ */ b({
32
+ }), _e = ["aria-label", "width", "height"], pe = ["xlink:href"], me = /* @__PURE__ */ b({
33
33
  __name: "icon",
34
34
  props: {
35
- type: {},
35
+ name: {},
36
36
  color: {},
37
37
  block: { type: Boolean }
38
38
  },
39
39
  setup(s) {
40
40
  const e = s, t = u(() => {
41
- var r;
42
- const o = (r = e == null ? void 0 : e.type) == null ? void 0 : r.match(/(\d+)$/);
41
+ var a;
42
+ const o = (a = e == null ? void 0 : e.name) == null ? void 0 : a.match(/(\d+)$/);
43
43
  return o ? Number.parseInt(o[1], 10) : 16;
44
44
  }), n = u(() => {
45
45
  const o = {};
46
46
  return e.color && (o.color = e.color), e.block && (o.display = "block"), o;
47
47
  });
48
- return (o, r) => (c(), m("svg", {
48
+ return (o, a) => (c(), m("svg", {
49
49
  class: i(o.$style.icon),
50
- "aria-label": o.type,
50
+ "aria-label": o.name,
51
51
  style: K(n.value),
52
52
  role: "img",
53
53
  width: t.value,
54
54
  height: t.value
55
55
  }, [
56
56
  L("use", {
57
- "xlink:href": `#${o.type}`
58
- }, null, 8, _e)
59
- ], 14, pe));
57
+ "xlink:href": `#${o.name}`
58
+ }, null, 8, pe)
59
+ ], 14, _e));
60
60
  }
61
61
  }), fe = "_icon_1p8iz_2", be = {
62
62
  icon: fe
@@ -67,7 +67,19 @@ const C = (s, e) => {
67
67
  return t;
68
68
  }, ye = {
69
69
  $style: be
70
- }, T = /* @__PURE__ */ he(me, [["__cssModules", ye]]), ge = "_button_8zhhb_1", ve = "_disabled_8zhhb_1", ke = "_loading_8zhhb_1", $e = "_loader_8zhhb_1", we = "_content_8zhhb_1", Ce = "_dropdownIcon_8zhhb_1", Te = "_s_8zhhb_2", ze = "_xs_8zhhb_1", Ie = "_square_8zhhb_1", Se = "_circle_8zhhb_1", Be = "_m_8zhhb_1", Ne = "_l_8zhhb_1", Le = "_primary_8zhhb_1", je = "_secondary_8zhhb_1", Ue = "_accent_8zhhb_1", Me = "_danger_8zhhb_1", Ee = "_jobsites_8zhhb_1", Oe = "_ghost_8zhhb_1", h = {
70
+ }, T = /* @__PURE__ */ he(me, [["__cssModules", ye]]), Et = async () => {
71
+ if (!(typeof document > "u") && !document.getElementById("__svg-sprite__"))
72
+ try {
73
+ const e = `
74
+ <svg id="__svg-sprite__" xmlns="http://www.w3.org/2000/svg" style="display: none;">
75
+ ${(await import("./sprite-DZhFK9-p.js")).default}
76
+ </svg>
77
+ `;
78
+ document.body.insertAdjacentHTML("afterbegin", e);
79
+ } catch (s) {
80
+ console.error("Failed to load SVG sprite:", s);
81
+ }
82
+ }, ge = "_button_8zhhb_1", ve = "_disabled_8zhhb_1", ke = "_loading_8zhhb_1", $e = "_loader_8zhhb_1", we = "_content_8zhhb_1", Ce = "_dropdownIcon_8zhhb_1", Te = "_s_8zhhb_2", ze = "_xs_8zhhb_1", Ie = "_square_8zhhb_1", Se = "_circle_8zhhb_1", Be = "_m_8zhhb_1", Ne = "_l_8zhhb_1", Le = "_primary_8zhhb_1", je = "_secondary_8zhhb_1", Ue = "_accent_8zhhb_1", Me = "_danger_8zhhb_1", Ee = "_jobsites_8zhhb_1", Oe = "_ghost_8zhhb_1", h = {
71
83
  button: ge,
72
84
  disabled: ve,
73
85
  loading: ke,
@@ -112,7 +124,7 @@ const C = (s, e) => {
112
124
  jobsites: "white",
113
125
  ghost: "black",
114
126
  "ghost-danger": "black"
115
- }, o = u(() => C(t)), r = u(() => [
127
+ }, o = u(() => C(t)), a = u(() => [
116
128
  h.button,
117
129
  h[e.size],
118
130
  h[e.type],
@@ -124,10 +136,10 @@ const C = (s, e) => {
124
136
  [h.bordered]: e.bordered
125
137
  },
126
138
  e.className
127
- ]), a = u(() => n[e.type] || "white");
139
+ ]), r = u(() => n[e.type] || "white");
128
140
  return (d, $) => (c(), m("button", {
129
141
  name: d.name,
130
- class: i(r.value),
142
+ class: i(a.value),
131
143
  type: d.htmlType,
132
144
  disabled: d.disabled || d.loading,
133
145
  onClick: $[0] || ($[0] = (g) => d.$emit("click"))
@@ -138,22 +150,22 @@ const C = (s, e) => {
138
150
  }, [
139
151
  j(l(de), {
140
152
  size: "s",
141
- color: a.value
153
+ color: r.value
142
154
  }, null, 8, ["color"])
143
- ], 2)) : _("", !0),
144
- d.$slots.before ? y(d.$slots, "before", { key: 1 }) : _("", !0),
155
+ ], 2)) : p("", !0),
156
+ d.$slots.before ? y(d.$slots, "before", { key: 1 }) : p("", !0),
145
157
  o.value ? (c(), m("span", {
146
158
  key: 2,
147
159
  class: i(l(h).content)
148
160
  }, [
149
161
  y(d.$slots, "default")
150
- ], 2)) : _("", !0),
151
- d.$slots.after ? y(d.$slots, "after", { key: 3 }) : _("", !0),
152
- d.dropdown ? (c(), k(T, {
162
+ ], 2)) : p("", !0),
163
+ d.$slots.after ? y(d.$slots, "after", { key: 3 }) : p("", !0),
164
+ d.dropdown ? (c(), k(l(T), {
153
165
  key: 4,
154
166
  class: i(l(h).dropdownIcon),
155
- type: "chevron-down-18"
156
- }, null, 8, ["class"])) : _("", !0)
167
+ name: "chevron-down-18"
168
+ }, null, 8, ["class"])) : p("", !0)
157
169
  ], 10, Pe));
158
170
  }
159
171
  }), Re = "_s_1oi85_9", We = "_xs_1oi85_14", xe = "_m_1oi85_20", He = "_l_1oi85_25", Ve = "_button_1oi85_31", x = {
@@ -162,7 +174,7 @@ const C = (s, e) => {
162
174
  m: xe,
163
175
  l: He,
164
176
  button: Ve
165
- }, Et = /* @__PURE__ */ b({
177
+ }, Ot = /* @__PURE__ */ b({
166
178
  __name: "button-icon",
167
179
  props: {
168
180
  icon: {},
@@ -179,33 +191,21 @@ const C = (s, e) => {
179
191
  emits: ["click"],
180
192
  setup(s) {
181
193
  const e = s, t = u(() => [x.button, x[e.size], e.className]), n = u(() => {
182
- const r = e.size === "xs" ? "18" : "20";
183
- return e.icon.replace(/-?\d*$/, `-${r}`);
194
+ const a = e.size === "xs" ? "18" : "20";
195
+ return e.icon.replace(/-?\d*$/, `-${a}`);
184
196
  }), o = u(() => e.size === "xs");
185
- return (r, a) => (c(), k(l(V), U({ class: t.value }, e, {
197
+ return (a, r) => (c(), k(l(V), U({ class: t.value }, e, {
186
198
  "html-type": "button",
187
199
  circle: o.value,
188
- onClick: a[0] || (a[0] = (d) => r.$emit("click"))
200
+ onClick: r[0] || (r[0] = (d) => a.$emit("click"))
189
201
  }), {
190
202
  before: v(() => [
191
- j(l(T), { type: n.value }, null, 8, ["type"])
203
+ j(l(T), { name: n.value }, null, 8, ["name"])
192
204
  ]),
193
205
  _: 1
194
206
  }, 16, ["class", "circle"]));
195
207
  }
196
- }), Ot = async () => {
197
- if (!(typeof document > "u") && !document.getElementById("__svg-sprite__"))
198
- try {
199
- const e = `
200
- <svg id="__svg-sprite__" xmlns="http://www.w3.org/2000/svg" style="display: none;">
201
- ${(await import("./sprite-DZhFK9-p.js")).default}
202
- </svg>
203
- `;
204
- document.body.insertAdjacentHTML("afterbegin", e);
205
- } catch (s) {
206
- console.error("Failed to load SVG sprite:", s);
207
- }
208
- }, Ae = "_button_1vqio_1", De = {
208
+ }), Ae = "_button_1vqio_1", De = {
209
209
  button: Ae
210
210
  }, Pt = /* @__PURE__ */ b({
211
211
  __name: "button-link",
@@ -216,7 +216,7 @@ const C = (s, e) => {
216
216
  type: "button",
217
217
  onClick: t[0] || (t[0] = (n) => e.$emit("click"))
218
218
  }, [
219
- j(l(T), { type: "plus-18" }),
219
+ j(l(T), { name: "plus-18" }),
220
220
  y(e.$slots, "default")
221
221
  ], 2));
222
222
  }
@@ -235,9 +235,9 @@ const Fe = b({
235
235
  const n = A(t.default()), o = n.findIndex((g) => g.type !== Q);
236
236
  if (o === -1)
237
237
  return n;
238
- const r = n[o];
239
- ($ = r.props) == null || delete $.ref;
240
- const a = r.props ? U(e, r.props) : e, d = X({ ...r, props: {} }, a);
238
+ const a = n[o];
239
+ ($ = a.props) == null || delete $.ref;
240
+ const r = a.props ? U(e, a.props) : e, d = X({ ...a, props: {} }, r);
241
241
  return n.length === 1 ? d : (n[o] = d, n);
242
242
  };
243
243
  }
@@ -266,35 +266,35 @@ function Ke(s) {
266
266
  }
267
267
  function Je() {
268
268
  const s = Z(), e = ee(), t = u(() => {
269
- var a, d;
270
- return ["#text", "#comment"].includes((a = e.value) == null ? void 0 : a.$el.nodeName) ? (d = e.value) == null ? void 0 : d.$el.nextElementSibling : Ke(e);
269
+ var r, d;
270
+ return ["#text", "#comment"].includes((r = e.value) == null ? void 0 : r.$el.nodeName) ? (d = e.value) == null ? void 0 : d.$el.nextElementSibling : Ke(e);
271
271
  }), n = Object.assign({}, s.exposed), o = {};
272
- for (const a in s.props)
273
- Object.defineProperty(o, a, {
272
+ for (const r in s.props)
273
+ Object.defineProperty(o, r, {
274
274
  enumerable: !0,
275
275
  configurable: !0,
276
- get: () => s.props[a]
276
+ get: () => s.props[r]
277
277
  });
278
278
  if (Object.keys(n).length > 0)
279
- for (const a in n)
280
- Object.defineProperty(o, a, {
279
+ for (const r in n)
280
+ Object.defineProperty(o, r, {
281
281
  enumerable: !0,
282
282
  configurable: !0,
283
- get: () => n[a]
283
+ get: () => n[r]
284
284
  });
285
285
  Object.defineProperty(o, "$el", {
286
286
  enumerable: !0,
287
287
  configurable: !0,
288
288
  get: () => s.vnode.el
289
289
  }), s.exposed = o;
290
- function r(a) {
291
- e.value = a, a && (Object.defineProperty(o, "$el", {
290
+ function a(r) {
291
+ e.value = r, r && (Object.defineProperty(o, "$el", {
292
292
  enumerable: !0,
293
293
  configurable: !0,
294
- get: () => a instanceof Element ? a : a.$el
294
+ get: () => r instanceof Element ? r : r.$el
295
295
  }), s.exposed = o);
296
296
  }
297
- return { forwardRef: r, currentRef: e, currentElement: t };
297
+ return { forwardRef: a, currentRef: e, currentElement: t };
298
298
  }
299
299
  const Qe = /* @__PURE__ */ b({
300
300
  __name: "Label",
@@ -329,14 +329,14 @@ const Qe = /* @__PURE__ */ b({
329
329
  __name: "label",
330
330
  emits: ["click"],
331
331
  setup(s) {
332
- const e = P(), t = u(() => C(e, "header")), n = u(() => C(e)), o = u(() => C(e, "subTitle")), r = u(() => C(e, "link")), a = u(() => t.value || n.value || o.value), d = u(() => !n.value && !o.value), $ = u(
332
+ const e = P(), t = u(() => C(e, "header")), n = u(() => C(e)), o = u(() => C(e, "subTitle")), a = u(() => C(e, "link")), r = u(() => t.value || n.value || o.value), d = u(() => !n.value && !o.value), $ = u(
333
333
  () => [w.link, d.value && w.linkUpper].filter(Boolean)
334
334
  );
335
335
  return (g, B) => (c(), k(l(Qe), {
336
336
  class: i(l(w).label)
337
337
  }, {
338
338
  default: v(() => [
339
- a.value ? (c(), m("span", {
339
+ r.value ? (c(), m("span", {
340
340
  key: 0,
341
341
  class: i(l(w).headerWrapper)
342
342
  }, [
@@ -345,13 +345,13 @@ const Qe = /* @__PURE__ */ b({
345
345
  class: i(l(w).header)
346
346
  }, [
347
347
  y(g.$slots, "header")
348
- ], 2)) : _("", !0),
348
+ ], 2)) : p("", !0),
349
349
  n.value ? (c(), m("span", {
350
350
  key: 1,
351
351
  class: i(l(w).title)
352
352
  }, [
353
353
  y(g.$slots, "default")
354
- ], 2)) : _("", !0),
354
+ ], 2)) : p("", !0),
355
355
  o.value ? (c(), m("span", {
356
356
  key: 2,
357
357
  class: i(l(w).subTitleRow)
@@ -361,28 +361,28 @@ const Qe = /* @__PURE__ */ b({
361
361
  }, [
362
362
  y(g.$slots, "subTitle")
363
363
  ], 2)
364
- ], 2)) : _("", !0)
365
- ], 2)) : _("", !0),
366
- r.value ? (c(), m("span", {
364
+ ], 2)) : p("", !0)
365
+ ], 2)) : p("", !0),
366
+ a.value ? (c(), m("span", {
367
367
  key: 1,
368
368
  class: i($.value),
369
369
  onClick: B[0] || (B[0] = (R) => g.$emit("click"))
370
370
  }, [
371
371
  y(g.$slots, "link")
372
- ], 2)) : _("", !0)
372
+ ], 2)) : p("", !0)
373
373
  ]),
374
374
  _: 3
375
375
  }, 8, ["class"]));
376
376
  }
377
- }), rt = "_wrapper_ep5oa_1", at = "_input_ep5oa_5", ct = "_error_ep5oa_36", it = "_description_ep5oa_48", ut = "_descriptionText_ep5oa_59", dt = "_errorText_ep5oa_63", pt = "_inputWrapper_ep5oa_67", _t = "_leftSpace_ep5oa_71", mt = "_rightSpace_ep5oa_75", ft = "_leftIcon_ep5oa_79", bt = "_rightIcon_ep5oa_80", f = {
378
- wrapper: rt,
379
- input: at,
377
+ }), at = "_wrapper_ep5oa_1", rt = "_input_ep5oa_5", ct = "_error_ep5oa_36", it = "_description_ep5oa_48", ut = "_descriptionText_ep5oa_59", dt = "_errorText_ep5oa_63", _t = "_inputWrapper_ep5oa_67", pt = "_leftSpace_ep5oa_71", mt = "_rightSpace_ep5oa_75", ft = "_leftIcon_ep5oa_79", bt = "_rightIcon_ep5oa_80", f = {
378
+ wrapper: at,
379
+ input: rt,
380
380
  error: ct,
381
381
  description: it,
382
382
  descriptionText: ut,
383
383
  errorText: dt,
384
- inputWrapper: pt,
385
- leftSpace: _t,
384
+ inputWrapper: _t,
385
+ leftSpace: pt,
386
386
  rightSpace: mt,
387
387
  leftIcon: ft,
388
388
  rightIcon: bt
@@ -411,7 +411,7 @@ const Qe = /* @__PURE__ */ b({
411
411
  }),
412
412
  emits: /* @__PURE__ */ W(["update:value", "enter", "click-link", "click-icon", "click", "focus", "blur"], ["update:value"]),
413
413
  setup(s, { emit: e }) {
414
- const t = s, n = e, o = te(), r = ne(s, "value"), a = u(() => [
414
+ const t = s, n = e, o = te(), a = ne(s, "value"), r = u(() => [
415
415
  f.input,
416
416
  {
417
417
  [f.disabled]: t.disabled,
@@ -421,10 +421,10 @@ const Qe = /* @__PURE__ */ b({
421
421
  [f.rightSpace]: !!t.rightIcon
422
422
  },
423
423
  t.className
424
- ]), d = u(() => t.header || t.title || t.subTitle || t.link), $ = u(() => t.description || t.error), g = (p) => {
425
- p.key === "Enter" && n("enter");
426
- }, B = (p) => {
427
- n("update:value", p.target.value);
424
+ ]), d = u(() => t.header || t.title || t.subTitle || t.link), $ = u(() => t.description || t.error), g = (_) => {
425
+ _.key === "Enter" && n("enter");
426
+ }, B = (_) => {
427
+ n("update:value", _.target.value);
428
428
  }, R = () => {
429
429
  n("focus");
430
430
  }, D = () => {
@@ -433,15 +433,15 @@ const Qe = /* @__PURE__ */ b({
433
433
  n("click-link");
434
434
  }, q = () => {
435
435
  n("click");
436
- }, G = (p) => {
437
- p.preventDefault(), n("click-icon");
436
+ }, G = (_) => {
437
+ _.preventDefault(), n("click-icon");
438
438
  };
439
- return (p, Ut) => (c(), m("div", {
439
+ return (_, Ut) => (c(), m("div", {
440
440
  class: i(l(f).wrapper)
441
441
  }, [
442
442
  d.value ? (c(), k(l(lt), {
443
443
  key: 0,
444
- for: p.id,
444
+ for: _.id,
445
445
  onClick: F
446
446
  }, {
447
447
  header: v(() => [
@@ -457,24 +457,24 @@ const Qe = /* @__PURE__ */ b({
457
457
  I(" " + S(t.title) + " ", 1)
458
458
  ]),
459
459
  _: 1
460
- }, 8, ["for"])) : _("", !0),
460
+ }, 8, ["for"])) : p("", !0),
461
461
  L("div", {
462
462
  class: i(l(f).inputWrapper)
463
463
  }, [
464
- p.leftIcon ? (c(), k(l(T), {
464
+ _.leftIcon ? (c(), k(l(T), {
465
465
  key: 0,
466
- type: p.leftIcon,
466
+ name: _.leftIcon,
467
467
  class: i(l(f).leftIcon)
468
- }, null, 8, ["type", "class"])) : _("", !0),
468
+ }, null, 8, ["name", "class"])) : p("", !0),
469
469
  L("input", U({
470
- id: p.id,
471
- value: r.value,
472
- name: p.name,
473
- type: p.type,
474
- disabled: p.disabled || p.loading,
475
- placeholder: p.placeholder,
476
- class: a.value,
477
- "aria-invalid": !!p.error
470
+ id: _.id,
471
+ value: a.value,
472
+ name: _.name,
473
+ type: _.type,
474
+ disabled: _.disabled || _.loading,
475
+ placeholder: _.placeholder,
476
+ class: r.value,
477
+ "aria-invalid": !!_.error
478
478
  }, l(o), {
479
479
  onInput: B,
480
480
  onKeydown: g,
@@ -482,28 +482,28 @@ const Qe = /* @__PURE__ */ b({
482
482
  onBlur: D,
483
483
  onClick: q
484
484
  }), null, 16, ht),
485
- p.rightIcon ? (c(), k(l(T), {
485
+ _.rightIcon ? (c(), k(l(T), {
486
486
  key: 1,
487
- type: p.rightIcon,
487
+ name: _.rightIcon,
488
488
  class: i(l(f).rightIcon),
489
489
  onClick: G
490
- }, null, 8, ["type", "class"])) : _("", !0)
490
+ }, null, 8, ["name", "class"])) : p("", !0)
491
491
  ], 2),
492
492
  $.value ? (c(), m("div", {
493
493
  key: 1,
494
494
  class: i(l(f).description)
495
495
  }, [
496
- p.error ? (c(), m("div", {
496
+ _.error ? (c(), m("div", {
497
497
  key: 0,
498
498
  class: i(l(f).errorText),
499
- innerHTML: p.error
500
- }, null, 10, yt)) : _("", !0),
501
- p.description ? (c(), m("div", {
499
+ innerHTML: _.error
500
+ }, null, 10, yt)) : p("", !0),
501
+ _.description ? (c(), m("div", {
502
502
  key: 1,
503
503
  class: i(l(f).descriptionText),
504
- innerHTML: p.description
505
- }, null, 10, gt)) : _("", !0)
506
- ], 2)) : _("", !0)
504
+ innerHTML: _.description
505
+ }, null, 10, gt)) : p("", !0)
506
+ ], 2)) : p("", !0)
507
507
  ], 2));
508
508
  }
509
509
  }), vt = "_plank_8tn62_1", kt = "_accent_8tn62_25", $t = "_danger_8tn62_31", wt = "_text_8tn62_37", Ct = "_icon_8tn62_41", N = {
@@ -523,32 +523,32 @@ const Qe = /* @__PURE__ */ b({
523
523
  emits: ["click"],
524
524
  setup(s) {
525
525
  const e = s, t = P(), n = u(() => C(t)), o = u(() => [N.plank, N[e.type]]);
526
- return (r, a) => (c(), m("div", {
526
+ return (a, r) => (c(), m("div", {
527
527
  class: i(o.value)
528
528
  }, [
529
- r.icon ? (c(), m("div", {
529
+ a.icon ? (c(), m("div", {
530
530
  key: 0,
531
531
  class: i(l(N).icon)
532
532
  }, [
533
- j(l(T), { type: r.icon }, null, 8, ["type"])
534
- ], 2)) : _("", !0),
533
+ j(l(T), { name: a.icon }, null, 8, ["name"])
534
+ ], 2)) : p("", !0),
535
535
  n.value ? (c(), m("div", {
536
536
  key: 1,
537
537
  class: i(l(N).text)
538
538
  }, [
539
- y(r.$slots, "default")
540
- ], 2)) : _("", !0),
541
- r.label ? (c(), k(l(V), {
539
+ y(a.$slots, "default")
540
+ ], 2)) : p("", !0),
541
+ a.label ? (c(), k(l(V), {
542
542
  key: 2,
543
543
  size: "xs",
544
544
  type: "secondary",
545
- onClick: a[0] || (a[0] = (d) => r.$emit("click"))
545
+ onClick: r[0] || (r[0] = (d) => a.$emit("click"))
546
546
  }, {
547
547
  default: v(() => [
548
- I(S(r.label), 1)
548
+ I(S(a.label), 1)
549
549
  ]),
550
550
  _: 1
551
- })) : _("", !0)
551
+ })) : p("", !0)
552
552
  ], 2));
553
553
  }
554
554
  }), Tt = "_text_1mrtv_1", zt = "_primary_1mrtv_8", It = "_medium_1mrtv_12", St = "_secondary_1mrtv_17", Bt = "_accent_1mrtv_26", Nt = "_subtitle_1mrtv_35", E = {
@@ -601,7 +601,7 @@ const Qe = /* @__PURE__ */ b({
601
601
  e.className,
602
602
  e.weight && O[e.weight]
603
603
  ]), n = u(() => `h${e.level ?? 1}`);
604
- return (o, r) => (c(), k(H(n.value), {
604
+ return (o, a) => (c(), k(H(n.value), {
605
605
  class: i(t.value)
606
606
  }, {
607
607
  default: v(() => [
@@ -613,7 +613,7 @@ const Qe = /* @__PURE__ */ b({
613
613
  });
614
614
  export {
615
615
  V as UiButton,
616
- Et as UiButtonIcon,
616
+ Ot as UiButtonIcon,
617
617
  Pt as UiButtonLink,
618
618
  T as UiIcon,
619
619
  Rt as UiInput,
@@ -622,5 +622,5 @@ export {
622
622
  Wt as UiPlank,
623
623
  xt as UiText,
624
624
  Ht as UiTitle,
625
- Ot as injectSvgSprite
625
+ Et as injectSvgSprite
626
626
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@huntflow/ui",
3
3
  "description": "HuntFlow UiKit, icons, utils library",
4
4
  "private": false,
5
- "version": "0.1.1",
5
+ "version": "0.1.2",
6
6
  "author": {
7
7
  "name": "HuntFlow Developer",
8
8
  "nickname": "developer",
@@ -24,6 +24,7 @@
24
24
  "build-storybook": "storybook build",
25
25
  "lint": "eslint './src/**/*.{js,vue,ts}' --quiet",
26
26
  "icons": "npx tsx utils/figma-icons.ts",
27
+ "icons:update-list": "npx tsx utils/icon-list.ts",
27
28
  "variables": "npx tsx utils/figma-variables.ts",
28
29
  "visual:create": "npx tsx tests/screenshot-create.ts",
29
30
  "visual:compare": "npx tsx tests/compare-screenshots.ts"