@sofya-ds/react 1.1.12 → 1.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -158,6 +158,7 @@ __export(index_exports, {
158
158
  hexToHslChannels: () => import_tokens2.hexToHslChannels,
159
159
  iconColorOptions: () => iconColorOptions,
160
160
  iconNames: () => iconNames,
161
+ iconSizeMap: () => iconSizeMap,
161
162
  iconSizeOptions: () => iconSizeOptions,
162
163
  inputVariantOptions: () => inputVariantOptions,
163
164
  isTextContent: () => isTextContent,
@@ -301,107 +302,89 @@ var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"), 1);
301
302
  var React2 = __toESM(require("react"), 1);
302
303
 
303
304
  // src/components/icon-data.ts
304
- var rawIconRegistry = {
305
- "files": { viewBox: "0 0 13.75 16.25", d: "M13.5672 3.30781L10.4422 0.182813C10.3841 0.124791 10.3152 0.0787825 10.2393 0.0474149C10.1634 0.0160474 10.0821 -6.43662e-05 10 1.93249e-07H3.75C3.41848 1.93249e-07 3.10054 0.131696 2.86612 0.366117C2.6317 0.600537 2.5 0.91848 2.5 1.25V2.5H1.25C0.918479 2.5 0.600537 2.6317 0.366116 2.86612C0.131696 3.10054 0 3.41848 0 3.75V15C0 15.3315 0.131696 15.6495 0.366116 15.8839C0.600537 16.1183 0.918479 16.25 1.25 16.25H10C10.3315 16.25 10.6495 16.1183 10.8839 15.8839C11.1183 15.6495 11.25 15.3315 11.25 15V13.75H12.5C12.8315 13.75 13.1495 13.6183 13.3839 13.3839C13.6183 13.1495 13.75 12.8315 13.75 12.5V3.75C13.7501 3.6679 13.734 3.58659 13.7026 3.51072C13.6712 3.43485 13.6252 3.3659 13.5672 3.30781ZM10 15H1.25V3.75H7.24141L10 6.50859V13.1125C10 13.1172 10 13.1211 10 13.125C10 13.1289 10 13.1328 10 13.1375V15ZM12.5 12.5H11.25V6.25C11.2501 6.1679 11.234 6.08659 11.2026 6.01072C11.1712 5.93485 11.1252 5.8659 11.0672 5.80781L7.94219 2.68281C7.8841 2.62479 7.81515 2.57878 7.73928 2.54741C7.66341 2.51605 7.5821 2.49994 7.5 2.5H3.75V1.25H9.74141L12.5 4.00859V12.5ZM8.125 10C8.125 10.1658 8.05915 10.3247 7.94194 10.4419C7.82473 10.5592 7.66576 10.625 7.5 10.625H3.75C3.58424 10.625 3.42527 10.5592 3.30806 10.4419C3.19085 10.3247 3.125 10.1658 3.125 10C3.125 9.83424 3.19085 9.67527 3.30806 9.55806C3.42527 9.44085 3.58424 9.375 3.75 9.375H7.5C7.66576 9.375 7.82473 9.44085 7.94194 9.55806C8.05915 9.67527 8.125 9.83424 8.125 10ZM8.125 12.5C8.125 12.6658 8.05915 12.8247 7.94194 12.9419C7.82473 13.0592 7.66576 13.125 7.5 13.125H3.75C3.58424 13.125 3.42527 13.0592 3.30806 12.9419C3.19085 12.8247 3.125 12.6658 3.125 12.5C3.125 12.3342 3.19085 12.1753 3.30806 12.0581C3.42527 11.9408 3.58424 11.875 3.75 11.875H7.5C7.66576 11.875 7.82473 11.9408 7.94194 12.0581C8.05915 12.1753 8.125 12.3342 8.125 12.5Z" },
306
- "books": { viewBox: "0 0 14.9996 15.6243", d: "M14.9727 13.3236L12.3797 0.995429C12.3462 0.834212 12.2811 0.681209 12.1882 0.545211C12.0954 0.409213 11.9766 0.2929 11.8387 0.202954C11.7007 0.113007 11.5464 0.0512006 11.3845 0.0210839C11.2226 -0.00903273 11.0564 -0.00686564 10.8953 0.0274607L7.23828 0.813398C6.9148 0.884226 6.63238 1.07991 6.45242 1.35789C6.27247 1.63586 6.20955 1.97365 6.27734 2.29777L8.87031 14.6259C8.9281 14.9072 9.08096 15.16 9.30319 15.3418C9.52543 15.5236 9.80349 15.6234 10.0906 15.6243C10.1794 15.6242 10.2679 15.6148 10.3547 15.5962L14.0117 14.8103C14.3356 14.7393 14.6183 14.5432 14.7983 14.2648C14.9783 13.9863 15.0409 13.648 14.9727 13.3236ZM7.5 2.0423C7.5 2.03762 7.5 2.03527 7.5 2.03527L11.1563 1.25402L11.4164 2.49387L7.76016 3.28059L7.5 2.0423ZM8.01719 4.5009L11.675 3.71574L11.9359 4.95793L8.28125 5.74387L8.01719 4.5009ZM8.53594 6.9673L12.1938 6.18137L13.2328 11.122L9.575 11.9079L8.53594 6.9673ZM13.75 13.5884L10.0937 14.3696L9.83359 13.1298L13.4898 12.3431L13.75 13.5814C13.75 13.5861 13.75 13.5884 13.75 13.5884ZM5 0.624336H1.25C0.918479 0.624336 0.600537 0.756032 0.366116 0.990452C0.131696 1.22487 0 1.54282 0 1.87434V14.3743C0 14.7059 0.131696 15.0238 0.366116 15.2582C0.600537 15.4926 0.918479 15.6243 1.25 15.6243H5C5.33152 15.6243 5.64946 15.4926 5.88388 15.2582C6.1183 15.0238 6.25 14.7059 6.25 14.3743V1.87434C6.25 1.54282 6.1183 1.22487 5.88388 0.990452C5.64946 0.756032 5.33152 0.624336 5 0.624336ZM1.25 1.87434H5V3.12434H1.25V1.87434ZM1.25 4.37434H5V11.8743H1.25V4.37434ZM5 14.3743H1.25V13.1243H5V14.3743Z" },
307
- "file-magnifying-glass": { viewBox: "0 0 13.75 16.25", d: "M13.5672 4.55781L9.19219 0.182813C9.1341 0.124791 9.06515 0.0787825 8.98928 0.0474149C8.91341 0.0160474 8.8321 -6.43662e-05 8.75 1.93249e-07H1.25C0.918479 1.93249e-07 0.600537 0.131696 0.366116 0.366117C0.131696 0.600537 0 0.91848 0 1.25V15C0 15.3315 0.131696 15.6495 0.366116 15.8839C0.600537 16.1183 0.918479 16.25 1.25 16.25H12.5C12.8315 16.25 13.1495 16.1183 13.3839 15.8839C13.6183 15.6495 13.75 15.3315 13.75 15V5C13.7501 4.9179 13.734 4.83659 13.7026 4.76072C13.6712 4.68485 13.6252 4.6159 13.5672 4.55781ZM9.375 2.13359L11.6164 4.375H9.375V2.13359ZM12.5 15H1.25V1.25H8.125V5C8.125 5.16576 8.19085 5.32473 8.30806 5.44194C8.42527 5.55915 8.58424 5.625 8.75 5.625H12.5V15ZM8.94219 11.1836C9.31104 10.5975 9.45102 9.896 9.33537 9.2132C9.21973 8.5304 8.85657 7.91414 8.31528 7.48217C7.77399 7.0502 7.09253 6.8328 6.40109 6.87151C5.70964 6.91022 5.0567 7.20232 4.56701 7.69201C4.07732 8.1817 3.78522 8.83464 3.74651 9.52609C3.7078 10.2175 3.9252 10.899 4.35717 11.4403C4.78914 11.9816 5.4054 12.3447 6.0882 12.4604C6.771 12.576 7.47247 12.436 8.05859 12.0672L8.93281 12.9422C8.99088 13.0003 9.05982 13.0463 9.13569 13.0777C9.21156 13.1092 9.29288 13.1253 9.375 13.1253C9.45712 13.1253 9.53844 13.1092 9.61431 13.0777C9.69018 13.0463 9.75912 13.0003 9.81719 12.9422C9.87526 12.8841 9.92132 12.8152 9.95275 12.7393C9.98417 12.6634 10.0003 12.5821 10.0003 12.5C10.0003 12.4179 9.98417 12.3366 9.95275 12.2607C9.92132 12.1848 9.87526 12.1159 9.81719 12.0578L8.94219 11.1836ZM5 9.6875C5 9.37847 5.09164 9.07637 5.26333 8.81942C5.43502 8.56247 5.67905 8.3622 5.96456 8.24394C6.25007 8.12568 6.56423 8.09473 6.86733 8.15502C7.17042 8.21531 7.44883 8.36413 7.66735 8.58265C7.88587 8.80117 8.03469 9.07958 8.09498 9.38267C8.15527 9.68577 8.12432 9.99993 8.00606 10.2854C7.8878 10.571 7.68753 10.815 7.43058 10.9867C7.17363 11.1584 6.87153 11.25 6.5625 11.25C6.1481 11.25 5.75067 11.0854 5.45765 10.7924C5.16462 10.4993 5 10.1019 5 9.6875Z" },
308
- "minus": { viewBox: "0 0 15 1.25", d: "M15 0.625C15 0.79076 14.9342 0.949732 14.8169 1.06694C14.6997 1.18415 14.5408 1.25 14.375 1.25H0.625C0.45924 1.25 0.300269 1.18415 0.183058 1.06694C0.0658481 0.949732 0 0.79076 0 0.625C0 0.45924 0.0658481 0.300269 0.183058 0.183058C0.300269 0.0658481 0.45924 0 0.625 0H14.375C14.5408 0 14.6997 0.0658481 14.8169 0.183058C14.9342 0.300269 15 0.45924 15 0.625Z" },
309
- "plus": { viewBox: "0 0 15 15", d: "M15 7.5C15 7.66576 14.9342 7.82473 14.8169 7.94194C14.6997 8.05915 14.5408 8.125 14.375 8.125H8.125V14.375C8.125 14.5408 8.05915 14.6997 7.94194 14.8169C7.82473 14.9342 7.66576 15 7.5 15C7.33424 15 7.17527 14.9342 7.05806 14.8169C6.94085 14.6997 6.875 14.5408 6.875 14.375V8.125H0.625C0.45924 8.125 0.300269 8.05915 0.183058 7.94194C0.0658481 7.82473 0 7.66576 0 7.5C0 7.33424 0.0658481 7.17527 0.183058 7.05806C0.300269 6.94085 0.45924 6.875 0.625 6.875H6.875V0.625C6.875 0.45924 6.94085 0.300269 7.05806 0.183058C7.17527 0.0658481 7.33424 0 7.5 0C7.66576 0 7.82473 0.0658481 7.94194 0.183058C8.05915 0.300269 8.125 0.45924 8.125 0.625V6.875H14.375C14.5408 6.875 14.6997 6.94085 14.8169 7.05806C14.9342 7.17527 15 7.33424 15 7.5Z" },
310
- "arrows-in-simple": { viewBox: "0 0 13.7507 13.7507", d: "M13.5675 1.06753L9.63394 5.00035H11.8753C12.0411 5.00035 12.2001 5.0662 12.3173 5.18341C12.4345 5.30062 12.5003 5.45959 12.5003 5.62535C12.5003 5.79111 12.4345 5.95008 12.3173 6.06729C12.2001 6.1845 12.0411 6.25035 11.8753 6.25035H8.12535C7.95959 6.25035 7.80062 6.1845 7.68341 6.06729C7.5662 5.95008 7.50035 5.79111 7.50035 5.62535V1.87535C7.50035 1.70959 7.5662 1.55062 7.68341 1.43341C7.80062 1.3162 7.95959 1.25035 8.12535 1.25035C8.29111 1.25035 8.45008 1.3162 8.56729 1.43341C8.6845 1.55062 8.75035 1.70959 8.75035 1.87535V4.11675L12.6832 0.18316C12.8004 0.0658846 12.9595 -3.26935e-09 13.1253 0C13.2912 3.26935e-09 13.4503 0.0658846 13.5675 0.18316C13.6848 0.300435 13.7507 0.459495 13.7507 0.625347C13.7507 0.7912 13.6848 0.95026 13.5675 1.06753ZM5.62535 7.50035H1.87535C1.70959 7.50035 1.55062 7.5662 1.43341 7.68341C1.3162 7.80062 1.25035 7.95959 1.25035 8.12535C1.25035 8.29111 1.3162 8.45008 1.43341 8.56729C1.55062 8.6845 1.70959 8.75035 1.87535 8.75035H4.11675L0.18316 12.6832C0.0658846 12.8004 -3.26935e-09 12.9595 0 13.1253C3.26935e-09 13.2912 0.0658846 13.4503 0.18316 13.5675C0.300435 13.6848 0.459495 13.7507 0.625347 13.7507C0.7912 13.7507 0.95026 13.6848 1.06753 13.5675L5.00035 9.63394V11.8753C5.00035 12.0411 5.0662 12.2001 5.18341 12.3173C5.30062 12.4345 5.45959 12.5003 5.62535 12.5003C5.79111 12.5003 5.95008 12.4345 6.06729 12.3173C6.1845 12.2001 6.25035 12.0411 6.25035 11.8753V8.12535C6.25035 7.95959 6.1845 7.80062 6.06729 7.68341C5.95008 7.5662 5.79111 7.50035 5.62535 7.50035Z" },
311
- "check": { viewBox: "0 0 15.6257 11.2508", d: "M15.4425 1.06754L5.44254 11.0675C5.38449 11.1256 5.31556 11.1717 5.23969 11.2032C5.16381 11.2347 5.08248 11.2508 5.00035 11.2508C4.91821 11.2508 4.83688 11.2347 4.76101 11.2032C4.68514 11.1717 4.61621 11.1256 4.55816 11.0675L0.18316 6.69254C0.0658846 6.57526 0 6.4162 0 6.25035C0 6.0845 0.0658846 5.92544 0.18316 5.80816C0.300435 5.69088 0.459495 5.625 0.625347 5.625C0.7912 5.625 0.95026 5.69088 1.06753 5.80816L5.00035 9.74175L14.5582 0.18316C14.6754 0.0658843 14.8345 -1.2357e-09 15.0003 0C15.1662 1.2357e-09 15.3253 0.0658843 15.4425 0.18316C15.5598 0.300435 15.6257 0.459495 15.6257 0.625347C15.6257 0.7912 15.5598 0.95026 15.4425 1.06754Z" },
312
- "caret-down": { viewBox: "0 0 13.7507 7.50084", d: "M13.5675 1.06754L7.31754 7.31754C7.25949 7.37565 7.19056 7.42175 7.11469 7.4532C7.03881 7.48465 6.95748 7.50084 6.87535 7.50084C6.79321 7.50084 6.71188 7.48465 6.63601 7.4532C6.56014 7.42175 6.49121 7.37565 6.43316 7.31754L0.18316 1.06754C0.0658846 0.95026 0 0.7912 0 0.625347C0 0.459495 0.0658846 0.300435 0.18316 0.18316C0.300435 0.0658843 0.459495 0 0.625347 0C0.7912 0 0.95026 0.0658843 1.06753 0.18316L6.87535 5.99175L12.6832 0.18316C12.7412 0.125091 12.8102 0.0790281 12.886 0.0476015C12.9619 0.0161748 13.0432 0 13.1253 0C13.2075 0 13.2888 0.0161748 13.3647 0.0476015C13.4405 0.0790281 13.5095 0.125091 13.5675 0.18316C13.6256 0.241229 13.6717 0.310167 13.7031 0.386037C13.7345 0.461908 13.7507 0.543226 13.7507 0.625347C13.7507 0.707469 13.7345 0.788787 13.7031 0.864658C13.6717 0.940528 13.6256 1.00947 13.5675 1.06754Z" },
313
- "lightbulb": { viewBox: "0 0 13.7501 17.502", d: "M10.6251 16.877C10.6251 17.0428 10.5593 17.2017 10.442 17.3189C10.3248 17.4361 10.1659 17.502 10.0001 17.502H3.7501C3.58434 17.502 3.42537 17.4361 3.30816 17.3189C3.19095 17.2017 3.1251 17.0428 3.1251 16.877C3.1251 16.7112 3.19095 16.5523 3.30816 16.4351C3.42537 16.3178 3.58434 16.252 3.7501 16.252H10.0001C10.1659 16.252 10.3248 16.3178 10.442 16.4351C10.5593 16.5523 10.6251 16.7112 10.6251 16.877ZM13.7501 6.877C13.7528 7.9189 13.5174 8.94766 13.0619 9.88474C12.6065 10.8218 11.9429 11.6425 11.122 12.284C10.9685 12.4017 10.8439 12.5529 10.7578 12.7261C10.6717 12.8993 10.6263 13.0898 10.6251 13.2832V13.752C10.6251 14.0835 10.4934 14.4015 10.259 14.6359C10.0246 14.8703 9.70662 15.002 9.3751 15.002H4.3751C4.04358 15.002 3.72564 14.8703 3.49122 14.6359C3.2568 14.4015 3.1251 14.0835 3.1251 13.752V13.2832C3.12497 13.0921 3.08103 12.9036 2.99666 12.7322C2.91228 12.5607 2.78972 12.4109 2.63838 12.2942C1.81948 11.6564 1.15639 10.8407 0.699304 9.9088C0.24222 8.9769 0.00312013 7.95323 0.000102226 6.91528C-0.0202103 3.19184 2.98916 0.091058 6.70948 0.00199546C7.62616 -0.0200946 8.53799 0.141412 9.39132 0.477009C10.2446 0.812607 11.0222 1.31551 11.6783 1.95613C12.3343 2.59674 12.8556 3.36213 13.2114 4.20722C13.5672 5.05232 13.7504 5.96005 13.7501 6.877ZM12.5001 6.877C12.5003 6.12673 12.3504 5.384 12.0593 4.69253C11.7682 4.00106 11.3416 3.37482 10.8048 2.85068C10.268 2.32653 9.63175 1.91507 8.93353 1.64052C8.2353 1.36596 7.48921 1.23386 6.73917 1.252C3.69229 1.32387 1.2337 3.86059 1.2501 6.90746C1.25296 7.75636 1.44885 8.59349 1.82296 9.35551C2.19706 10.1175 2.73959 10.7845 3.40948 11.3059C3.7106 11.54 3.95418 11.8399 4.12155 12.1826C4.28892 12.5253 4.37565 12.9018 4.3751 13.2832V13.752H9.3751V13.2832C9.37597 12.9007 9.46419 12.5235 9.63302 12.1803C9.80186 11.837 10.0469 11.5369 10.3493 11.3028C11.0213 10.7776 11.5644 10.1059 11.9371 9.33889C12.3099 8.57186 12.5024 7.7298 12.5001 6.877ZM11.2415 6.14731C11.0794 5.24207 10.6439 4.40822 9.99357 3.75801C9.34323 3.1078 8.50928 2.67246 7.60401 2.51059C7.52306 2.49694 7.44022 2.49938 7.36021 2.51775C7.2802 2.53612 7.2046 2.57007 7.13771 2.61766C7.07082 2.66525 7.01396 2.72555 6.97038 2.79511C6.9268 2.86467 6.89734 2.94214 6.8837 3.02309C6.87005 3.10404 6.87248 3.18688 6.89085 3.26689C6.90922 3.34689 6.94317 3.4225 6.99076 3.48939C7.03835 3.55628 7.09865 3.61313 7.16822 3.65672C7.23778 3.7003 7.31525 3.72976 7.3962 3.7434C8.69073 3.96137 9.78917 5.05981 10.0087 6.35668C10.0334 6.50225 10.1089 6.63436 10.2217 6.72959C10.3345 6.82483 10.4775 6.87705 10.6251 6.877C10.6604 6.87678 10.6957 6.87391 10.7306 6.8684C10.8939 6.84051 11.0395 6.74888 11.1354 6.61365C11.2312 6.47843 11.2694 6.31068 11.2415 6.14731Z" },
314
- "chats": { viewBox: "0 0 16.25 15.625", d: "M15 3.75H12.5V1.25C12.5 0.918479 12.3683 0.600537 12.1339 0.366116C11.8995 0.131696 11.5815 0 11.25 0H1.25C0.918479 0 0.600537 0.131696 0.366116 0.366116C0.131696 0.600537 0 0.918479 0 1.25V11.25C0.000366963 11.3676 0.0338962 11.4827 0.096736 11.5821C0.159576 11.6814 0.249177 11.7611 0.355245 11.8118C0.461314 11.8626 0.579547 11.8824 0.696363 11.869C0.813178 11.8555 0.923836 11.8094 1.01562 11.7359L3.75 9.53125V11.875C3.75 12.2065 3.8817 12.5245 4.11612 12.7589C4.35054 12.9933 4.66848 13.125 5 13.125H12.3117L15.2344 15.4859C15.345 15.5754 15.4828 15.6244 15.625 15.625C15.7908 15.625 15.9497 15.5592 16.0669 15.4419C16.1842 15.3247 16.25 15.1658 16.25 15V5C16.25 4.66848 16.1183 4.35054 15.8839 4.11612C15.6495 3.8817 15.3315 3.75 15 3.75ZM3.32422 8.26406L1.25 9.94141V1.25H11.25V8.125H3.71719C3.57414 8.12502 3.43544 8.1741 3.32422 8.26406ZM15 13.6914L12.9258 12.0141C12.8152 11.9246 12.6774 11.8756 12.5352 11.875H5V9.375H11.25C11.5815 9.375 11.8995 9.2433 12.1339 9.00888C12.3683 8.77446 12.5 8.45652 12.5 8.125V5H15V13.6914Z" },
315
- "file": { viewBox: "0 0 13.75 16.25", d: "M13.5672 4.55781L9.19219 0.182813C9.1341 0.124791 9.06515 0.0787825 8.98928 0.0474149C8.91341 0.0160474 8.8321 -6.43662e-05 8.75 1.93249e-07H1.25C0.918479 1.93249e-07 0.600537 0.131696 0.366116 0.366117C0.131696 0.600537 0 0.91848 0 1.25V15C0 15.3315 0.131696 15.6495 0.366116 15.8839C0.600537 16.1183 0.918479 16.25 1.25 16.25H12.5C12.8315 16.25 13.1495 16.1183 13.3839 15.8839C13.6183 15.6495 13.75 15.3315 13.75 15V5C13.7501 4.9179 13.734 4.83659 13.7026 4.76072C13.6712 4.68485 13.6252 4.6159 13.5672 4.55781ZM9.375 2.13359L11.6164 4.375H9.375V2.13359ZM12.5 15H1.25V1.25H8.125V5C8.125 5.16576 8.19085 5.32473 8.30806 5.44194C8.42527 5.55915 8.58424 5.625 8.75 5.625H12.5V15Z" },
316
- "folders": { viewBox: "0 0 16.875 13.75", d: "M15.625 1.875H10.2086L8.04141 0.25C7.82472 0.0883244 7.56176 0.000670577 7.29141 0H3.75C3.41848 0 3.10054 0.131696 2.86612 0.366116C2.6317 0.600537 2.5 0.918479 2.5 1.25V2.5H1.25C0.918479 2.5 0.600537 2.6317 0.366116 2.86612C0.131696 3.10054 0 3.41848 0 3.75V12.5C0 12.8315 0.131696 13.1495 0.366116 13.3839C0.600537 13.6183 0.918479 13.75 1.25 13.75H13.1945C13.5075 13.7496 13.8075 13.6251 14.0288 13.4038C14.2501 13.1825 14.3746 12.8825 14.375 12.5695V11.25H15.6945C16.0075 11.2496 16.3075 11.1251 16.5288 10.9038C16.7501 10.6825 16.8746 10.3825 16.875 10.0695V3.125C16.875 2.79348 16.7433 2.47554 16.5089 2.24112C16.2745 2.0067 15.9565 1.875 15.625 1.875ZM13.125 12.5H1.25V3.75H4.79141L7.125 5.5C7.23318 5.58114 7.36477 5.625 7.5 5.625H13.125V12.5ZM15.625 10H14.375V5.625C14.375 5.29348 14.2433 4.97554 14.0089 4.74112C13.7745 4.5067 13.4565 4.375 13.125 4.375H7.70859L5.54141 2.75C5.32472 2.58832 5.06176 2.50067 4.79141 2.5H3.75V1.25H7.29141L9.625 3C9.73318 3.08114 9.86477 3.125 10 3.125H15.625V10Z" },
317
- "sparkle": { viewBox: "0 0 18.1282 18.1282", d: "M14.1891 9.45781L10.1594 7.96875L8.67505 3.93594C8.58715 3.69713 8.42811 3.49104 8.2194 3.34546C8.01068 3.19988 7.76233 3.12182 7.50786 3.12182C7.25339 3.12182 7.00505 3.19988 6.79633 3.34546C6.58762 3.49104 6.42858 3.69713 6.34068 3.93594L4.84693 7.96875L0.814114 9.45312C0.575308 9.54103 0.369212 9.70007 0.223634 9.90878C0.0780551 10.1175 0 10.3658 0 10.6203C0 10.8748 0.0780551 11.1231 0.223634 11.3318C0.369212 11.5406 0.575308 11.6996 0.814114 11.7875L4.84693 13.2812L6.3313 17.3141C6.4192 17.5529 6.57824 17.759 6.78696 17.9045C6.99567 18.0501 7.24402 18.1282 7.49849 18.1282C7.75296 18.1282 8.00131 18.0501 8.21002 17.9045C8.41873 17.759 8.57777 17.5529 8.66568 17.3141L10.1594 13.2812L14.1922 11.7969C14.431 11.709 14.6371 11.5499 14.7827 11.3412C14.9283 11.1325 15.0064 10.8842 15.0064 10.6297C15.0064 10.3752 14.9283 10.1269 14.7827 9.91816C14.6371 9.70944 14.431 9.5504 14.1922 9.4625L14.1891 9.45781ZM9.4563 12.2047C9.37146 12.236 9.29442 12.2853 9.23049 12.3492C9.16655 12.4131 9.11725 12.4902 9.08599 12.575L7.50318 16.8633L5.92349 12.5781C5.89227 12.4924 5.84267 12.4145 5.77815 12.35C5.71364 12.2855 5.63578 12.2359 5.55005 12.2047L1.26489 10.625L5.55005 9.04531C5.63578 9.0141 5.71364 8.96449 5.77815 8.89997C5.84267 8.83546 5.89227 8.75761 5.92349 8.67188L7.50318 4.38672L9.08286 8.67188C9.11413 8.75671 9.16343 8.83375 9.22736 8.89769C9.2913 8.96162 9.36834 9.01092 9.45318 9.04219L13.7415 10.625L9.4563 12.2047ZM10.0032 2.5C10.0032 2.33424 10.069 2.17527 10.1862 2.05806C10.3034 1.94085 10.4624 1.875 10.6282 1.875H11.8782V0.625C11.8782 0.45924 11.944 0.300268 12.0612 0.183058C12.1784 0.065848 12.3374 0 12.5032 0C12.6689 0 12.8279 0.065848 12.9451 0.183058C13.0623 0.300268 13.1282 0.45924 13.1282 0.625V1.875H14.3782C14.5439 1.875 14.7029 1.94085 14.8201 2.05806C14.9373 2.17527 15.0032 2.33424 15.0032 2.5C15.0032 2.66576 14.9373 2.82473 14.8201 2.94194C14.7029 3.05915 14.5439 3.125 14.3782 3.125H13.1282V4.375C13.1282 4.54076 13.0623 4.69973 12.9451 4.81694C12.8279 4.93415 12.6689 5 12.5032 5C12.3374 5 12.1784 4.93415 12.0612 4.81694C11.944 4.69973 11.8782 4.54076 11.8782 4.375V3.125H10.6282C10.4624 3.125 10.3034 3.05915 10.1862 2.94194C10.069 2.82473 10.0032 2.66576 10.0032 2.5ZM18.1282 6.25C18.1282 6.41576 18.0623 6.57473 17.9451 6.69194C17.8279 6.80915 17.6689 6.875 17.5032 6.875H16.8782V7.5C16.8782 7.66576 16.8123 7.82473 16.6951 7.94194C16.5779 8.05915 16.4189 8.125 16.2532 8.125C16.0874 8.125 15.9284 8.05915 15.8112 7.94194C15.694 7.82473 15.6282 7.66576 15.6282 7.5V6.875H15.0032C14.8374 6.875 14.6784 6.80915 14.5612 6.69194C14.444 6.57473 14.3782 6.41576 14.3782 6.25C14.3782 6.08424 14.444 5.92527 14.5612 5.80806C14.6784 5.69085 14.8374 5.625 15.0032 5.625H15.6282V5C15.6282 4.83424 15.694 4.67527 15.8112 4.55806C15.9284 4.44085 16.0874 4.375 16.2532 4.375C16.4189 4.375 16.5779 4.44085 16.6951 4.55806C16.8123 4.67527 16.8782 4.83424 16.8782 5V5.625H17.5032C17.6689 5.625 17.8279 5.69085 17.9451 5.80806C18.0623 5.92527 18.1282 6.08424 18.1282 6.25Z" },
318
- "microphone-stage": { viewBox: "0 0 16.8751 16.8751", d: "M11.2501 0C9.75868 0.00144786 8.32878 0.594545 7.2742 1.64912C6.21963 2.7037 5.62653 4.1336 5.62508 5.625C5.62565 5.87111 5.64209 6.11694 5.6743 6.36094L0.243831 13.7672C0.0660853 14.0076 -0.0191805 14.3039 0.00362903 14.602C0.0264385 14.9001 0.155799 15.1801 0.36805 15.3906L1.48446 16.507C1.69501 16.7193 1.97494 16.8486 2.27304 16.8715C2.57114 16.8943 2.8675 16.809 3.10789 16.6312L10.5149 11.1992C10.7586 11.2319 11.0042 11.2489 11.2501 11.25C12.7419 11.25 14.1727 10.6574 15.2276 9.60247C16.2824 8.54758 16.8751 7.11684 16.8751 5.625C16.8751 4.13316 16.2824 2.70242 15.2276 1.64752C14.1727 0.592632 12.7419 0 11.2501 0ZM15.6251 5.625C15.6262 6.56938 15.3202 7.48852 14.7532 8.24375L8.63211 2.12187C9.28234 1.63624 10.0548 1.34104 10.8632 1.26928C11.6716 1.19751 12.484 1.35201 13.2096 1.7155C13.9352 2.079 14.5454 2.63715 14.972 3.32757C15.3986 4.01798 15.6247 4.81344 15.6251 5.625ZM2.36883 15.625L1.25008 14.5062L6.10477 7.89062C6.67363 9.1749 7.70018 10.2014 8.98446 10.7703L2.36883 15.625ZM6.87508 5.625C6.87384 4.68084 7.17987 3.76192 7.74696 3.00703L13.8673 9.12734C13.2171 9.61271 12.4448 9.90772 11.6366 9.97939C10.8284 10.0511 10.0162 9.89659 9.29072 9.53322C8.56528 9.16985 7.95517 8.6119 7.52858 7.92173C7.10199 7.23156 6.87573 6.43636 6.87508 5.625ZM6.69149 10.1828C6.80861 10.3 6.8744 10.4589 6.8744 10.6246C6.8744 10.7903 6.80861 10.9492 6.69149 11.0664L6.06649 11.6914C6.00903 11.7519 5.94004 11.8003 5.8636 11.8336C5.78715 11.867 5.70479 11.8848 5.62138 11.8859C5.53796 11.8869 5.45518 11.8713 5.3779 11.8399C5.30062 11.8084 5.23042 11.7619 5.17143 11.7029C5.11245 11.6439 5.06586 11.5737 5.03443 11.4964C5.003 11.4191 4.98736 11.3363 4.98843 11.2529C4.98949 11.1695 5.00725 11.0871 5.04065 11.0107C5.07405 10.9343 5.12241 10.8653 5.18289 10.8078L5.80789 10.1828C5.8659 10.1245 5.93484 10.0783 6.01076 10.0467C6.08668 10.0151 6.16808 9.9988 6.25031 9.99872C6.33254 9.99865 6.41397 10.0148 6.48995 10.0463C6.56592 10.0777 6.63494 10.1239 6.69305 10.182L6.69149 10.1828Z" },
319
- "battery-low": { viewBox: "0 0 19.375 11.25", d: "M15 0H1.875C1.37772 0 0.900805 0.197544 0.549175 0.549175C0.197544 0.900806 0 1.37772 0 1.875V9.375C0 9.87228 0.197544 10.3492 0.549175 10.7008C0.900805 11.0525 1.37772 11.25 1.875 11.25H15C15.4973 11.25 15.9742 11.0525 16.3258 10.7008C16.6775 10.3492 16.875 9.87228 16.875 9.375V1.875C16.875 1.37772 16.6775 0.900806 16.3258 0.549175C15.9742 0.197544 15.4973 0 15 0ZM15.625 9.375C15.625 9.54076 15.5592 9.69973 15.4419 9.81694C15.3247 9.93415 15.1658 10 15 10H1.875C1.70924 10 1.55027 9.93415 1.43306 9.81694C1.31585 9.69973 1.25 9.54076 1.25 9.375V1.875C1.25 1.70924 1.31585 1.55027 1.43306 1.43306C1.55027 1.31585 1.70924 1.25 1.875 1.25H15C15.1658 1.25 15.3247 1.31585 15.4419 1.43306C15.5592 1.55027 15.625 1.70924 15.625 1.875V9.375ZM4.375 3.125V8.125C4.375 8.29076 4.30915 8.44973 4.19194 8.56694C4.07473 8.68415 3.91576 8.75 3.75 8.75C3.58424 8.75 3.42527 8.68415 3.30806 8.56694C3.19085 8.44973 3.125 8.29076 3.125 8.125V3.125C3.125 2.95924 3.19085 2.80027 3.30806 2.68306C3.42527 2.56585 3.58424 2.5 3.75 2.5C3.91576 2.5 4.07473 2.56585 4.19194 2.68306C4.30915 2.80027 4.375 2.95924 4.375 3.125ZM19.375 3.125V8.125C19.375 8.29076 19.3092 8.44973 19.1919 8.56694C19.0747 8.68415 18.9158 8.75 18.75 8.75C18.5842 8.75 18.4253 8.68415 18.3081 8.56694C18.1908 8.44973 18.125 8.29076 18.125 8.125V3.125C18.125 2.95924 18.1908 2.80027 18.3081 2.68306C18.4253 2.56585 18.5842 2.5 18.75 2.5C18.9158 2.5 19.0747 2.56585 19.1919 2.68306C19.3092 2.80027 19.375 2.95924 19.375 3.125Z" },
320
- "microphone": { viewBox: "0 0 12.5 18.125", d: "M6.25 12.5C7.24424 12.499 8.19747 12.1035 8.90051 11.4005C9.60355 10.6975 9.99897 9.74424 10 8.75V3.75C10 2.75544 9.60491 1.80161 8.90165 1.09835C8.19839 0.395088 7.24456 0 6.25 0C5.25544 0 4.30161 0.395088 3.59835 1.09835C2.89509 1.80161 2.5 2.75544 2.5 3.75V8.75C2.50103 9.74424 2.89645 10.6975 3.59949 11.4005C4.30253 12.1035 5.25576 12.499 6.25 12.5ZM3.75 3.75C3.75 3.08696 4.01339 2.45107 4.48223 1.98223C4.95107 1.51339 5.58696 1.25 6.25 1.25C6.91304 1.25 7.54893 1.51339 8.01777 1.98223C8.48661 2.45107 8.75 3.08696 8.75 3.75V8.75C8.75 9.41304 8.48661 10.0489 8.01777 10.5178C7.54893 10.9866 6.91304 11.25 6.25 11.25C5.58696 11.25 4.95107 10.9866 4.48223 10.5178C4.01339 10.0489 3.75 9.41304 3.75 8.75V3.75ZM6.875 14.9688V17.5C6.875 17.6658 6.80915 17.8247 6.69194 17.9419C6.57473 18.0592 6.41576 18.125 6.25 18.125C6.08424 18.125 5.92527 18.0592 5.80806 17.9419C5.69085 17.8247 5.625 17.6658 5.625 17.5V14.9688C4.08409 14.812 2.65607 14.0893 1.61707 12.9407C0.578064 11.792 0.00190321 10.2989 0 8.75C0 8.58424 0.0658481 8.42527 0.183058 8.30806C0.300269 8.19085 0.45924 8.125 0.625 8.125C0.79076 8.125 0.949731 8.19085 1.06694 8.30806C1.18415 8.42527 1.25 8.58424 1.25 8.75C1.25 10.0761 1.77678 11.3479 2.71447 12.2855C3.65215 13.2232 4.92392 13.75 6.25 13.75C7.57608 13.75 8.84785 13.2232 9.78553 12.2855C10.7232 11.3479 11.25 10.0761 11.25 8.75C11.25 8.58424 11.3158 8.42527 11.4331 8.30806C11.5503 8.19085 11.7092 8.125 11.875 8.125C12.0408 8.125 12.1997 8.19085 12.3169 8.30806C12.4342 8.42527 12.5 8.58424 12.5 8.75C12.4981 10.2989 11.9219 11.792 10.8829 12.9407C9.84393 14.0893 8.41591 14.812 6.875 14.9688Z" },
321
- "microphone-slash": { viewBox: "0 0 13.75 18.1208", d: "M13.5825 15.8255L1.08246 2.07553C0.970401 1.95516 0.81541 1.8838 0.651091 1.87693C0.486772 1.87007 0.326369 1.92825 0.204658 2.03886C0.082947 2.14947 0.00973829 2.30359 0.000903313 2.46781C-0.00793166 2.63204 0.0483195 2.79313 0.157461 2.91616L3.11996 6.17475V8.74584C3.11981 9.3825 3.28176 10.0087 3.59054 10.5655C3.89932 11.1222 4.34476 11.5912 4.88491 11.9282C5.42505 12.2653 6.0421 12.4592 6.67792 12.4918C7.31374 12.5244 7.9474 12.3946 8.51918 12.1146L9.38637 13.0677C8.62312 13.5143 7.75425 13.7484 6.86996 13.7458C5.54432 13.7444 4.27339 13.2171 3.33603 12.2798C2.39866 11.3424 1.87141 10.0715 1.86996 8.74584C1.86996 8.58008 1.80411 8.42111 1.6869 8.3039C1.56969 8.18669 1.41072 8.12084 1.24496 8.12084C1.0792 8.12084 0.92023 8.18669 0.803019 8.3039C0.685809 8.42111 0.619961 8.58008 0.619961 8.74584C0.621864 10.2947 1.19802 11.7878 2.23703 12.9365C3.27603 14.0852 4.70406 14.8078 6.24496 14.9646V17.4958C6.24496 17.6616 6.31081 17.8206 6.42802 17.9378C6.54523 18.055 6.7042 18.1208 6.86996 18.1208C7.03572 18.1208 7.19469 18.055 7.3119 17.9378C7.42911 17.8206 7.49496 17.6616 7.49496 17.4958V14.9638C8.47367 14.8694 9.41555 14.5421 10.2418 14.0091L12.6575 16.6654C12.7123 16.7272 12.779 16.7776 12.8535 16.8135C12.928 16.8495 13.0088 16.8703 13.0914 16.8747C13.174 16.8791 13.2567 16.8672 13.3346 16.8394C13.4125 16.8117 13.4841 16.7688 13.5453 16.7131C13.6066 16.6575 13.6561 16.5903 13.6911 16.5154C13.7262 16.4405 13.746 16.3593 13.7495 16.2767C13.7529 16.1941 13.7399 16.1116 13.7113 16.034C13.6826 15.9564 13.6388 15.8853 13.5825 15.8248V15.8255ZM6.86996 11.2458C6.20692 11.2458 5.57103 10.9825 5.10219 10.5136C4.63335 10.0448 4.36996 9.40889 4.36996 8.74584V7.54975L7.62465 11.1294C7.38053 11.2067 7.126 11.2459 6.86996 11.2458ZM11.3637 10.9404C11.6989 10.2575 11.8722 9.50655 11.87 8.74584C11.87 8.58008 11.9358 8.42111 12.053 8.3039C12.1702 8.18669 12.3292 8.12084 12.495 8.12084C12.6607 8.12084 12.8197 8.18669 12.9369 8.3039C13.0541 8.42111 13.12 8.58008 13.12 8.74584C13.1226 9.69698 12.9057 10.6359 12.4864 11.4896C12.435 11.5948 12.3551 11.6835 12.2558 11.7455C12.1565 11.8075 12.0417 11.8404 11.9246 11.8404C11.8295 11.8405 11.7357 11.8186 11.6504 11.7763C11.5016 11.7035 11.3877 11.5745 11.334 11.4177C11.2802 11.261 11.2909 11.0893 11.3637 10.9404ZM3.43246 2.25131C3.77668 1.4618 4.38218 0.814831 5.1472 0.419151C5.91222 0.023471 6.79013 -0.0968052 7.63339 0.0785367C8.47664 0.253879 9.23384 0.71415 9.77772 1.382C10.3216 2.04984 10.619 2.88455 10.62 3.74584V8.74584C10.6198 8.87631 10.613 9.00669 10.5996 9.13647C10.5836 9.29075 10.5107 9.43353 10.3952 9.53706C10.2796 9.64059 10.1298 9.69746 9.97465 9.69663C9.95279 9.69776 9.93088 9.69776 9.90902 9.69663C9.74421 9.6793 9.59302 9.59722 9.48871 9.46844C9.38439 9.33967 9.3355 9.17473 9.35277 9.00991C9.36137 8.92397 9.36605 8.83491 9.36605 8.74741V3.74584C9.36441 3.17242 9.16568 2.61699 8.80319 2.17267C8.44071 1.72835 7.93649 1.42215 7.37507 1.3054C6.81366 1.18864 6.22917 1.26844 5.7196 1.53141C5.21002 1.79437 4.80633 2.22452 4.57621 2.74975C4.547 2.8299 4.50168 2.90323 4.44306 2.9652C4.38444 3.02718 4.31375 3.0765 4.23535 3.11013C4.15695 3.14375 4.07249 3.16097 3.98718 3.16072C3.90187 3.16048 3.81751 3.14277 3.73931 3.10868C3.6611 3.0746 3.5907 3.02487 3.53244 2.96255C3.47418 2.90024 3.4293 2.82665 3.40055 2.74633C3.3718 2.66601 3.3598 2.58065 3.36529 2.49552C3.37078 2.41039 3.39364 2.32728 3.43246 2.25131Z" },
322
- "play": { viewBox: "0 0 13.7486 16.2504", d: "M13.1562 7.06992L1.9 0.183984C1.71022 0.0677751 1.49287 0.00433455 1.27037 0.000214333C1.04788 -0.00390588 0.828324 0.0514435 0.634375 0.160546C0.442273 0.267954 0.282247 0.424592 0.170753 0.614352C0.0592589 0.804111 0.000320983 1.02014 0 1.24023V15.0105C0.00144747 15.3407 0.133933 15.6567 0.368331 15.8892C0.60273 16.1217 0.919857 16.2516 1.25 16.2504C1.48043 16.2503 1.70639 16.1868 1.90313 16.0668L13.1562 9.18086C13.3371 9.07061 13.4866 8.91569 13.5904 8.73099C13.6941 8.54628 13.7486 8.33801 13.7486 8.12617C13.7486 7.91433 13.6941 7.70606 13.5904 7.52136C13.4866 7.33665 13.3371 7.18173 13.1562 7.07148V7.06992ZM1.25 14.9957V1.25039L12.4867 8.12539L1.25 14.9957Z" },
323
- "x": { viewBox: "0 0 12.5007 12.5007", d: "M12.3175 11.4332C12.3756 11.4912 12.4217 11.5602 12.4531 11.636C12.4845 11.7119 12.5007 11.7932 12.5007 11.8753C12.5007 11.9575 12.4845 12.0388 12.4531 12.1147C12.4217 12.1905 12.3756 12.2595 12.3175 12.3175C12.2595 12.3756 12.1905 12.4217 12.1147 12.4531C12.0388 12.4845 11.9575 12.5007 11.8753 12.5007C11.7932 12.5007 11.7119 12.4845 11.636 12.4531C11.5602 12.4217 11.4912 12.3756 11.4332 12.3175L6.25035 7.13394L1.06753 12.3175C0.95026 12.4348 0.7912 12.5007 0.625347 12.5007C0.459495 12.5007 0.300435 12.4348 0.18316 12.3175C0.0658846 12.2003 3.26935e-09 12.0412 0 11.8753C-3.26935e-09 11.7095 0.0658846 11.5504 0.18316 11.4332L5.36675 6.25035L0.18316 1.06753C0.0658846 0.95026 0 0.7912 0 0.625347C0 0.459495 0.0658846 0.300435 0.18316 0.18316C0.300435 0.0658846 0.459495 0 0.625347 0C0.7912 0 0.95026 0.0658846 1.06753 0.18316L6.25035 5.36675L11.4332 0.18316C11.5504 0.0658846 11.7095 -3.26935e-09 11.8753 0C12.0412 3.26935e-09 12.2003 0.0658846 12.3175 0.18316C12.4348 0.300435 12.5007 0.459495 12.5007 0.625347C12.5007 0.7912 12.4348 0.95026 12.3175 1.06753L7.13394 6.25035L12.3175 11.4332Z" },
324
- "Mail": { viewBox: "0 0 16.25 12.5", d: "M15.625 0H0.625C0.45924 0 0.300268 0.0658481 0.183058 0.183058C0.065848 0.300269 0 0.45924 0 0.625V11.25C0 11.5815 0.131696 11.8995 0.366116 12.1339C0.600537 12.3683 0.918479 12.5 1.25 12.5H15C15.3315 12.5 15.6495 12.3683 15.8839 12.1339C16.1183 11.8995 16.25 11.5815 16.25 11.25V0.625C16.25 0.45924 16.1842 0.300269 16.0669 0.183058C15.9497 0.0658481 15.7908 0 15.625 0ZM8.125 6.65234L2.23203 1.25H14.018L8.125 6.65234ZM5.83672 6.25L1.25 10.4539V2.04609L5.83672 6.25ZM6.76172 7.09766L7.69922 7.96094C7.81453 8.06679 7.96535 8.12552 8.12187 8.12552C8.2784 8.12552 8.42922 8.06679 8.54453 7.96094L9.48203 7.09766L14.0133 11.25H2.23203L6.76172 7.09766ZM10.4133 6.25L15 2.04531V10.4547L10.4133 6.25Z" },
325
- "pause": { viewBox: "0 0 13.75 15", d: "M12.5 0H9.375C9.04348 0 8.72554 0.131696 8.49112 0.366116C8.2567 0.600537 8.125 0.918479 8.125 1.25V13.75C8.125 14.0815 8.2567 14.3995 8.49112 14.6339C8.72554 14.8683 9.04348 15 9.375 15H12.5C12.8315 15 13.1495 14.8683 13.3839 14.6339C13.6183 14.3995 13.75 14.0815 13.75 13.75V1.25C13.75 0.918479 13.6183 0.600537 13.3839 0.366116C13.1495 0.131696 12.8315 0 12.5 0ZM12.5 13.75H9.375V1.25H12.5V13.75ZM4.375 0H1.25C0.918479 0 0.600537 0.131696 0.366116 0.366116C0.131696 0.600537 0 0.918479 0 1.25V13.75C0 14.0815 0.131696 14.3995 0.366116 14.6339C0.600537 14.8683 0.918479 15 1.25 15H4.375C4.70652 15 5.02446 14.8683 5.25888 14.6339C5.4933 14.3995 5.625 14.0815 5.625 13.75V1.25C5.625 0.918479 5.4933 0.600537 5.25888 0.366116C5.02446 0.131696 4.70652 0 4.375 0ZM4.375 13.75H1.25V1.25H4.375V13.75Z" },
326
- "broadcast": { viewBox: "0 0 18.7551 13.5211", d: "M9.38008 3.63557C8.76201 3.63557 8.15782 3.81885 7.64392 4.16223C7.13002 4.50561 6.72948 4.99366 6.49295 5.56468C6.25643 6.1357 6.19454 6.76404 6.31512 7.37023C6.4357 7.97642 6.73333 8.53324 7.17037 8.97028C7.60741 9.40732 8.16423 9.70494 8.77042 9.82552C9.37661 9.9461 10.0049 9.88422 10.576 9.64769C11.147 9.41117 11.635 9.01063 11.9784 8.49672C12.3218 7.98282 12.5051 7.37863 12.5051 6.76057C12.5051 5.93177 12.1758 5.13691 11.5898 4.55086C11.0037 3.96481 10.2089 3.63557 9.38008 3.63557ZM9.38008 8.63557C9.00924 8.63557 8.64673 8.5256 8.33838 8.31957C8.03004 8.11355 7.78972 7.82071 7.6478 7.4781C7.50589 7.13549 7.46876 6.75849 7.5411 6.39477C7.61345 6.03106 7.79203 5.69697 8.05425 5.43474C8.31648 5.17252 8.65057 4.99394 9.01428 4.9216C9.378 4.84925 9.755 4.88638 10.0976 5.02829C10.4402 5.17021 10.7331 5.41053 10.9391 5.71887C11.1451 6.02722 11.2551 6.38973 11.2551 6.76057C11.2551 7.25785 11.0575 7.73476 10.7059 8.08639C10.3543 8.43802 9.87736 8.63557 9.38008 8.63557ZM15.1387 9.19338C14.8702 9.82821 14.4985 10.4142 14.0387 10.9278C13.9273 11.0482 13.7731 11.1201 13.6092 11.1279C13.4454 11.1356 13.285 11.0786 13.1628 10.9692C13.0406 10.8598 12.9663 10.7068 12.9559 10.543C12.9456 10.3793 13 10.2181 13.1074 10.0942C13.9281 9.17787 14.3819 7.99103 14.3819 6.76096C14.3819 5.53089 13.9281 4.34405 13.1074 3.42776C13.0511 3.36686 13.0076 3.29539 12.9792 3.21748C12.9508 3.13958 12.9382 3.05681 12.9421 2.97399C12.946 2.89117 12.9664 2.80996 13.002 2.73508C13.0376 2.66021 13.0878 2.59317 13.1496 2.53787C13.2113 2.48257 13.2835 2.44012 13.3619 2.41298C13.4402 2.38584 13.5232 2.37457 13.6059 2.3798C13.6887 2.38504 13.7695 2.40669 13.8438 2.4435C13.9181 2.4803 13.9844 2.53151 14.0387 2.59416C14.8278 3.47724 15.3502 4.56618 15.5449 5.73438C15.7396 6.90259 15.5987 8.10207 15.1387 9.19338ZM4.7707 4.81447C4.40194 5.68742 4.28884 6.64719 4.44458 7.58194C4.60033 8.51669 5.01851 9.38794 5.65039 10.0942C5.75784 10.2181 5.81225 10.3793 5.80189 10.543C5.79152 10.7068 5.71721 10.8598 5.59499 10.9692C5.47276 11.0786 5.31242 11.1356 5.14857 11.1279C4.98471 11.1201 4.83048 11.0482 4.71914 10.9278C3.69304 9.78241 3.12563 8.29872 3.12563 6.76096C3.12563 5.2232 3.69304 3.73951 4.71914 2.59416C4.82968 2.47036 4.98488 2.39554 5.15058 2.38616C5.31629 2.37679 5.47893 2.43362 5.60273 2.54416C5.72654 2.6547 5.80135 2.8099 5.81073 2.9756C5.82011 3.14131 5.76327 3.30395 5.65273 3.42776C5.28398 3.83798 4.98592 4.30659 4.7707 4.81447ZM18.7551 6.76057C18.7589 9.21505 17.7966 11.5724 16.0762 13.3231C16.0193 13.3839 15.9507 13.4328 15.8747 13.4668C15.7986 13.5008 15.7165 13.5192 15.6332 13.521C15.5499 13.5228 15.4671 13.5079 15.3896 13.4772C15.3121 13.4466 15.2416 13.4007 15.1821 13.3424C15.1226 13.284 15.0754 13.2144 15.0432 13.1375C15.011 13.0607 14.9945 12.9781 14.9947 12.8948C14.9949 12.8115 15.0117 12.729 15.0442 12.6523C15.0767 12.5756 15.1242 12.5062 15.184 12.4481C16.6736 10.9304 17.5082 8.88872 17.5082 6.76213C17.5082 4.63554 16.6736 2.59388 15.184 1.07619C15.0675 0.957882 15.0029 0.798158 15.0042 0.632159C15.0055 0.46616 15.0727 0.307484 15.191 0.191037C15.3093 0.0745904 15.4691 0.00991204 15.635 0.0112307C15.801 0.0125493 15.9597 0.0797568 16.0762 0.198068C17.7966 1.94872 18.7589 4.30609 18.7551 6.76057ZM3.57617 12.4465C3.63373 12.5051 3.67918 12.5744 3.70994 12.6506C3.74069 12.7267 3.75615 12.8082 3.75542 12.8903C3.7547 12.9724 3.73781 13.0536 3.70571 13.1292C3.67361 13.2048 3.62694 13.2733 3.56836 13.3309C3.50978 13.3884 3.44043 13.4339 3.36428 13.4646C3.28814 13.4954 3.20668 13.5109 3.12455 13.5101C3.04243 13.5094 2.96126 13.4925 2.88566 13.4604C2.81007 13.4283 2.74154 13.3817 2.68398 13.3231C0.963815 11.5719 0 9.21529 0 6.76057C0 4.30585 0.963815 1.94926 2.68398 0.198068C2.7409 0.137215 2.80941 0.0883576 2.88548 0.0543677C2.96156 0.0203779 3.04366 0.0019424 3.12696 0.000145384C3.21027 -0.00165163 3.29309 0.013226 3.37056 0.0439035C3.44802 0.0745811 3.51858 0.120439 3.57806 0.178781C3.63755 0.237123 3.68477 0.30677 3.71695 0.383628C3.74913 0.460486 3.76562 0.543002 3.76544 0.626323C3.76526 0.709645 3.74843 0.792091 3.71593 0.868811C3.68342 0.945532 3.63591 1.01498 3.57617 1.07307C2.08653 2.59075 1.25198 4.63242 1.25198 6.75901C1.25198 8.8856 2.08653 10.9273 3.57617 12.4449V12.4465Z" },
327
- "sidebar-simple": { viewBox: "0 0 16.25 13.75", d: "M15 0H1.25C0.918479 0 0.600537 0.131696 0.366116 0.366116C0.131696 0.600537 0 0.918479 0 1.25V12.5C0 12.8315 0.131696 13.1495 0.366116 13.3839C0.600537 13.6183 0.918479 13.75 1.25 13.75H15C15.3315 13.75 15.6495 13.6183 15.8839 13.3839C16.1183 13.1495 16.25 12.8315 16.25 12.5V1.25C16.25 0.918479 16.1183 0.600537 15.8839 0.366116C15.6495 0.131696 15.3315 0 15 0ZM1.25 1.25H4.375V12.5H1.25V1.25ZM15 12.5H5.625V1.25H15V12.5Z" },
328
- "pencil-simple-line": { viewBox: "0 0 15.6256 15.6248", d: "M15.2594 3.85684L11.768 0.366217C11.6519 0.250114 11.5141 0.158014 11.3624 0.0951779C11.2107 0.0323417 11.0482 0 10.884 0C10.7198 0 10.5572 0.0323417 10.4056 0.0951779C10.2539 0.158014 10.1161 0.250114 10 0.366217L0.366412 9.99981C0.249834 10.1155 0.157407 10.2531 0.0945056 10.4048C0.0316038 10.5565 -0.000518312 10.7192 6.32418e-06 10.8834V14.3748C6.32418e-06 14.7063 0.131702 15.0243 0.366123 15.2587C0.600543 15.4931 0.918486 15.6248 1.25001 15.6248H14.375C14.5408 15.6248 14.6997 15.559 14.8169 15.4418C14.9342 15.3245 15 15.1656 15 14.9998C15 14.8341 14.9342 14.6751 14.8169 14.5579C14.6997 14.4407 14.5408 14.3748 14.375 14.3748H6.50938L15.2594 5.62481C15.3755 5.50873 15.4676 5.37092 15.5304 5.21925C15.5933 5.06757 15.6256 4.905 15.6256 4.74083C15.6256 4.57665 15.5933 4.41408 15.5304 4.26241C15.4676 4.11073 15.3755 3.97292 15.2594 3.85684ZM4.74141 14.3748H1.25001V10.8834L8.12501 4.0084L11.6164 7.49981L4.74141 14.3748ZM12.5 6.61622L9.00938 3.12481L10.8844 1.24981L14.375 4.74122L12.5 6.61622Z" },
329
- "search": { viewBox: "0 0 16.2676 16.2676", d: "M16.0845 15.2001L12.1727 11.2891C13.3065 9.92798 13.8719 8.1821 13.7512 6.41472C13.6305 4.64733 12.8331 2.9945 11.5249 1.80006C10.2166 0.605618 8.49824 -0.038471 6.72719 0.00177892C4.95615 0.0420288 3.2688 0.763519 2.01616 2.01616C0.763519 3.2688 0.0420288 4.95615 0.00177892 6.72719C-0.038471 8.49824 0.605618 10.2166 1.80006 11.5249C2.9945 12.8331 4.64733 13.6305 6.41472 13.7512C8.1821 13.8719 9.92798 13.3065 11.2891 12.1727L15.2001 16.0845C15.2581 16.1425 15.3271 16.1886 15.403 16.22C15.4788 16.2514 15.5601 16.2676 15.6423 16.2676C15.7244 16.2676 15.8057 16.2514 15.8816 16.22C15.9574 16.1886 16.0264 16.1425 16.0845 16.0845C16.1425 16.0264 16.1886 15.9574 16.22 15.8816C16.2514 15.8057 16.2676 15.7244 16.2676 15.6423C16.2676 15.5601 16.2514 15.4788 16.22 15.403C16.1886 15.3271 16.1425 15.2581 16.0845 15.2001ZM1.26727 6.89227C1.26727 5.77975 1.59717 4.69221 2.21525 3.76719C2.83333 2.84216 3.71184 2.12119 4.73967 1.69545C5.76751 1.2697 6.89851 1.15831 7.98965 1.37535C9.08079 1.59239 10.0831 2.12812 10.8697 2.91479C11.6564 3.70146 12.1921 4.70374 12.4092 5.79489C12.6262 6.88603 12.5148 8.01703 12.0891 9.04486C11.6633 10.0727 10.9424 10.9512 10.0174 11.5693C9.09232 12.1874 8.00479 12.5173 6.89227 12.5173C5.40093 12.5156 3.97115 11.9225 2.91662 10.8679C1.86209 9.81338 1.26892 8.3836 1.26727 6.89227Z" },
330
- "list-dashes": { viewBox: "0 0 15 11.25", d: "M4.375 0.625C4.375 0.45924 4.44085 0.300269 4.55806 0.183058C4.67527 0.0658481 4.83424 0 5 0H14.375C14.5408 0 14.6997 0.0658481 14.8169 0.183058C14.9342 0.300269 15 0.45924 15 0.625C15 0.79076 14.9342 0.949731 14.8169 1.06694C14.6997 1.18415 14.5408 1.25 14.375 1.25H5C4.83424 1.25 4.67527 1.18415 4.55806 1.06694C4.44085 0.949731 4.375 0.79076 4.375 0.625ZM14.375 5H5C4.83424 5 4.67527 5.06585 4.55806 5.18306C4.44085 5.30027 4.375 5.45924 4.375 5.625C4.375 5.79076 4.44085 5.94973 4.55806 6.06694C4.67527 6.18415 4.83424 6.25 5 6.25H14.375C14.5408 6.25 14.6997 6.18415 14.8169 6.06694C14.9342 5.94973 15 5.79076 15 5.625C15 5.45924 14.9342 5.30027 14.8169 5.18306C14.6997 5.06585 14.5408 5 14.375 5ZM14.375 10H5C4.83424 10 4.67527 10.0658 4.55806 10.1831C4.44085 10.3003 4.375 10.4592 4.375 10.625C4.375 10.7908 4.44085 10.9497 4.55806 11.0669C4.67527 11.1842 4.83424 11.25 5 11.25H14.375C14.5408 11.25 14.6997 11.1842 14.8169 11.0669C14.9342 10.9497 15 10.7908 15 10.625C15 10.4592 14.9342 10.3003 14.8169 10.1831C14.6997 10.0658 14.5408 10 14.375 10ZM1.875 0H0.625C0.45924 0 0.300269 0.0658481 0.183058 0.183058C0.0658481 0.300269 0 0.45924 0 0.625C0 0.79076 0.0658481 0.949731 0.183058 1.06694C0.300269 1.18415 0.45924 1.25 0.625 1.25H1.875C2.04076 1.25 2.19973 1.18415 2.31694 1.06694C2.43415 0.949731 2.5 0.79076 2.5 0.625C2.5 0.45924 2.43415 0.300269 2.31694 0.183058C2.19973 0.0658481 2.04076 0 1.875 0ZM1.875 5H0.625C0.45924 5 0.300269 5.06585 0.183058 5.18306C0.0658481 5.30027 0 5.45924 0 5.625C0 5.79076 0.0658481 5.94973 0.183058 6.06694C0.300269 6.18415 0.45924 6.25 0.625 6.25H1.875C2.04076 6.25 2.19973 6.18415 2.31694 6.06694C2.43415 5.94973 2.5 5.79076 2.5 5.625C2.5 5.45924 2.43415 5.30027 2.31694 5.18306C2.19973 5.06585 2.04076 5 1.875 5ZM1.875 10H0.625C0.45924 10 0.300269 10.0658 0.183058 10.1831C0.0658481 10.3003 0 10.4592 0 10.625C0 10.7908 0.0658481 10.9497 0.183058 11.0669C0.300269 11.1842 0.45924 11.25 0.625 11.25H1.875C2.04076 11.25 2.19973 11.1842 2.31694 11.0669C2.43415 10.9497 2.5 10.7908 2.5 10.625C2.5 10.4592 2.43415 10.3003 2.31694 10.1831C2.19973 10.0658 2.04076 10 1.875 10Z" },
331
- "brain": { viewBox: "0 0 18.7506 15.6183", d: "M18.7506 7.80914C18.7498 6.98128 18.5145 6.17057 18.0721 5.47084C17.6297 4.77111 16.9981 4.21096 16.2506 3.85524V3.74664C16.2499 2.94135 15.9899 2.15767 15.5092 1.51158C15.0285 0.86548 14.3526 0.391288 13.5815 0.159164C12.8104 -0.0729602 11.985 -0.0506851 11.2276 0.222693C10.4701 0.496072 9.82073 1.00603 9.37559 1.67711C8.93044 1.00603 8.28109 0.496072 7.52361 0.222693C6.76614 -0.0506851 5.94078 -0.0729602 5.16966 0.159164C4.39854 0.391288 3.72263 0.86548 3.24194 1.51158C2.76125 2.15767 2.50131 2.94135 2.50059 3.74664V3.85524C1.75241 4.20999 1.12027 4.76978 0.677624 5.46955C0.234977 6.16932 0 6.98034 0 7.80836C0 8.63638 0.234977 9.4474 0.677624 10.1472C1.12027 10.8469 1.75241 11.4067 2.50059 11.7615V11.8716C2.50131 12.6769 2.76125 13.4606 3.24194 14.1067C3.72263 14.7528 4.39854 15.227 5.16966 15.4591C5.94078 15.6912 6.76614 15.669 7.52361 15.3956C8.28109 15.1222 8.93044 14.6123 9.37559 13.9412C9.82073 14.6123 10.4701 15.1222 11.2276 15.3956C11.985 15.669 12.8104 15.6912 13.5815 15.4591C14.3526 15.227 15.0285 14.7528 15.5092 14.1067C15.9899 13.4606 16.2499 12.6769 16.2506 11.8716V11.7615C16.998 11.406 17.6295 10.8462 18.0719 10.1467C18.5144 9.44724 18.7497 8.63679 18.7506 7.80914ZM6.25059 14.3716C5.63414 14.3716 5.03946 14.1437 4.58076 13.7319C4.12207 13.3201 3.8317 12.7533 3.76543 12.1404C3.96754 12.1692 4.17143 12.1838 4.37559 12.1841H5.00059C5.16635 12.1841 5.32532 12.1183 5.44253 12.0011C5.55974 11.8839 5.62559 11.7249 5.62559 11.5591C5.62559 11.3934 5.55974 11.2344 5.44253 11.1172C5.32532 11 5.16635 10.9341 5.00059 10.9341H4.37559C3.63774 10.935 2.92339 10.6748 2.35901 10.1995C1.79462 9.72422 1.41661 9.06457 1.2919 8.33734C1.16718 7.61012 1.30381 6.86221 1.6776 6.22605C2.05138 5.58989 2.63821 5.10651 3.33418 4.86149C3.45595 4.81837 3.56138 4.73858 3.63595 4.6331C3.71052 4.52761 3.75057 4.40161 3.75059 4.27242V3.74664C3.75059 3.0836 4.01398 2.44772 4.48282 1.97888C4.95166 1.51004 5.58755 1.24664 6.25059 1.24664C6.91363 1.24664 7.54951 1.51004 8.01835 1.97888C8.48719 2.44772 8.75059 3.0836 8.75059 3.74664V9.07946C8.06427 8.46218 7.17366 8.12096 6.25059 8.12164C6.08483 8.12164 5.92586 8.18749 5.80864 8.3047C5.69143 8.42191 5.62559 8.58088 5.62559 8.74664C5.62559 8.9124 5.69143 9.07138 5.80864 9.18859C5.92586 9.3058 6.08483 9.37164 6.25059 9.37164C6.91363 9.37164 7.54951 9.63504 8.01835 10.1039C8.48719 10.5727 8.75059 11.2086 8.75059 11.8716C8.75059 12.5347 8.48719 13.1706 8.01835 13.6394C7.54951 14.1083 6.91363 14.3716 6.25059 14.3716ZM14.3756 10.9341H13.7506C13.5848 10.9341 13.4259 11 13.3086 11.1172C13.1914 11.2344 13.1256 11.3934 13.1256 11.5591C13.1256 11.7249 13.1914 11.8839 13.3086 12.0011C13.4259 12.1183 13.5848 12.1841 13.7506 12.1841H14.3756C14.5797 12.1838 14.7836 12.1692 14.9857 12.1404C14.9338 12.6206 14.7439 13.0755 14.4389 13.4501C14.134 13.8246 13.7271 14.1028 13.2674 14.251C12.8077 14.3992 12.3149 14.4111 11.8485 14.2852C11.3822 14.1593 10.9624 13.901 10.6398 13.5416C10.3171 13.1821 10.1055 12.7369 10.0305 12.2597C9.95556 11.7826 10.0204 11.2939 10.2172 10.8529C10.4141 10.4118 10.7345 10.0372 11.1397 9.77429C11.5449 9.51143 12.0176 9.37157 12.5006 9.37164C12.6663 9.37164 12.8253 9.3058 12.9425 9.18859C13.0597 9.07138 13.1256 8.9124 13.1256 8.74664C13.1256 8.58088 13.0597 8.42191 12.9425 8.3047C12.8253 8.18749 12.6663 8.12164 12.5006 8.12164C11.5775 8.12096 10.6869 8.46218 10.0006 9.07946V3.74664C10.0006 3.0836 10.264 2.44772 10.7328 1.97888C11.2017 1.51004 11.8375 1.24664 12.5006 1.24664C13.1636 1.24664 13.7995 1.51004 14.2684 1.97888C14.7372 2.44772 15.0006 3.0836 15.0006 3.74664V4.27242C15.0006 4.40161 15.0407 4.52761 15.1152 4.6331C15.1898 4.73858 15.2952 4.81837 15.417 4.86149C16.113 5.10651 16.6998 5.58989 17.0736 6.22605C17.4474 6.86221 17.584 7.61012 17.4593 8.33734C17.3346 9.06457 16.9566 9.72422 16.3922 10.1995C15.8278 10.6748 15.1134 10.935 14.3756 10.9341ZM15.6256 6.87164C15.6256 7.0374 15.5597 7.19637 15.4425 7.31358C15.3253 7.43079 15.1663 7.49664 15.0006 7.49664H14.6881C13.9422 7.49664 13.2268 7.20033 12.6994 6.67288C12.1719 6.14543 11.8756 5.43006 11.8756 4.68414V4.37164C11.8756 4.20588 11.9414 4.04691 12.0586 3.9297C12.1759 3.81249 12.3348 3.74664 12.5006 3.74664C12.6663 3.74664 12.8253 3.81249 12.9425 3.9297C13.0597 4.04691 13.1256 4.20588 13.1256 4.37164V4.68414C13.1256 5.09854 13.2902 5.49597 13.5832 5.789C13.8763 6.08202 14.2737 6.24664 14.6881 6.24664H15.0006C15.1663 6.24664 15.3253 6.31249 15.4425 6.4297C15.5597 6.54691 15.6256 6.70588 15.6256 6.87164ZM4.06309 7.49664H3.75059C3.58483 7.49664 3.42585 7.43079 3.30864 7.31358C3.19143 7.19637 3.12559 7.0374 3.12559 6.87164C3.12559 6.70588 3.19143 6.54691 3.30864 6.4297C3.42585 6.31249 3.58483 6.24664 3.75059 6.24664H4.06309C4.47749 6.24664 4.87492 6.08202 5.16794 5.789C5.46097 5.49597 5.62559 5.09854 5.62559 4.68414V4.37164C5.62559 4.20588 5.69143 4.04691 5.80864 3.9297C5.92586 3.81249 6.08483 3.74664 6.25059 3.74664C6.41635 3.74664 6.57532 3.81249 6.69253 3.9297C6.80974 4.04691 6.87559 4.20588 6.87559 4.37164V4.68414C6.87559 5.43006 6.57927 6.14543 6.05182 6.67288C5.52438 7.20033 4.80901 7.49664 4.06309 7.49664Z" },
332
- "eye": { viewBox: "0 0 18.75 12.5", d: "M18.6961 5.99688C18.6687 5.93516 18.007 4.46719 16.5359 2.99609C14.5758 1.03594 12.1 0 9.37499 0C6.64999 0 4.17421 1.03594 2.21405 2.99609C0.742961 4.46719 0.0781175 5.9375 0.0538988 5.99688C0.0183622 6.07681 0 6.16331 0 6.25078C0 6.33826 0.0183622 6.42476 0.0538988 6.50469C0.0812425 6.56641 0.742961 8.03359 2.21405 9.50469C4.17421 11.4641 6.64999 12.5 9.37499 12.5C12.1 12.5 14.5758 11.4641 16.5359 9.50469C18.007 8.03359 18.6687 6.56641 18.6961 6.50469C18.7316 6.42476 18.75 6.33826 18.75 6.25078C18.75 6.16331 18.7316 6.07681 18.6961 5.99688ZM9.37499 11.25C6.9703 11.25 4.86952 10.3758 3.13046 8.65234C2.4169 7.94273 1.80983 7.13356 1.32812 6.25C1.8097 5.36636 2.41679 4.55717 3.13046 3.84766C4.86952 2.12422 6.9703 1.25 9.37499 1.25C11.7797 1.25 13.8805 2.12422 15.6195 3.84766C16.3345 4.557 16.9429 5.36619 17.4258 6.25C16.8625 7.30156 14.4086 11.25 9.37499 11.25ZM9.37499 2.5C8.63331 2.5 7.90829 2.71993 7.2916 3.13199C6.67492 3.54404 6.19427 4.12971 5.91044 4.81494C5.62662 5.50016 5.55235 6.25416 5.69705 6.98159C5.84174 7.70902 6.19889 8.3772 6.72334 8.90165C7.24779 9.4261 7.91597 9.78325 8.6434 9.92795C9.37083 10.0726 10.1248 9.99838 10.8101 9.71455C11.4953 9.43072 12.0809 8.95007 12.493 8.33339C12.9051 7.7167 13.125 6.99168 13.125 6.25C13.124 5.25576 12.7285 4.30253 12.0255 3.59949C11.3225 2.89645 10.3692 2.50103 9.37499 2.5ZM9.37499 8.75C8.88054 8.75 8.39719 8.60338 7.98607 8.32867C7.57494 8.05397 7.25451 7.66352 7.06529 7.20671C6.87607 6.74989 6.82657 6.24723 6.92303 5.76227C7.01949 5.27732 7.25759 4.83186 7.60722 4.48223C7.95686 4.1326 8.40231 3.8945 8.88727 3.79804C9.37222 3.70157 9.87488 3.75108 10.3317 3.9403C10.7885 4.12952 11.179 4.44995 11.4537 4.86107C11.7284 5.2722 11.875 5.75555 11.875 6.25C11.875 6.91304 11.6116 7.54893 11.1428 8.01777C10.6739 8.48661 10.038 8.75 9.37499 8.75Z" },
333
- "Frame": { viewBox: "0 0 16.7501 12.5", d: "M1.25 0.625V11.875C1.25 12.0408 1.18415 12.1997 1.06694 12.3169C0.949731 12.4342 0.79076 12.5 0.625 12.5C0.45924 12.5 0.300269 12.4342 0.183058 12.3169C0.0658481 12.1997 0 12.0408 0 11.875V0.625C0 0.45924 0.0658481 0.300269 0.183058 0.183058C0.300269 0.0658481 0.45924 0 0.625 0C0.79076 0 0.949731 0.0658481 1.06694 0.183058C1.18415 0.300269 1.25 0.45924 1.25 0.625ZM8.4375 4.88281L6.875 5.39062V3.75C6.875 3.58424 6.80915 3.42527 6.69194 3.30806C6.57473 3.19085 6.41576 3.125 6.25 3.125C6.08424 3.125 5.92527 3.19085 5.80806 3.30806C5.69085 3.42527 5.625 3.58424 5.625 3.75V5.39062L4.0625 4.88281C3.90482 4.83101 3.73302 4.84397 3.5849 4.91884C3.43677 4.99371 3.32446 5.12435 3.27266 5.28203C3.22086 5.43971 3.23382 5.61151 3.30868 5.75963C3.38355 5.90776 3.5142 6.02007 3.67188 6.07188L5.23438 6.57891L4.27031 7.90703C4.21937 7.97323 4.1822 8.04897 4.16103 8.12977C4.13985 8.21058 4.13508 8.29481 4.14701 8.37748C4.15894 8.46016 4.18733 8.53961 4.23048 8.61113C4.27364 8.68265 4.3307 8.74479 4.39828 8.79389C4.46586 8.84298 4.5426 8.87803 4.62396 8.89696C4.70532 8.91589 4.78965 8.91832 4.87196 8.90411C4.95428 8.88989 5.03291 8.85932 5.10321 8.8142C5.17351 8.76908 5.23405 8.71032 5.28125 8.64141L6.24531 7.31328L7.20937 8.64141C7.25658 8.71032 7.31712 8.76908 7.38742 8.8142C7.45772 8.85932 7.53635 8.88989 7.61866 8.90411C7.70098 8.91832 7.7853 8.91589 7.86666 8.89696C7.94802 8.87803 8.02476 8.84298 8.09235 8.79389C8.15993 8.74479 8.21699 8.68265 8.26014 8.61113C8.3033 8.53961 8.33168 8.46016 8.34361 8.37748C8.35554 8.29481 8.35078 8.21058 8.3296 8.12977C8.30842 8.04897 8.27126 7.97323 8.22031 7.90703L7.25625 6.57891L8.81875 6.07188C8.96947 6.01582 9.09277 5.90382 9.16304 5.75918C9.2333 5.61454 9.24511 5.44839 9.19602 5.29526C9.14692 5.14213 9.04069 5.01382 8.89942 4.93701C8.75815 4.86019 8.59271 4.84078 8.4375 4.88281ZM16.7188 5.28437C16.6675 5.12813 16.5568 4.99837 16.4106 4.9232C16.2643 4.84804 16.0944 4.83353 15.9375 4.88281L14.375 5.39062V3.75C14.375 3.58424 14.3092 3.42527 14.1919 3.30806C14.0747 3.19085 13.9158 3.125 13.75 3.125C13.5842 3.125 13.4253 3.19085 13.3081 3.30806C13.1908 3.42527 13.125 3.58424 13.125 3.75V5.39062L11.5625 4.88359C11.4048 4.83231 11.2332 4.84577 11.0855 4.921C10.9377 4.99624 10.8259 5.12709 10.7746 5.28477C10.7233 5.44244 10.7368 5.61404 10.812 5.7618C10.8873 5.90955 11.0181 6.02137 11.1758 6.07266L12.7383 6.57969L11.7742 7.90781C11.7233 7.97401 11.6861 8.04975 11.6649 8.13055C11.6438 8.21136 11.639 8.29559 11.6509 8.37826C11.6628 8.46094 11.6912 8.54039 11.7344 8.61191C11.7775 8.68343 11.8346 8.74557 11.9022 8.79467C11.9698 8.84376 12.0465 8.87881 12.1279 8.89774C12.2092 8.91667 12.2936 8.9191 12.3759 8.90489C12.4582 8.89067 12.5368 8.8601 12.6071 8.81498C12.6774 8.76986 12.738 8.7111 12.7852 8.64219L13.7492 7.31406L14.7133 8.64219C14.7605 8.7111 14.821 8.76986 14.8913 8.81498C14.9616 8.8601 15.0403 8.89067 15.1226 8.90489C15.2049 8.9191 15.2892 8.91667 15.3706 8.89774C15.4519 8.87881 15.5287 8.84376 15.5963 8.79467C15.6638 8.74557 15.7209 8.68343 15.764 8.61191C15.8072 8.54039 15.8356 8.46094 15.8475 8.37826C15.8594 8.29559 15.8547 8.21136 15.8335 8.13055C15.8123 8.04975 15.7752 7.97401 15.7242 7.90781L14.7602 6.57969L16.3227 6.07266C16.4795 6.02038 16.6093 5.90807 16.6835 5.76033C16.7578 5.61258 16.7704 5.44144 16.7188 5.28437Z" },
334
- "arrow-up": { viewBox: "0 0 12.5008 15.0005", d: "M12.3175 6.69268C12.2595 6.75079 12.1906 6.79689 12.1147 6.82834C12.0388 6.85979 11.9575 6.87598 11.8753 6.87598C11.7932 6.87598 11.7119 6.85979 11.636 6.82834C11.5601 6.79689 11.4912 6.75079 11.4332 6.69268L6.87535 2.13409V14.3755C6.87535 14.5413 6.8095 14.7002 6.69229 14.8174C6.57508 14.9346 6.41611 15.0005 6.25035 15.0005C6.08459 15.0005 5.92562 14.9346 5.80841 14.8174C5.6912 14.7002 5.62535 14.5413 5.62535 14.3755V2.13409L1.06753 6.69268C0.95026 6.80995 0.7912 6.87584 0.625347 6.87584C0.459495 6.87584 0.300435 6.80995 0.18316 6.69268C0.0658846 6.5754 1.2357e-09 6.41634 0 6.25049C-1.2357e-09 6.08464 0.0658846 5.92558 0.18316 5.8083L5.80816 0.183304C5.86621 0.125194 5.93514 0.0790945 6.01101 0.0476418C6.08688 0.0161892 6.16821 0 6.25035 0C6.33248 0 6.41381 0.0161892 6.48969 0.0476418C6.56556 0.0790945 6.63449 0.125194 6.69254 0.183304L12.3175 5.8083C12.3756 5.86635 12.4217 5.93528 12.4532 6.01115C12.4847 6.08703 12.5008 6.16836 12.5008 6.25049C12.5008 6.33263 12.4847 6.41396 12.4532 6.48983C12.4217 6.5657 12.3756 6.63463 12.3175 6.69268Z" },
335
- "question": { viewBox: "0 0 16.25 16.25", d: "M9.0625 12.1875C9.0625 12.3729 9.00752 12.5542 8.90451 12.7083C8.80149 12.8625 8.65507 12.9827 8.48377 13.0536C8.31246 13.1246 8.12396 13.1432 7.94211 13.107C7.76025 13.0708 7.5932 12.9815 7.46209 12.8504C7.33098 12.7193 7.24169 12.5523 7.20552 12.3704C7.16934 12.1885 7.18791 12 7.25887 11.8287C7.32982 11.6574 7.44999 11.511 7.60416 11.408C7.75833 11.305 7.93958 11.25 8.125 11.25C8.37364 11.25 8.6121 11.3488 8.78792 11.5246C8.96373 11.7004 9.0625 11.9389 9.0625 12.1875ZM8.125 3.75C6.40157 3.75 5 5.01172 5 6.5625V6.875C5 7.04076 5.06585 7.19973 5.18306 7.31694C5.30027 7.43415 5.45924 7.5 5.625 7.5C5.79076 7.5 5.94973 7.43415 6.06695 7.31694C6.18416 7.19973 6.25 7.04076 6.25 6.875V6.5625C6.25 5.70312 7.09141 5 8.125 5C9.1586 5 10 5.70312 10 6.5625C10 7.42188 9.1586 8.125 8.125 8.125C7.95924 8.125 7.80027 8.19085 7.68306 8.30806C7.56585 8.42527 7.5 8.58424 7.5 8.75V9.375C7.5 9.54076 7.56585 9.69973 7.68306 9.81694C7.80027 9.93415 7.95924 10 8.125 10C8.29076 10 8.44974 9.93415 8.56695 9.81694C8.68416 9.69973 8.75 9.54076 8.75 9.375V9.31875C10.175 9.05703 11.25 7.92031 11.25 6.5625C11.25 5.01172 9.84844 3.75 8.125 3.75ZM16.25 8.125C16.25 9.73197 15.7735 11.3029 14.8807 12.639C13.9879 13.9752 12.719 15.0166 11.2343 15.6315C9.74966 16.2465 8.11599 16.4074 6.53989 16.0939C4.9638 15.7804 3.51606 15.0065 2.37976 13.8702C1.24346 12.7339 0.469628 11.2862 0.156123 9.71011C-0.157382 8.13401 0.00352043 6.50035 0.618482 5.0157C1.23344 3.53105 2.27485 2.2621 3.611 1.36931C4.94714 0.476523 6.51803 0 8.125 0C10.2792 0.00227486 12.3445 0.85903 13.8677 2.38227C15.391 3.90551 16.2477 5.97081 16.25 8.125ZM15 8.125C15 6.76525 14.5968 5.43604 13.8414 4.30545C13.0859 3.17487 12.0122 2.29368 10.756 1.77333C9.49971 1.25298 8.11738 1.11683 6.78376 1.3821C5.45014 1.64737 4.22513 2.30215 3.26364 3.26364C2.30216 4.22513 1.64738 5.45013 1.3821 6.78375C1.11683 8.11737 1.25298 9.49971 1.77333 10.7559C2.29368 12.0122 3.17487 13.0859 4.30546 13.8414C5.43605 14.5968 6.76526 15 8.125 15C9.94773 14.9979 11.6952 14.2729 12.9841 12.9841C14.2729 11.6952 14.9979 9.94773 15 8.125Z" },
336
- "caret-up": { viewBox: "0 0 13.7508 7.50098", d: "M13.5675 7.31768C13.5095 7.37579 13.4406 7.42189 13.3647 7.45334C13.2888 7.48479 13.2075 7.50098 13.1253 7.50098C13.0432 7.50098 12.9619 7.48479 12.886 7.45334C12.8101 7.42189 12.7412 7.37579 12.6832 7.31768L6.87535 1.50909L1.06753 7.31768C0.95026 7.43495 0.7912 7.50084 0.625347 7.50084C0.459495 7.50084 0.300435 7.43495 0.18316 7.31768C0.0658846 7.2004 3.26935e-09 7.04134 0 6.87549C-3.26935e-09 6.70964 0.0658846 6.55058 0.18316 6.4333L6.43316 0.183304C6.49121 0.125194 6.56014 0.0790947 6.63601 0.047642C6.71188 0.0161893 6.79321 0 6.87535 0C6.95748 0 7.03881 0.0161893 7.11469 0.047642C7.19056 0.0790947 7.25949 0.125194 7.31754 0.183304L13.5675 6.4333C13.6256 6.49135 13.6717 6.56028 13.7032 6.63615C13.7347 6.71203 13.7508 6.79336 13.7508 6.87549C13.7508 6.95763 13.7347 7.03896 13.7032 7.11483C13.6717 7.1907 13.6256 7.25963 13.5675 7.31768Z" },
337
- "stop 1": { viewBox: "0 0 13.75 13.75", d: "M12.5 0H1.25C0.918479 0 0.600537 0.131696 0.366116 0.366116C0.131696 0.600537 0 0.918479 0 1.25V12.5C0 12.8315 0.131696 13.1495 0.366116 13.3839C0.600537 13.6183 0.918479 13.75 1.25 13.75H12.5C12.8315 13.75 13.1495 13.6183 13.3839 13.3839C13.6183 13.1495 13.75 12.8315 13.75 12.5V1.25C13.75 0.918479 13.6183 0.600537 13.3839 0.366116C13.1495 0.131696 12.8315 0 12.5 0ZM12.5 12.5H1.25V1.25H12.5V12.5Z" },
338
- "pause 1": { viewBox: "0 0 13.75 13.75", d: "M13.75 0.625V3.75C13.75 3.91576 13.6842 4.07473 13.5669 4.19194C13.4497 4.30915 13.2908 4.375 13.125 4.375C12.9592 4.375 12.8003 4.30915 12.6831 4.19194C12.5658 4.07473 12.5 3.91576 12.5 3.75V1.25H10C9.83424 1.25 9.67527 1.18415 9.55806 1.06694C9.44085 0.949731 9.375 0.79076 9.375 0.625C9.375 0.45924 9.44085 0.300269 9.55806 0.183058C9.67527 0.0658481 9.83424 0 10 0H13.125C13.2908 0 13.4497 0.0658481 13.5669 0.183058C13.6842 0.300269 13.75 0.45924 13.75 0.625ZM3.75 12.5H1.25V10C1.25 9.83424 1.18415 9.67527 1.06694 9.55806C0.949731 9.44085 0.79076 9.375 0.625 9.375C0.45924 9.375 0.300269 9.44085 0.183058 9.55806C0.0658481 9.67527 0 9.83424 0 10V13.125C0 13.2908 0.0658481 13.4497 0.183058 13.5669C0.300269 13.6842 0.45924 13.75 0.625 13.75H3.75C3.91576 13.75 4.07473 13.6842 4.19194 13.5669C4.30915 13.4497 4.375 13.2908 4.375 13.125C4.375 12.9592 4.30915 12.8003 4.19194 12.6831C4.07473 12.5658 3.91576 12.5 3.75 12.5ZM13.125 9.375C12.9592 9.375 12.8003 9.44085 12.6831 9.55806C12.5658 9.67527 12.5 9.83424 12.5 10V12.5H10C9.83424 12.5 9.67527 12.5658 9.55806 12.6831C9.44085 12.8003 9.375 12.9592 9.375 13.125C9.375 13.2908 9.44085 13.4497 9.55806 13.5669C9.67527 13.6842 9.83424 13.75 10 13.75H13.125C13.2908 13.75 13.4497 13.6842 13.5669 13.5669C13.6842 13.4497 13.75 13.2908 13.75 13.125V10C13.75 9.83424 13.6842 9.67527 13.5669 9.55806C13.4497 9.44085 13.2908 9.375 13.125 9.375ZM3.75 0H0.625C0.45924 0 0.300269 0.0658481 0.183058 0.183058C0.0658481 0.300269 0 0.45924 0 0.625V3.75C0 3.91576 0.0658481 4.07473 0.183058 4.19194C0.300269 4.30915 0.45924 4.375 0.625 4.375C0.79076 4.375 0.949731 4.30915 1.06694 4.19194C1.18415 4.07473 1.25 3.91576 1.25 3.75V1.25H3.75C3.91576 1.25 4.07473 1.18415 4.19194 1.06694C4.30915 0.949731 4.375 0.79076 4.375 0.625C4.375 0.45924 4.30915 0.300269 4.19194 0.183058C4.07473 0.0658481 3.91576 0 3.75 0Z" },
339
- "play 1": { viewBox: "0 0 13.75 13.75", d: "M8.75 4.375V0.625C8.75 0.45924 8.81585 0.300269 8.93306 0.183058C9.05027 0.0658481 9.20924 0 9.375 0C9.54076 0 9.69973 0.0658481 9.81694 0.183058C9.93415 0.300269 10 0.45924 10 0.625V3.75H13.125C13.2908 3.75 13.4497 3.81585 13.5669 3.93306C13.6842 4.05027 13.75 4.20924 13.75 4.375C13.75 4.54076 13.6842 4.69973 13.5669 4.81694C13.4497 4.93415 13.2908 5 13.125 5H9.375C9.20924 5 9.05027 4.93415 8.93306 4.81694C8.81585 4.69973 8.75 4.54076 8.75 4.375ZM4.375 8.75H0.625C0.45924 8.75 0.300269 8.81585 0.183058 8.93306C0.0658481 9.05027 0 9.20924 0 9.375C0 9.54076 0.0658481 9.69973 0.183058 9.81694C0.300269 9.93415 0.45924 10 0.625 10H3.75V13.125C3.75 13.2908 3.81585 13.4497 3.93306 13.5669C4.05027 13.6842 4.20924 13.75 4.375 13.75C4.54076 13.75 4.69973 13.6842 4.81694 13.5669C4.93415 13.4497 5 13.2908 5 13.125V9.375C5 9.20924 4.93415 9.05027 4.81694 8.93306C4.69973 8.81585 4.54076 8.75 4.375 8.75ZM13.125 8.75H9.375C9.20924 8.75 9.05027 8.81585 8.93306 8.93306C8.81585 9.05027 8.75 9.20924 8.75 9.375V13.125C8.75 13.2908 8.81585 13.4497 8.93306 13.5669C9.05027 13.6842 9.20924 13.75 9.375 13.75C9.54076 13.75 9.69973 13.6842 9.81694 13.5669C9.93415 13.4497 10 13.2908 10 13.125V10H13.125C13.2908 10 13.4497 9.93415 13.5669 9.81694C13.6842 9.69973 13.75 9.54076 13.75 9.375C13.75 9.20924 13.6842 9.05027 13.5669 8.93306C13.4497 8.81585 13.2908 8.75 13.125 8.75ZM4.375 0C4.20924 0 4.05027 0.0658481 3.93306 0.183058C3.81585 0.300269 3.75 0.45924 3.75 0.625V3.75H0.625C0.45924 3.75 0.300269 3.81585 0.183058 3.93306C0.0658481 4.05027 0 4.20924 0 4.375C0 4.54076 0.0658481 4.69973 0.183058 4.81694C0.300269 4.93415 0.45924 5 0.625 5H4.375C4.54076 5 4.69973 4.93415 4.81694 4.81694C4.93415 4.69973 5 4.54076 5 4.375V0.625C5 0.45924 4.93415 0.300269 4.81694 0.183058C4.69973 0.0658481 4.54076 0 4.375 0Z" },
340
- "corners-out 1": { viewBox: "0 0 16 16", strokes: [
341
- { d: "M1 5V1H5", strokeWidth: 1.75, strokeLinecap: "round" },
342
- { d: "M11 1H15V5", strokeWidth: 1.75, strokeLinecap: "round" },
343
- { d: "M15 11V15H11", strokeWidth: 1.75, strokeLinecap: "round" },
344
- { d: "M5 15H1V11", strokeWidth: 1.75, strokeLinecap: "round" }
345
- ] },
346
- "corners-in 1": { viewBox: "0 0 16 16", strokes: [
347
- { d: "M1 1H5V5", strokeWidth: 1.75, strokeLinecap: "round" },
348
- { d: "M11 1H15V5", strokeWidth: 1.75, strokeLinecap: "round" },
349
- { d: "M15 11V15H11", strokeWidth: 1.75, strokeLinecap: "round" },
350
- { d: "M1 11H5V15", strokeWidth: 1.75, strokeLinecap: "round" }
351
- ] },
352
- "Volume": { viewBox: "0 0 12 14", strokes: [
353
- { d: "M1 13L1 7", strokeWidth: 2, strokeLinecap: "round" },
354
- { d: "M6 13L6 4", strokeWidth: 2, strokeLinecap: "round" },
355
- { d: "M11 13L11 1", strokeWidth: 2, strokeLinecap: "round" }
356
- ] }
305
+ var import_icons_react = require("@tabler/icons-react");
306
+ var tablerIconRegistry = {
307
+ IconAdjustmentsHorizontalFilled: import_icons_react.IconAdjustmentsHorizontalFilled,
308
+ IconArrowUp: import_icons_react.IconArrowUp,
309
+ IconBuildingHospital: import_icons_react.IconBuildingHospital,
310
+ IconBooks: import_icons_react.IconBooks,
311
+ IconBulb: import_icons_react.IconBulb,
312
+ IconChartBar: import_icons_react.IconChartBar,
313
+ IconCheck: import_icons_react.IconCheck,
314
+ IconChecklist: import_icons_react.IconChecklist,
315
+ IconChevronDown: import_icons_react.IconChevronDown,
316
+ IconChevronUp: import_icons_react.IconChevronUp,
317
+ IconFile: import_icons_react.IconFile,
318
+ IconFolders: import_icons_react.IconFolders,
319
+ IconHelpCircle: import_icons_react.IconHelpCircle,
320
+ IconLanguage: import_icons_react.IconLanguage,
321
+ IconMapPin: import_icons_react.IconMapPin,
322
+ IconMessages: import_icons_react.IconMessages,
323
+ IconMicrophone: import_icons_react.IconMicrophone,
324
+ IconPencil: import_icons_react.IconPencil,
325
+ IconPlus: import_icons_react.IconPlus,
326
+ IconSchool: import_icons_react.IconSchool,
327
+ IconSearch: import_icons_react.IconSearch,
328
+ IconSparkles: import_icons_react.IconSparkles,
329
+ IconUser: import_icons_react.IconUser,
330
+ IconUserFilled: import_icons_react.IconUserFilled,
331
+ IconUserCircle: import_icons_react.IconUserCircle,
332
+ IconUserSearch: import_icons_react.IconUserSearch,
333
+ IconUsers: import_icons_react.IconUsers,
334
+ IconUsersGroup: import_icons_react.IconUsersGroup,
335
+ IconX: import_icons_react.IconX
357
336
  };
358
- var iconNameMap = {
359
- "files": "files",
360
- "books": "books",
361
- "file-magnifying-glass": "file-magnifying-glass",
362
- "minus": "minus",
363
- "plus": "plus",
364
- "arrows-in-simple": "arrows-in-simple",
365
- "check": "check",
366
- "caret-down": "caret-down",
367
- "lightbulb": "lightbulb",
368
- "chats": "chats",
369
- "file": "file",
370
- "folders": "folders",
371
- "sparkle": "sparkle",
372
- "microphone-stage": "microphone-stage",
373
- "battery-low": "battery-low",
374
- "microphone": "microphone",
375
- "microphone-slash": "microphone-slash",
376
- "play": "play",
377
- "x": "x",
378
- "mail": "Mail",
379
- "pause": "pause",
380
- "broadcast": "broadcast",
381
- "sidebar-simple": "sidebar-simple",
382
- "pencil-simple-line": "pencil-simple-line",
383
- "search": "search",
384
- "list-dashes": "list-dashes",
385
- "brain": "brain",
386
- "eye": "eye",
387
- "frame": "Frame",
388
- "arrow-up": "arrow-up",
389
- "question": "question",
390
- "caret-up": "caret-up",
391
- "stop-1": "stop 1",
392
- "pause-1": "pause 1",
393
- "play-1": "play 1",
394
- "corners-out-1": "corners-out 1",
395
- "corners-in-1": "corners-in 1",
396
- "volume": "Volume"
337
+ var tablerIconNames = Object.keys(tablerIconRegistry).sort(
338
+ (left, right) => left.localeCompare(right)
339
+ );
340
+ function resolveTablerIcon(name) {
341
+ const candidate = tablerIconRegistry[name];
342
+ if (!candidate) {
343
+ throw new Error(
344
+ `Icon could not resolve Tabler icon \`${name}\`. Import it and append it to tablerIconRegistry before using it.`
345
+ );
346
+ }
347
+ return candidate;
348
+ }
349
+ var legacyIconToTablerNameMap = {
350
+ "adjustments-horizontal-filled": "IconAdjustmentsHorizontalFilled",
351
+ "books": "IconBooks",
352
+ "organization": "IconBuildingHospital",
353
+ "locations": "IconMapPin",
354
+ "people": "IconUsers",
355
+ "terminologies": "IconLanguage",
356
+ "guidelines": "IconChecklist",
357
+ "logs": "IconChartBar",
358
+ "profile": "IconUserSearch",
359
+ "experience": "IconSchool",
360
+ "voice": "IconMicrophone",
361
+ "plus": "IconPlus",
362
+ "check": "IconCheck",
363
+ "caret-down": "IconChevronDown",
364
+ "lightbulb": "IconBulb",
365
+ "chats": "IconMessages",
366
+ "file": "IconFile",
367
+ "folders": "IconFolders",
368
+ "sparkle": "IconSparkles",
369
+ "x": "IconX",
370
+ "pencil-simple-line": "IconPencil",
371
+ "search": "IconSearch",
372
+ "arrow-up": "IconArrowUp",
373
+ "question": "IconHelpCircle",
374
+ "user-filled": "IconUserFilled",
375
+ "caret-up": "IconChevronUp",
376
+ "users-group": "IconUsersGroup"
397
377
  };
378
+ var iconNames = Object.keys(legacyIconToTablerNameMap);
398
379
  var iconRegistry = Object.fromEntries(
399
- Object.entries(iconNameMap).map(([canonicalName, rawName]) => [
400
- canonicalName,
401
- rawIconRegistry[rawName]
380
+ Object.entries(legacyIconToTablerNameMap).map(([name, tablerName]) => [
381
+ name,
382
+ resolveTablerIcon(tablerName)
402
383
  ])
403
384
  );
404
- var iconNames = Object.keys(iconNameMap);
385
+ var iconNameMap = Object.fromEntries(
386
+ iconNames.map((name) => [name, name])
387
+ );
405
388
 
406
389
  // src/components/icon.tsx
407
390
  var import_jsx_runtime2 = require("react/jsx-runtime");
@@ -442,7 +425,7 @@ var iconColorOptions = [
442
425
  "agent-mint",
443
426
  "agent-green"
444
427
  ];
445
- var iconSizeScale = {
428
+ var iconSizeMap = {
446
429
  xs: 12,
447
430
  sm: 16,
448
431
  md: 20,
@@ -485,7 +468,7 @@ var iconColorScale = {
485
468
  "agent-green": "var(--sofya-agent-green)"
486
469
  };
487
470
  function resolveIconSize(size) {
488
- return typeof size === "number" ? size : iconSizeScale[size];
471
+ return typeof size === "number" ? size : iconSizeMap[size];
489
472
  }
490
473
  function resolveIconColor(color) {
491
474
  if (!color || color === "current") {
@@ -493,55 +476,43 @@ function resolveIconColor(color) {
493
476
  }
494
477
  return iconColorScale[color];
495
478
  }
496
- var Icon = React2.forwardRef(function Icon2({
497
- name,
498
- size = "md",
499
- color = "current",
500
- title,
501
- strokeWidth = 2,
502
- className,
503
- style,
504
- ...props
505
- }, ref) {
506
- const icon = iconRegistry[name];
507
- const titleId = React2.useId();
479
+ var Icon = React2.forwardRef(function Icon2(incomingProps, ref) {
480
+ const {
481
+ decorative,
482
+ size = "md",
483
+ color = "current",
484
+ title,
485
+ strokeWidth = 2,
486
+ className,
487
+ style
488
+ } = incomingProps;
489
+ const IconComponent = iconRegistry[incomingProps.name];
490
+ const {
491
+ decorative: _decorative,
492
+ color: _color,
493
+ name: _name,
494
+ size: _size,
495
+ strokeWidth: _strokeWidth,
496
+ title: _title,
497
+ ...props
498
+ } = incomingProps;
508
499
  const dimension = resolveIconSize(size);
509
500
  const resolvedColor = resolveIconColor(color);
510
501
  const resolvedStyle = resolvedColor ? { ...style, color: resolvedColor } : style;
511
- const fillPath = "d" in icon ? icon.d : void 0;
512
- const strokePaths = "strokes" in icon ? icon.strokes : void 0;
513
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
514
- "svg",
502
+ const isDecorative = decorative ?? !title;
503
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
504
+ IconComponent,
515
505
  {
516
506
  ref,
517
- xmlns: "http://www.w3.org/2000/svg",
518
- viewBox: icon.viewBox,
519
507
  className: cn("inline-block shrink-0 align-middle", className),
520
- fill: "none",
521
- role: title ? "img" : void 0,
522
- "aria-hidden": title ? void 0 : true,
523
- "aria-labelledby": title ? titleId : void 0,
508
+ role: isDecorative ? void 0 : "img",
509
+ "aria-hidden": isDecorative ? true : void 0,
524
510
  focusable: "false",
525
511
  ...props,
526
- width: dimension,
527
- height: dimension,
528
- style: resolvedStyle,
529
- children: [
530
- title ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("title", { id: titleId, children: title }) : null,
531
- fillPath ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: fillPath, fill: "currentColor" }) : null,
532
- strokePaths?.map((path, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
533
- "path",
534
- {
535
- d: path.d,
536
- fill: "none",
537
- stroke: "currentColor",
538
- strokeWidth: path.strokeWidth ?? strokeWidth,
539
- strokeLinecap: path.strokeLinecap ?? "round",
540
- strokeLinejoin: "round"
541
- },
542
- `${name}-${index}`
543
- ))
544
- ]
512
+ size: dimension,
513
+ title,
514
+ stroke: strokeWidth,
515
+ style: resolvedStyle
545
516
  }
546
517
  );
547
518
  });
@@ -1010,10 +981,10 @@ function Badge({ className, variant, alert, pillTone, ...props }) {
1010
981
  }
1011
982
 
1012
983
  // src/components/button.tsx
1013
- var React6 = __toESM(require("react"), 1);
984
+ var React8 = __toESM(require("react"), 1);
985
+ var import_icons_react2 = require("@tabler/icons-react");
1014
986
  var import_react_slot = require("@radix-ui/react-slot");
1015
987
  var import_class_variance_authority4 = require("class-variance-authority");
1016
- var import_react = require("motion/react");
1017
988
 
1018
989
  // src/components/button-language-flags.ts
1019
990
  function createFlagDataUri(svg) {
@@ -1137,8 +1108,271 @@ var dropdownLanguageFlagSrc = {
1137
1108
  `)
1138
1109
  };
1139
1110
 
1140
- // src/components/button.tsx
1111
+ // src/components/button-ripple.tsx
1112
+ var React6 = __toESM(require("react"), 1);
1113
+ var import_react = require("motion/react");
1141
1114
  var import_jsx_runtime7 = require("react/jsx-runtime");
1115
+ var MAX_ACTIVE_RIPPLES = 3;
1116
+ var buttonRippleVariantClasses = {
1117
+ default: "bg-[hsl(var(--sofya-primary-foreground)/0.82)] mix-blend-screen",
1118
+ gradient: "bg-[hsl(var(--sofya-primary-foreground)/0.8)] mix-blend-screen",
1119
+ dropdown: "bg-[hsl(var(--sofya-primary)/0.36)]",
1120
+ icon: "bg-[hsl(var(--sofya-primary)/0.34)]",
1121
+ language: "bg-[hsl(var(--sofya-background)/0.76)] mix-blend-screen",
1122
+ secondary: "bg-[hsl(var(--sofya-primary)/0.30)]",
1123
+ outline: "bg-[hsl(var(--sofya-primary)/0.32)]",
1124
+ ghost: "bg-[hsl(var(--sofya-primary)/0.28)]",
1125
+ destructive: "bg-[hsl(var(--sofya-destructive-foreground)/0.78)] mix-blend-screen"
1126
+ };
1127
+ var buttonRippleBaseSize = {
1128
+ default: 20,
1129
+ sm: 18,
1130
+ lg: 22,
1131
+ icon: 18
1132
+ };
1133
+ function useButtonRippleState({
1134
+ disabled,
1135
+ onClick,
1136
+ onPointerDown,
1137
+ size,
1138
+ variant
1139
+ }) {
1140
+ const prefersReducedMotion = Boolean((0, import_react.useReducedMotion)());
1141
+ const [ripples, setRipples] = React6.useState([]);
1142
+ const rippleIdRef = React6.useRef(0);
1143
+ const lastRippleAtRef = React6.useRef(0);
1144
+ const handleRippleComplete = React6.useCallback((rippleId) => {
1145
+ setRipples(
1146
+ (currentRipples) => currentRipples.filter((currentRipple) => currentRipple.id !== rippleId)
1147
+ );
1148
+ }, []);
1149
+ const createRipple = React6.useCallback(
1150
+ (currentTarget, clientX, clientY) => {
1151
+ const now = performance.now();
1152
+ if (now - lastRippleAtRef.current < 48) {
1153
+ return;
1154
+ }
1155
+ lastRippleAtRef.current = now;
1156
+ const rect = currentTarget.getBoundingClientRect();
1157
+ const hasPointerPosition = clientX !== void 0 && clientY !== void 0;
1158
+ const x = hasPointerPosition ? clientX - rect.left : rect.width / 2;
1159
+ const y = hasPointerPosition ? clientY - rect.top : rect.height / 2;
1160
+ const radius = Math.max(
1161
+ Math.hypot(x, y),
1162
+ Math.hypot(rect.width - x, y),
1163
+ Math.hypot(x, rect.height - y),
1164
+ Math.hypot(rect.width - x, rect.height - y)
1165
+ );
1166
+ const baseSize = buttonRippleBaseSize[size];
1167
+ const finalDiameter = Math.max(
1168
+ radius * 2 + 24,
1169
+ Math.max(rect.width, rect.height) + 18
1170
+ );
1171
+ setRipples((currentRipples) => {
1172
+ const nextRipple = {
1173
+ id: rippleIdRef.current++,
1174
+ scale: finalDiameter / baseSize,
1175
+ size: baseSize,
1176
+ x: x - baseSize / 2,
1177
+ y: y - baseSize / 2
1178
+ };
1179
+ const nextRipples = [...currentRipples, nextRipple];
1180
+ if (nextRipples.length > MAX_ACTIVE_RIPPLES) {
1181
+ return nextRipples.slice(nextRipples.length - MAX_ACTIVE_RIPPLES);
1182
+ }
1183
+ return nextRipples;
1184
+ });
1185
+ },
1186
+ [size]
1187
+ );
1188
+ const handlePointerDown = React6.useCallback(
1189
+ (event) => {
1190
+ onPointerDown?.(event);
1191
+ if (event.defaultPrevented || disabled) {
1192
+ return;
1193
+ }
1194
+ if (prefersReducedMotion) {
1195
+ return;
1196
+ }
1197
+ if (event.button === 0) {
1198
+ createRipple(
1199
+ event.currentTarget,
1200
+ event.clientX,
1201
+ event.clientY
1202
+ );
1203
+ }
1204
+ },
1205
+ [createRipple, disabled, onPointerDown, prefersReducedMotion]
1206
+ );
1207
+ const handleClick = React6.useCallback(
1208
+ (event) => {
1209
+ if (!disabled && !prefersReducedMotion && event.detail === 0) {
1210
+ createRipple(event.currentTarget);
1211
+ }
1212
+ onClick?.(event);
1213
+ },
1214
+ [createRipple, disabled, onClick, prefersReducedMotion]
1215
+ );
1216
+ return {
1217
+ handleClick,
1218
+ handlePointerDown,
1219
+ handleRippleComplete,
1220
+ prefersReducedMotion,
1221
+ rippleClassName: buttonRippleVariantClasses[variant],
1222
+ ripples
1223
+ };
1224
+ }
1225
+ function ButtonRippleLayer({
1226
+ onAnimationComplete,
1227
+ prefersReducedMotion,
1228
+ rippleClassName,
1229
+ ripples
1230
+ }) {
1231
+ if (ripples.length === 0) {
1232
+ return null;
1233
+ }
1234
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1235
+ "span",
1236
+ {
1237
+ "aria-hidden": "true",
1238
+ className: "pointer-events-none absolute inset-0 z-[1] overflow-hidden rounded-[inherit]",
1239
+ children: ripples.map((ripple) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1240
+ import_react.motion.span,
1241
+ {
1242
+ className: cn(
1243
+ "absolute rounded-full will-change-transform transform-gpu",
1244
+ rippleClassName
1245
+ ),
1246
+ initial: prefersReducedMotion ? { opacity: 0.32, scale: 0.72 } : { opacity: 0.56, scale: 0 },
1247
+ animate: prefersReducedMotion ? { opacity: 0, scale: 1.02 } : { opacity: [0.56, 0.26, 0], scale: ripple.scale },
1248
+ transition: prefersReducedMotion ? { duration: 0.2, ease: "linear" } : {
1249
+ duration: 0.62,
1250
+ times: [0, 0.35, 1],
1251
+ ease: [0.16, 1, 0.3, 1]
1252
+ },
1253
+ style: {
1254
+ height: ripple.size,
1255
+ left: ripple.x,
1256
+ top: ripple.y,
1257
+ transformOrigin: "center center",
1258
+ width: ripple.size
1259
+ },
1260
+ onAnimationComplete: () => {
1261
+ onAnimationComplete(ripple.id);
1262
+ }
1263
+ },
1264
+ ripple.id
1265
+ ))
1266
+ }
1267
+ );
1268
+ }
1269
+
1270
+ // src/components/button-loading-state.ts
1271
+ var React7 = __toESM(require("react"), 1);
1272
+ var BUTTON_SEQUENCE_MS = 250;
1273
+ function useButtonLoadingState({
1274
+ buttonRef,
1275
+ children,
1276
+ leftIcon,
1277
+ loading,
1278
+ rightIcon
1279
+ }) {
1280
+ const expandedWidthRef = React7.useRef(void 0);
1281
+ const previousLoadingRef = React7.useRef(loading);
1282
+ const timeoutsRef = React7.useRef([]);
1283
+ const frameRef = React7.useRef(null);
1284
+ const [animatedWidth, setAnimatedWidth] = React7.useState(void 0);
1285
+ const [loadingPhase, setLoadingPhase] = React7.useState(
1286
+ loading ? "loading" : "idle"
1287
+ );
1288
+ const clearAnimationTimers = React7.useCallback(() => {
1289
+ for (const timeoutId of timeoutsRef.current) {
1290
+ window.clearTimeout(timeoutId);
1291
+ }
1292
+ timeoutsRef.current = [];
1293
+ if (frameRef.current !== null) {
1294
+ window.cancelAnimationFrame(frameRef.current);
1295
+ frameRef.current = null;
1296
+ }
1297
+ }, []);
1298
+ React7.useLayoutEffect(() => {
1299
+ const element = buttonRef.current;
1300
+ if (element && loadingPhase === "idle" && !loading) {
1301
+ expandedWidthRef.current = element.offsetWidth;
1302
+ }
1303
+ if (element && loadingPhase === "loading" && animatedWidth === void 0) {
1304
+ setAnimatedWidth(element.offsetHeight);
1305
+ }
1306
+ }, [animatedWidth, buttonRef, loading, loadingPhase, children, leftIcon, rightIcon]);
1307
+ React7.useEffect(() => {
1308
+ return () => {
1309
+ clearAnimationTimers();
1310
+ };
1311
+ }, [clearAnimationTimers]);
1312
+ React7.useEffect(() => {
1313
+ const element = buttonRef.current;
1314
+ if (!element) {
1315
+ return;
1316
+ }
1317
+ const previousLoading = previousLoadingRef.current;
1318
+ previousLoadingRef.current = loading;
1319
+ if (previousLoading === loading) {
1320
+ return;
1321
+ }
1322
+ clearAnimationTimers();
1323
+ if (loading) {
1324
+ const currentWidth2 = element.offsetWidth;
1325
+ const collapsedWidth = element.offsetHeight;
1326
+ expandedWidthRef.current = currentWidth2;
1327
+ setAnimatedWidth(currentWidth2);
1328
+ setLoadingPhase("hiding-content");
1329
+ timeoutsRef.current.push(
1330
+ window.setTimeout(() => {
1331
+ setLoadingPhase("collapsing");
1332
+ setAnimatedWidth(collapsedWidth);
1333
+ }, BUTTON_SEQUENCE_MS)
1334
+ );
1335
+ timeoutsRef.current.push(
1336
+ window.setTimeout(() => {
1337
+ setLoadingPhase("loading");
1338
+ }, BUTTON_SEQUENCE_MS * 2)
1339
+ );
1340
+ return;
1341
+ }
1342
+ const currentWidth = element.offsetWidth;
1343
+ const expandedWidth = expandedWidthRef.current ?? Math.max(element.scrollWidth, currentWidth);
1344
+ setAnimatedWidth(currentWidth);
1345
+ setLoadingPhase("hiding-spinner");
1346
+ timeoutsRef.current.push(
1347
+ window.setTimeout(() => {
1348
+ setLoadingPhase("expanding");
1349
+ frameRef.current = window.requestAnimationFrame(() => {
1350
+ frameRef.current = window.requestAnimationFrame(() => {
1351
+ setAnimatedWidth(expandedWidth);
1352
+ });
1353
+ });
1354
+ }, BUTTON_SEQUENCE_MS)
1355
+ );
1356
+ timeoutsRef.current.push(
1357
+ window.setTimeout(() => {
1358
+ setLoadingPhase("revealing-content");
1359
+ }, BUTTON_SEQUENCE_MS * 2)
1360
+ );
1361
+ timeoutsRef.current.push(
1362
+ window.setTimeout(() => {
1363
+ setLoadingPhase("idle");
1364
+ setAnimatedWidth(void 0);
1365
+ }, BUTTON_SEQUENCE_MS * 3)
1366
+ );
1367
+ }, [buttonRef, clearAnimationTimers, loading]);
1368
+ return {
1369
+ animatedWidth,
1370
+ loadingPhase
1371
+ };
1372
+ }
1373
+
1374
+ // src/components/button.tsx
1375
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1142
1376
  var buttonVariantOptions = [
1143
1377
  "default",
1144
1378
  "gradient",
@@ -1151,17 +1385,6 @@ var buttonVariantOptions = [
1151
1385
  "destructive"
1152
1386
  ];
1153
1387
  var buttonSizeOptions = ["default", "sm", "lg", "icon"];
1154
- var buttonRippleVariantClasses = {
1155
- default: "bg-[hsl(var(--sofya-primary-foreground)/0.82)] mix-blend-screen",
1156
- gradient: "bg-[hsl(var(--sofya-primary-foreground)/0.8)] mix-blend-screen",
1157
- dropdown: "bg-[hsl(var(--sofya-primary)/0.36)]",
1158
- icon: "bg-[hsl(var(--sofya-primary)/0.34)]",
1159
- language: "bg-[hsl(var(--sofya-background)/0.76)] mix-blend-screen",
1160
- secondary: "bg-[hsl(var(--sofya-primary)/0.30)]",
1161
- outline: "bg-[hsl(var(--sofya-primary)/0.32)]",
1162
- ghost: "bg-[hsl(var(--sofya-primary)/0.28)]",
1163
- destructive: "bg-[hsl(var(--sofya-destructive-foreground)/0.78)] mix-blend-screen"
1164
- };
1165
1388
  var buttonVariants = (0, import_class_variance_authority4.cva)(
1166
1389
  "relative isolate inline-flex items-center justify-center gap-2 overflow-hidden whitespace-nowrap rounded-full font-medium tracking-[0.025em] transform-gpu transition-[width,transform,filter,background-color,border-color,color,box-shadow] duration-sofya ease-sofya motion-safe:active:scale-[0.985] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",
1167
1390
  {
@@ -1190,7 +1413,6 @@ var buttonVariants = (0, import_class_variance_authority4.cva)(
1190
1413
  }
1191
1414
  }
1192
1415
  );
1193
- var BUTTON_SEQUENCE_MS = 250;
1194
1416
  var loadingSpinnerSizeClasses = {
1195
1417
  default: "h-4 w-4",
1196
1418
  sm: "h-3.5 w-3.5",
@@ -1203,52 +1425,21 @@ var languageButtonSizeClasses = {
1203
1425
  lg: "h-12 w-12 rounded-full p-0",
1204
1426
  icon: "h-11 w-11 rounded-full p-0"
1205
1427
  };
1206
- var buttonRippleBaseSize = {
1207
- default: 20,
1208
- sm: 18,
1209
- lg: 22,
1210
- icon: 18
1211
- };
1212
1428
  function ButtonSpinner({
1213
1429
  size
1214
1430
  }) {
1215
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1216
- "svg",
1431
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1432
+ import_icons_react2.IconLoader2,
1217
1433
  {
1218
1434
  "aria-hidden": "true",
1219
1435
  className: cn(
1220
1436
  "animate-spin text-current",
1221
1437
  loadingSpinnerSizeClasses[size]
1222
- ),
1223
- viewBox: "0 0 24 24",
1224
- fill: "none",
1225
- xmlns: "http://www.w3.org/2000/svg",
1226
- children: [
1227
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1228
- "circle",
1229
- {
1230
- cx: "12",
1231
- cy: "12",
1232
- r: "9",
1233
- className: "opacity-20",
1234
- stroke: "currentColor",
1235
- strokeWidth: "3"
1236
- }
1237
- ),
1238
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1239
- "path",
1240
- {
1241
- d: "M21 12A9 9 0 0 0 12 3",
1242
- stroke: "currentColor",
1243
- strokeWidth: "3",
1244
- strokeLinecap: "round"
1245
- }
1246
- )
1247
- ]
1438
+ )
1248
1439
  }
1249
1440
  );
1250
1441
  }
1251
- var Button = React6.forwardRef(
1442
+ var Button = React8.forwardRef(
1252
1443
  ({
1253
1444
  active = false,
1254
1445
  disabled,
@@ -1267,20 +1458,9 @@ var Button = React6.forwardRef(
1267
1458
  style,
1268
1459
  ...props
1269
1460
  }, ref) => {
1270
- const buttonRef = React6.useRef(null);
1271
- const expandedWidthRef = React6.useRef(void 0);
1272
- const previousLoadingRef = React6.useRef(loading);
1273
- const timeoutsRef = React6.useRef([]);
1274
- const frameRef = React6.useRef(null);
1275
- const [animatedWidth, setAnimatedWidth] = React6.useState(void 0);
1276
- const [loadingPhase, setLoadingPhase] = React6.useState(
1277
- loading ? "loading" : "idle"
1278
- );
1279
- const [ripples, setRipples] = React6.useState([]);
1280
- const rippleIdRef = React6.useRef(0);
1461
+ const buttonRef = React8.useRef(null);
1281
1462
  const Component = asChild ? import_react_slot.Slot : "button";
1282
- const prefersReducedMotion = (0, import_react.useReducedMotion)();
1283
- const hasChildren = React6.Children.count(children) > 0;
1463
+ const hasChildren = React8.Children.count(children) > 0;
1284
1464
  const isIconOnly = !hasChildren && Boolean(leftIcon || rightIcon);
1285
1465
  const isIconOnlyAction = variant === "icon" && isIconOnly;
1286
1466
  const resolvedSize = size ?? (isIconOnly ? "icon" : "default");
@@ -1291,6 +1471,13 @@ var Button = React6.forwardRef(
1291
1471
  const resolvedLanguageLabel = resolvedLanguageLocale ? buttonLanguageLabels[resolvedLanguageLocale] : void 0;
1292
1472
  const iconSlotClassName = "inline-flex shrink-0 items-center justify-center [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0";
1293
1473
  const iconOnlyNode = leftIcon ?? rightIcon;
1474
+ const { animatedWidth, loadingPhase } = useButtonLoadingState({
1475
+ buttonRef,
1476
+ children,
1477
+ leftIcon,
1478
+ loading,
1479
+ rightIcon
1480
+ });
1294
1481
  const isDisabled = disabled || loadingPhase !== "idle";
1295
1482
  const resolvedWidthStyle = animatedWidth === void 0 ? style?.width : `${animatedWidth}px`;
1296
1483
  const isCompactPhase = loadingPhase === "collapsing" || loadingPhase === "loading" || loadingPhase === "hiding-spinner";
@@ -1313,153 +1500,26 @@ var Button = React6.forwardRef(
1313
1500
  backgroundSize: "cover"
1314
1501
  } : void 0
1315
1502
  };
1316
- const resolvedRippleClassName = buttonRippleVariantClasses[resolvedVariant];
1317
- const handleRippleComplete = React6.useCallback((rippleId) => {
1318
- setRipples(
1319
- (currentRipples) => currentRipples.filter((currentRipple) => currentRipple.id !== rippleId)
1320
- );
1321
- }, []);
1322
- const createRipple = React6.useCallback(
1323
- (currentTarget, clientX, clientY) => {
1324
- const rect = currentTarget.getBoundingClientRect();
1325
- const hasPointerPosition = clientX !== void 0 && clientY !== void 0;
1326
- const x = hasPointerPosition ? clientX - rect.left : rect.width / 2;
1327
- const y = hasPointerPosition ? clientY - rect.top : rect.height / 2;
1328
- const radius = Math.max(
1329
- Math.hypot(x, y),
1330
- Math.hypot(rect.width - x, y),
1331
- Math.hypot(x, rect.height - y),
1332
- Math.hypot(rect.width - x, rect.height - y)
1333
- );
1334
- const baseSize = buttonRippleBaseSize[resolvedSize];
1335
- const finalDiameter = Math.max(
1336
- radius * 2 + 24,
1337
- Math.max(rect.width, rect.height) + 18
1338
- );
1339
- setRipples((currentRipples) => [
1340
- ...currentRipples,
1341
- {
1342
- id: rippleIdRef.current++,
1343
- scale: finalDiameter / baseSize,
1344
- size: baseSize,
1345
- x: x - baseSize / 2,
1346
- y: y - baseSize / 2
1347
- }
1348
- ]);
1349
- },
1350
- [resolvedSize]
1351
- );
1352
- const handlePointerDown = React6.useCallback(
1353
- (event) => {
1354
- onPointerDown?.(event);
1355
- if (event.defaultPrevented || isDisabled) {
1356
- return;
1357
- }
1358
- if (event.button === 0) {
1359
- createRipple(
1360
- event.currentTarget,
1361
- event.clientX,
1362
- event.clientY
1363
- );
1364
- }
1365
- },
1366
- [createRipple, isDisabled, onPointerDown]
1367
- );
1368
- const handleClick = React6.useCallback(
1369
- (event) => {
1370
- if (!isDisabled && event.detail === 0) {
1371
- createRipple(event.currentTarget);
1372
- }
1373
- onClick?.(event);
1374
- },
1375
- [createRipple, isDisabled, onClick]
1376
- );
1377
- const clearAnimationTimers = React6.useCallback(() => {
1378
- for (const timeoutId of timeoutsRef.current) {
1379
- window.clearTimeout(timeoutId);
1380
- }
1381
- timeoutsRef.current = [];
1382
- if (frameRef.current !== null) {
1383
- window.cancelAnimationFrame(frameRef.current);
1384
- frameRef.current = null;
1385
- }
1386
- }, []);
1387
- React6.useImperativeHandle(
1503
+ const {
1504
+ handleClick,
1505
+ handlePointerDown,
1506
+ handleRippleComplete,
1507
+ prefersReducedMotion,
1508
+ rippleClassName,
1509
+ ripples
1510
+ } = useButtonRippleState({
1511
+ disabled: isDisabled,
1512
+ onClick,
1513
+ onPointerDown,
1514
+ size: resolvedSize,
1515
+ variant: resolvedVariant
1516
+ });
1517
+ React8.useImperativeHandle(
1388
1518
  ref,
1389
1519
  () => buttonRef.current
1390
1520
  );
1391
- React6.useLayoutEffect(() => {
1392
- const element = buttonRef.current;
1393
- if (element && loadingPhase === "idle" && !loading) {
1394
- expandedWidthRef.current = element.offsetWidth;
1395
- }
1396
- if (element && loadingPhase === "loading" && animatedWidth === void 0) {
1397
- setAnimatedWidth(element.offsetHeight);
1398
- }
1399
- }, [animatedWidth, loading, loadingPhase, children, leftIcon, rightIcon]);
1400
- React6.useEffect(() => {
1401
- return () => {
1402
- clearAnimationTimers();
1403
- };
1404
- }, [clearAnimationTimers]);
1405
- React6.useEffect(() => {
1406
- const element = buttonRef.current;
1407
- if (!element) {
1408
- return;
1409
- }
1410
- const previousLoading = previousLoadingRef.current;
1411
- previousLoadingRef.current = loading;
1412
- if (previousLoading === loading) {
1413
- return;
1414
- }
1415
- clearAnimationTimers();
1416
- if (loading) {
1417
- const currentWidth2 = element.offsetWidth;
1418
- const collapsedWidth = element.offsetHeight;
1419
- expandedWidthRef.current = currentWidth2;
1420
- setAnimatedWidth(currentWidth2);
1421
- setLoadingPhase("hiding-content");
1422
- timeoutsRef.current.push(
1423
- window.setTimeout(() => {
1424
- setLoadingPhase("collapsing");
1425
- setAnimatedWidth(collapsedWidth);
1426
- }, BUTTON_SEQUENCE_MS)
1427
- );
1428
- timeoutsRef.current.push(
1429
- window.setTimeout(() => {
1430
- setLoadingPhase("loading");
1431
- }, BUTTON_SEQUENCE_MS * 2)
1432
- );
1433
- return;
1434
- }
1435
- const currentWidth = element.offsetWidth;
1436
- const expandedWidth = expandedWidthRef.current ?? Math.max(element.scrollWidth, currentWidth);
1437
- setAnimatedWidth(currentWidth);
1438
- setLoadingPhase("hiding-spinner");
1439
- timeoutsRef.current.push(
1440
- window.setTimeout(() => {
1441
- setLoadingPhase("expanding");
1442
- frameRef.current = window.requestAnimationFrame(() => {
1443
- frameRef.current = window.requestAnimationFrame(() => {
1444
- setAnimatedWidth(expandedWidth);
1445
- });
1446
- });
1447
- }, BUTTON_SEQUENCE_MS)
1448
- );
1449
- timeoutsRef.current.push(
1450
- window.setTimeout(() => {
1451
- setLoadingPhase("revealing-content");
1452
- }, BUTTON_SEQUENCE_MS * 2)
1453
- );
1454
- timeoutsRef.current.push(
1455
- window.setTimeout(() => {
1456
- setLoadingPhase("idle");
1457
- setAnimatedWidth(void 0);
1458
- }, BUTTON_SEQUENCE_MS * 3)
1459
- );
1460
- }, [children, clearAnimationTimers, leftIcon, loading, rightIcon]);
1461
- const buttonContent = isLanguageButton ? null : isIconOnly ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: iconSlotClassName, children: iconOnlyNode }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1462
- leftIcon ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: iconSlotClassName, children: leftIcon }) : null,
1521
+ const buttonContent = isLanguageButton ? null : isIconOnly ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: iconSlotClassName, children: iconOnlyNode }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1522
+ leftIcon ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: iconSlotClassName, children: leftIcon }) : null,
1463
1523
  hasChildren ? renderTextContent(children, {
1464
1524
  as: "span",
1465
1525
  className: "inline-flex items-center text-current",
@@ -1469,9 +1529,9 @@ var Button = React6.forwardRef(
1469
1529
  letterSpacing: "inherit"
1470
1530
  }
1471
1531
  }) : null,
1472
- rightIcon ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: iconSlotClassName, children: rightIcon }) : null
1532
+ rightIcon ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: iconSlotClassName, children: rightIcon }) : null
1473
1533
  ] });
1474
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1534
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1475
1535
  Component,
1476
1536
  {
1477
1537
  className: cn(
@@ -1492,41 +1552,16 @@ var Button = React6.forwardRef(
1492
1552
  style: { ...resolvedButtonStyle, width: resolvedWidthStyle },
1493
1553
  ...props,
1494
1554
  children: [
1495
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1496
- "span",
1555
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1556
+ ButtonRippleLayer,
1497
1557
  {
1498
- "aria-hidden": "true",
1499
- className: "pointer-events-none absolute inset-0 z-[1] overflow-hidden rounded-[inherit]",
1500
- children: ripples.map((ripple) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1501
- import_react.motion.span,
1502
- {
1503
- className: cn(
1504
- "absolute rounded-full will-change-transform transform-gpu",
1505
- resolvedRippleClassName
1506
- ),
1507
- initial: prefersReducedMotion ? { opacity: 0.32, scale: 0.72 } : { opacity: 0.56, scale: 0 },
1508
- animate: prefersReducedMotion ? { opacity: 0, scale: 1.02 } : { opacity: [0.56, 0.26, 0], scale: ripple.scale },
1509
- transition: prefersReducedMotion ? { duration: 0.2, ease: "linear" } : {
1510
- duration: 0.62,
1511
- times: [0, 0.35, 1],
1512
- ease: [0.16, 1, 0.3, 1]
1513
- },
1514
- style: {
1515
- height: ripple.size,
1516
- left: ripple.x,
1517
- top: ripple.y,
1518
- transformOrigin: "center center",
1519
- width: ripple.size
1520
- },
1521
- onAnimationComplete: () => {
1522
- handleRippleComplete(ripple.id);
1523
- }
1524
- },
1525
- ripple.id
1526
- ))
1558
+ onAnimationComplete: handleRippleComplete,
1559
+ prefersReducedMotion,
1560
+ rippleClassName,
1561
+ ripples
1527
1562
  }
1528
1563
  ),
1529
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1564
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1530
1565
  "span",
1531
1566
  {
1532
1567
  className: cn(
@@ -1536,7 +1571,7 @@ var Button = React6.forwardRef(
1536
1571
  children: buttonContent
1537
1572
  }
1538
1573
  ),
1539
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1574
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1540
1575
  "span",
1541
1576
  {
1542
1577
  "aria-hidden": "true",
@@ -1544,7 +1579,7 @@ var Button = React6.forwardRef(
1544
1579
  "pointer-events-none absolute inset-0 z-[2] flex items-center justify-center transition-opacity duration-sofya ease-sofya",
1545
1580
  showSpinner ? "opacity-100" : "opacity-0"
1546
1581
  ),
1547
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ButtonSpinner, { size: resolvedSize })
1582
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ButtonSpinner, { size: resolvedSize })
1548
1583
  }
1549
1584
  )
1550
1585
  ]
@@ -1555,9 +1590,9 @@ var Button = React6.forwardRef(
1555
1590
  Button.displayName = "Button";
1556
1591
 
1557
1592
  // src/components/surface.tsx
1558
- var React7 = __toESM(require("react"), 1);
1593
+ var React9 = __toESM(require("react"), 1);
1559
1594
  var import_react_slot2 = require("@radix-ui/react-slot");
1560
- var import_jsx_runtime8 = require("react/jsx-runtime");
1595
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1561
1596
  var surfaceStyles = {
1562
1597
  card: {
1563
1598
  backgroundColor: "hsl(var(--sofya-surface-card-background))",
@@ -1589,7 +1624,7 @@ var surfaceStyles = {
1589
1624
  };
1590
1625
  function SurfaceComponent({ as, asChild = false, variant = "card", className, style, ...props }, ref) {
1591
1626
  const Component = asChild ? import_react_slot2.Slot : as ?? "div";
1592
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1627
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1593
1628
  Component,
1594
1629
  {
1595
1630
  ref,
@@ -1600,16 +1635,16 @@ function SurfaceComponent({ as, asChild = false, variant = "card", className, st
1600
1635
  }
1601
1636
  );
1602
1637
  }
1603
- var SurfaceBase = React7.forwardRef(SurfaceComponent);
1638
+ var SurfaceBase = React9.forwardRef(SurfaceComponent);
1604
1639
  SurfaceBase.displayName = "Surface";
1605
1640
  var Surface = SurfaceBase;
1606
1641
 
1607
1642
  // src/components/card.tsx
1608
- var import_jsx_runtime9 = require("react/jsx-runtime");
1643
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1609
1644
  var cardVariants = ["card", "panel", "focus"];
1610
1645
  function Card({ className, variant = "card", ...props }) {
1611
1646
  const hasHoverShadow = variant === "card" || variant === "panel";
1612
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1647
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1613
1648
  Surface,
1614
1649
  {
1615
1650
  variant,
@@ -1623,10 +1658,10 @@ function Card({ className, variant = "card", ...props }) {
1623
1658
  );
1624
1659
  }
1625
1660
  function CardHeader({ className, ...props }) {
1626
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("flex flex-col gap-2 p-6", className), ...props });
1661
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("flex flex-col gap-2 p-6", className), ...props });
1627
1662
  }
1628
1663
  function CardTitle({ children, className, ...props }) {
1629
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1664
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1630
1665
  "h3",
1631
1666
  {
1632
1667
  className: cn("text-card-foreground", className),
@@ -1644,27 +1679,49 @@ function CardDescription({
1644
1679
  className,
1645
1680
  ...props
1646
1681
  }) {
1647
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: cn("text-muted-foreground", className), ...props, children: renderTextContent(children, {
1682
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: cn("text-muted-foreground", className), ...props, children: renderTextContent(children, {
1648
1683
  as: "span",
1649
1684
  className: "block text-muted-foreground",
1650
1685
  size: "body"
1651
1686
  }) });
1652
1687
  }
1653
1688
  function CardContent({ children, className, ...props }) {
1654
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("p-6 pt-0", className), ...props, children: renderTextContent(children, {
1689
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("p-6 pt-0", className), ...props, children: renderTextContent(children, {
1655
1690
  as: "span"
1656
1691
  }) });
1657
1692
  }
1658
1693
  function CardFooter({ children, className, ...props }) {
1659
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("flex items-center gap-4 p-6 pt-0", className), ...props, children: renderTextContent(children, {
1694
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("flex items-center gap-4 p-6 pt-0", className), ...props, children: renderTextContent(children, {
1660
1695
  as: "span"
1661
1696
  }) });
1662
1697
  }
1663
1698
 
1664
1699
  // src/components/checkbox.tsx
1665
- var React8 = __toESM(require("react"), 1);
1666
- var import_jsx_runtime10 = require("react/jsx-runtime");
1667
- var Checkbox = React8.forwardRef(
1700
+ var React10 = __toESM(require("react"), 1);
1701
+ var import_icons_react3 = require("@tabler/icons-react");
1702
+
1703
+ // src/lib/selection-control-classes.ts
1704
+ var selectionControlContainerBaseClasses = "flex w-fit gap-4";
1705
+ var selectionControlContentBaseClasses = "grid gap-2";
1706
+ var selectionControlLabelTextBaseClasses = "text-[color:var(--sofya-text-default)] [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-[3px]";
1707
+ var selectionControlDescriptionTextBaseClasses = "text-muted-foreground";
1708
+ var selectionControlControlBaseClasses = "border border-[color:var(--sofya-border-strong)] bg-card transition-[background-color,border-color,box-shadow,color] duration-sofya ease-sofya disabled:cursor-not-allowed disabled:opacity-50";
1709
+ function selectionControlContainerClasses({
1710
+ alignClassName,
1711
+ className,
1712
+ disabled
1713
+ }) {
1714
+ return cn(
1715
+ selectionControlContainerBaseClasses,
1716
+ alignClassName,
1717
+ disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
1718
+ className
1719
+ );
1720
+ }
1721
+
1722
+ // src/components/checkbox.tsx
1723
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1724
+ var Checkbox = React10.forwardRef(
1668
1725
  function Checkbox2({
1669
1726
  checked,
1670
1727
  className,
@@ -1677,23 +1734,21 @@ var Checkbox = React8.forwardRef(
1677
1734
  labelClassName,
1678
1735
  ...props
1679
1736
  }, ref) {
1680
- const generatedId = React8.useId();
1737
+ const generatedId = React10.useId();
1681
1738
  const resolvedId = id ?? generatedId;
1682
1739
  const descriptionId = description ? `${resolvedId}-description` : void 0;
1683
1740
  const alignClassName = description ? "items-start" : "items-center";
1684
- const indicatorOffsetClassName = "";
1685
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1741
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1686
1742
  "label",
1687
1743
  {
1688
1744
  htmlFor: resolvedId,
1689
- className: cn(
1690
- "flex w-fit gap-4",
1745
+ className: selectionControlContainerClasses({
1691
1746
  alignClassName,
1692
- disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
1693
- className
1694
- ),
1747
+ className,
1748
+ disabled
1749
+ }),
1695
1750
  children: [
1696
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1751
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1697
1752
  "input",
1698
1753
  {
1699
1754
  ref,
@@ -1707,41 +1762,24 @@ var Checkbox = React8.forwardRef(
1707
1762
  ...props
1708
1763
  }
1709
1764
  ),
1710
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1765
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1711
1766
  "span",
1712
1767
  {
1713
1768
  "aria-hidden": "true",
1714
1769
  className: cn(
1715
- "inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-[8px] border border-[color:var(--sofya-border-strong)] bg-card text-transparent transition-[background-color,border-color,box-shadow,color] duration-sofya ease-sofya peer-checked:border-primary peer-checked:bg-primary peer-checked:text-primary-foreground peer-focus-visible:ring-2 peer-focus-visible:ring-[color:var(--sofya-focus-ring-soft)] peer-focus-visible:ring-offset-0",
1716
- indicatorOffsetClassName
1770
+ "inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-[8px] text-transparent",
1771
+ selectionControlControlBaseClasses,
1772
+ "peer-checked:border-primary peer-checked:bg-primary peer-checked:text-primary-foreground peer-focus-visible:ring-2 peer-focus-visible:ring-[color:var(--sofya-focus-ring-soft)] peer-focus-visible:ring-offset-0"
1717
1773
  ),
1718
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1719
- "svg",
1720
- {
1721
- viewBox: "0 0 16 16",
1722
- fill: "none",
1723
- xmlns: "http://www.w3.org/2000/svg",
1724
- className: "h-4 w-4 shrink-0",
1725
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1726
- "path",
1727
- {
1728
- d: "M2.75 8.25L6.4 11.9L13.35 4.95",
1729
- stroke: "currentColor",
1730
- strokeWidth: "2.4",
1731
- strokeLinecap: "round",
1732
- strokeLinejoin: "round"
1733
- }
1734
- )
1735
- }
1736
- )
1774
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_icons_react3.IconCheck, { "aria-hidden": "true", className: "h-4 w-4 shrink-0", stroke: 2.4 })
1737
1775
  }
1738
1776
  ),
1739
- label || description ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "grid gap-2", children: [
1740
- label ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1777
+ label || description ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: selectionControlContentBaseClasses, children: [
1778
+ label ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1741
1779
  "span",
1742
1780
  {
1743
1781
  className: cn(
1744
- "text-[color:var(--sofya-text-default)] [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-[3px]",
1782
+ selectionControlLabelTextBaseClasses,
1745
1783
  labelClassName
1746
1784
  ),
1747
1785
  children: renderTextContent(label, {
@@ -1751,11 +1789,14 @@ var Checkbox = React8.forwardRef(
1751
1789
  })
1752
1790
  }
1753
1791
  ) : null,
1754
- description ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1792
+ description ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1755
1793
  "span",
1756
1794
  {
1757
1795
  id: descriptionId,
1758
- className: cn("text-muted-foreground", descriptionClassName),
1796
+ className: cn(
1797
+ selectionControlDescriptionTextBaseClasses,
1798
+ descriptionClassName
1799
+ ),
1759
1800
  children: renderTextContent(description, {
1760
1801
  as: "span",
1761
1802
  className: "text-muted-foreground",
@@ -1772,17 +1813,41 @@ var Checkbox = React8.forwardRef(
1772
1813
  Checkbox.displayName = "Checkbox";
1773
1814
 
1774
1815
  // src/components/dropdown.tsx
1775
- var React9 = __toESM(require("react"), 1);
1816
+ var React12 = __toESM(require("react"), 1);
1776
1817
  var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"), 1);
1777
- var import_jsx_runtime11 = require("react/jsx-runtime");
1778
- var dropdownVariantOptions = [
1779
- "card",
1780
- "panel",
1781
- "language",
1782
- "selected"
1783
- ];
1784
- var dropdownLanguageItems = [
1785
- { value: "en-US", label: "English", languageLocale: "en-US" },
1818
+
1819
+ // src/lib/use-controllable-state.ts
1820
+ var React11 = __toESM(require("react"), 1);
1821
+ function useControllableState({
1822
+ defaultValue,
1823
+ onChange,
1824
+ value
1825
+ }) {
1826
+ const isControlled = value !== void 0;
1827
+ const [uncontrolledValue, setUncontrolledValue] = React11.useState(defaultValue);
1828
+ const currentValue = isControlled ? value : uncontrolledValue;
1829
+ const setValue = React11.useCallback(
1830
+ (nextValue) => {
1831
+ if (!isControlled) {
1832
+ setUncontrolledValue(nextValue);
1833
+ }
1834
+ onChange?.(nextValue);
1835
+ },
1836
+ [isControlled, onChange]
1837
+ );
1838
+ return [currentValue, setValue, setUncontrolledValue];
1839
+ }
1840
+
1841
+ // src/components/dropdown.tsx
1842
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1843
+ var dropdownVariantOptions = [
1844
+ "card",
1845
+ "panel",
1846
+ "language",
1847
+ "selected"
1848
+ ];
1849
+ var dropdownLanguageItems = [
1850
+ { value: "en-US", label: "English", languageLocale: "en-US" },
1786
1851
  { value: "pt-BR", label: "Portuguese", languageLocale: "pt-BR" },
1787
1852
  { value: "es-ES", label: "Spanish", languageLocale: "es-ES" }
1788
1853
  ];
@@ -1818,7 +1883,7 @@ function resolveItemLanguageLocale(item) {
1818
1883
  }
1819
1884
  function DefaultDropdownTriggerIcon({ variant }) {
1820
1885
  if (variant === "selected") {
1821
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1886
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1822
1887
  Icon,
1823
1888
  {
1824
1889
  name: "caret-down",
@@ -1826,16 +1891,16 @@ function DefaultDropdownTriggerIcon({ variant }) {
1826
1891
  }
1827
1892
  );
1828
1893
  }
1829
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "flex h-8 w-8 items-center justify-center rounded-[6px]", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "caret-down", className: "!h-4 !w-4" }) });
1894
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex h-8 w-8 items-center justify-center rounded-[6px]", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "caret-down", className: "!h-4 !w-4" }) });
1830
1895
  }
1831
1896
  function DefaultDropdownItemIndicator() {
1832
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "check", size: 16 });
1897
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "check", size: 16 });
1833
1898
  }
1834
1899
  function DefaultDropdownInlineCheck() {
1835
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { name: "check", size: 14 });
1900
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "check", size: 14 });
1836
1901
  }
1837
1902
  function LanguageFlagIcon({ locale }) {
1838
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1903
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1839
1904
  "img",
1840
1905
  {
1841
1906
  alt: "",
@@ -1867,40 +1932,41 @@ function Dropdown({
1867
1932
  const isLanguageVariant = variant === "language";
1868
1933
  const isSelectedVariant = variant === "selected";
1869
1934
  const usesDefaultListStyle = !isLanguageVariant;
1870
- const resolvedItems = React9.useMemo(
1935
+ const resolvedItems = React12.useMemo(
1871
1936
  () => isLanguageVariant ? items && items.length > 0 ? items : dropdownLanguageItems : items ?? [],
1872
1937
  [isLanguageVariant, items]
1873
1938
  );
1874
1939
  const defaultUncontrolledValue = defaultValue ?? (isLanguageVariant ? resolvedItems[0]?.value : void 0);
1875
- const [internalValue, setInternalValue] = React9.useState(
1876
- defaultUncontrolledValue
1877
- );
1878
- const selectedValue = value ?? internalValue;
1940
+ const [selectedValue, setSelectedValue, setUncontrolledSelectedValue] = useControllableState({
1941
+ defaultValue: defaultUncontrolledValue,
1942
+ onChange: onValueChange,
1943
+ value
1944
+ });
1879
1945
  const radioValue = selectedValue ?? "";
1880
1946
  const selectedItem = resolvedItems.find(
1881
1947
  (item) => item.value === selectedValue
1882
1948
  );
1883
1949
  const hasSelectedItem = selectedItem !== void 0;
1884
1950
  const selectedLanguageLocale = resolveItemLanguageLocale(selectedItem);
1885
- React9.useEffect(() => {
1951
+ React12.useEffect(() => {
1886
1952
  if (value !== void 0) {
1887
1953
  return;
1888
1954
  }
1889
- const currentValueIsAvailable = internalValue !== void 0 && resolvedItems.some((item) => item.value === internalValue);
1955
+ const currentValueIsAvailable = selectedValue !== void 0 && resolvedItems.some((item) => item.value === selectedValue);
1890
1956
  if (!currentValueIsAvailable && defaultUncontrolledValue !== void 0) {
1891
- setInternalValue(defaultUncontrolledValue);
1957
+ setUncontrolledSelectedValue(defaultUncontrolledValue);
1892
1958
  }
1893
- }, [defaultUncontrolledValue, internalValue, resolvedItems, value]);
1894
- const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
1959
+ }, [
1960
+ defaultUncontrolledValue,
1961
+ resolvedItems,
1962
+ selectedValue,
1963
+ setUncontrolledSelectedValue,
1964
+ value
1965
+ ]);
1966
+ const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
1895
1967
  const triggerLabel = selectedItem?.triggerLabel ?? selectedItem?.label ?? placeholder;
1896
1968
  const selectedTriggerToneClassName = isSelectedVariant ? hasSelectedItem ? "text-foreground" : "text-[color:var(--sofya-text-soft)]" : void 0;
1897
- function handleValueChange(nextValue) {
1898
- if (value === void 0) {
1899
- setInternalValue(nextValue);
1900
- }
1901
- onValueChange?.(nextValue);
1902
- }
1903
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1969
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1904
1970
  DropdownMenuPrimitive.Root,
1905
1971
  {
1906
1972
  defaultOpen,
@@ -1908,7 +1974,7 @@ function Dropdown({
1908
1974
  onOpenChange,
1909
1975
  open,
1910
1976
  children: [
1911
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1977
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1912
1978
  Button,
1913
1979
  {
1914
1980
  type: "button",
@@ -1921,14 +1987,14 @@ function Dropdown({
1921
1987
  triggerClassName
1922
1988
  ),
1923
1989
  rightIcon: resolvedTriggerIcon,
1924
- children: isLanguageVariant ? null : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
1990
+ children: isLanguageVariant ? null : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
1925
1991
  as: "span",
1926
1992
  className: "block min-w-0 truncate text-inherit",
1927
1993
  size: "body"
1928
1994
  }) })
1929
1995
  }
1930
1996
  ) }),
1931
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1997
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1932
1998
  DropdownMenuPrimitive.Content,
1933
1999
  {
1934
2000
  align,
@@ -1938,18 +2004,18 @@ function Dropdown({
1938
2004
  dropdownContentClasses[variant],
1939
2005
  contentClassName
1940
2006
  ),
1941
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2007
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1942
2008
  DropdownMenuPrimitive.RadioGroup,
1943
2009
  {
1944
2010
  value: radioValue,
1945
- onValueChange: handleValueChange,
2011
+ onValueChange: setSelectedValue,
1946
2012
  className: "grid gap-2",
1947
2013
  children: resolvedItems.map((item) => {
1948
2014
  const isSelected = item.value === selectedValue;
1949
2015
  const itemLanguageLocale = resolveItemLanguageLocale(item);
1950
- const indicator = item.indicator ?? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DefaultDropdownItemIndicator, {});
1951
- const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
1952
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2016
+ const indicator = item.indicator ?? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownItemIndicator, {});
2017
+ const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
2018
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1953
2019
  DropdownMenuPrimitive.RadioItem,
1954
2020
  {
1955
2021
  value: item.value,
@@ -1960,7 +2026,7 @@ function Dropdown({
1960
2026
  dropdownItemClasses[variant],
1961
2027
  itemClassName
1962
2028
  ),
1963
- children: usesDefaultListStyle ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2029
+ children: usesDefaultListStyle ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1964
2030
  "span",
1965
2031
  {
1966
2032
  "data-dropdown-item-body": true,
@@ -1969,32 +2035,32 @@ function Dropdown({
1969
2035
  isSelected ? "bg-[color:var(--sofya-surface-selected)]" : "bg-transparent"
1970
2036
  ),
1971
2037
  children: [
1972
- itemIcon ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
1973
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "truncate", children: renderTextContent(item.label, {
2038
+ itemIcon ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
2039
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate", children: renderTextContent(item.label, {
1974
2040
  as: "span",
1975
2041
  className: "block truncate text-inherit",
1976
2042
  size: "body"
1977
2043
  }) }),
1978
- isSelected ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2044
+ isSelected ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1979
2045
  "span",
1980
2046
  {
1981
2047
  "aria-hidden": "true",
1982
2048
  className: "flex h-[14px] w-[14px] shrink-0 items-center justify-center",
1983
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DefaultDropdownInlineCheck, {})
2049
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DefaultDropdownInlineCheck, {})
1984
2050
  }
1985
2051
  ) : null
1986
2052
  ]
1987
2053
  }
1988
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
1989
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
1990
- itemIcon ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
1991
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "truncate", children: renderTextContent(item.label, {
2054
+ ) : /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
2055
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
2056
+ itemIcon ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
2057
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate", children: renderTextContent(item.label, {
1992
2058
  as: "span",
1993
2059
  className: "block truncate text-inherit",
1994
2060
  size: "body"
1995
2061
  }) })
1996
2062
  ] }),
1997
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2063
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1998
2064
  "span",
1999
2065
  {
2000
2066
  "aria-hidden": "true",
@@ -2021,14 +2087,14 @@ function Dropdown({
2021
2087
  }
2022
2088
 
2023
2089
  // src/components/dialog.tsx
2024
- var React10 = __toESM(require("react"), 1);
2090
+ var React13 = __toESM(require("react"), 1);
2025
2091
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
2026
- var import_jsx_runtime12 = require("react/jsx-runtime");
2092
+ var import_jsx_runtime13 = require("react/jsx-runtime");
2027
2093
  var Dialog = DialogPrimitive.Root;
2028
2094
  var DialogTrigger = DialogPrimitive.Trigger;
2029
2095
  var DialogPortal = DialogPrimitive.Portal;
2030
2096
  var DialogClose = DialogPrimitive.Close;
2031
- var DialogOverlay = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2097
+ var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2032
2098
  DialogPrimitive.Overlay,
2033
2099
  {
2034
2100
  ref,
@@ -2040,7 +2106,7 @@ var DialogOverlay = React10.forwardRef(({ className, ...props }, ref) => /* @__P
2040
2106
  }
2041
2107
  ));
2042
2108
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
2043
- var DialogContent = React10.forwardRef(
2109
+ var DialogContent = React13.forwardRef(
2044
2110
  ({
2045
2111
  className,
2046
2112
  children,
@@ -2053,9 +2119,9 @@ var DialogContent = React10.forwardRef(
2053
2119
  const dialogCardStyle = {
2054
2120
  "--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
2055
2121
  };
2056
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(DialogPortal, { children: [
2057
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DialogOverlay, { className: overlayClassName }),
2058
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2122
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(DialogPortal, { children: [
2123
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogOverlay, { className: overlayClassName }),
2124
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2059
2125
  DialogPrimitive.Content,
2060
2126
  {
2061
2127
  ref,
@@ -2064,7 +2130,7 @@ var DialogContent = React10.forwardRef(
2064
2130
  className
2065
2131
  ),
2066
2132
  ...props,
2067
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2133
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2068
2134
  Card,
2069
2135
  {
2070
2136
  variant: cardVariant,
@@ -2075,15 +2141,15 @@ var DialogContent = React10.forwardRef(
2075
2141
  style: dialogCardStyle,
2076
2142
  children: [
2077
2143
  children,
2078
- showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2144
+ showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2079
2145
  Button,
2080
2146
  {
2081
2147
  type: "button",
2082
- variant: "icon",
2148
+ variant: "ghost",
2083
2149
  size: "icon",
2084
2150
  "aria-label": "Close",
2085
- leftIcon: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Icon, { name: "x", size: 18 }),
2086
- className: "absolute right-4 top-4 z-10 h-11 w-11 rounded-full bg-background text-muted-foreground hover:bg-muted hover:text-foreground"
2151
+ leftIcon: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "x", size: 18 }),
2152
+ className: "absolute right-4 top-4 z-10 text-muted-foreground hover:text-foreground"
2087
2153
  }
2088
2154
  ) }) : null
2089
2155
  ]
@@ -2096,10 +2162,10 @@ var DialogContent = React10.forwardRef(
2096
2162
  );
2097
2163
  DialogContent.displayName = DialogPrimitive.Content.displayName;
2098
2164
  function DialogHeader({ className, ...props }) {
2099
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: cn("grid gap-2 px-6 pt-6 pr-16 text-left", className), ...props });
2165
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn("grid gap-2 px-6 pt-6 pr-16 text-left", className), ...props });
2100
2166
  }
2101
2167
  function DialogFooter({ className, ...props }) {
2102
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2168
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2103
2169
  "div",
2104
2170
  {
2105
2171
  className: cn(
@@ -2110,11 +2176,11 @@ function DialogFooter({ className, ...props }) {
2110
2176
  }
2111
2177
  );
2112
2178
  }
2113
- var DialogCancel = React10.forwardRef(
2114
- ({ type = "button", variant = "outline", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Button, { ref, type, variant, ...props }) })
2179
+ var DialogCancel = React13.forwardRef(
2180
+ ({ type = "button", variant = "outline", ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Button, { ref, type, variant, ...props }) })
2115
2181
  );
2116
2182
  DialogCancel.displayName = "DialogCancel";
2117
- var DialogTitle = React10.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2183
+ var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2118
2184
  DialogPrimitive.Title,
2119
2185
  {
2120
2186
  ref,
@@ -2128,7 +2194,7 @@ var DialogTitle = React10.forwardRef(({ children, className, ...props }, ref) =>
2128
2194
  }
2129
2195
  ));
2130
2196
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
2131
- var DialogDescription = React10.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2197
+ var DialogDescription = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2132
2198
  DialogPrimitive.Description,
2133
2199
  {
2134
2200
  ref,
@@ -2144,9 +2210,9 @@ var DialogDescription = React10.forwardRef(({ children, className, ...props }, r
2144
2210
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
2145
2211
 
2146
2212
  // src/components/empty.tsx
2147
- var React11 = __toESM(require("react"), 1);
2213
+ var React14 = __toESM(require("react"), 1);
2148
2214
  var import_class_variance_authority5 = require("class-variance-authority");
2149
- var import_jsx_runtime13 = require("react/jsx-runtime");
2215
+ var import_jsx_runtime14 = require("react/jsx-runtime");
2150
2216
  var emptyMediaVariantOptions = ["default", "icon"];
2151
2217
  var emptyMediaVariants = (0, import_class_variance_authority5.cva)(
2152
2218
  "inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
@@ -2162,11 +2228,11 @@ var emptyMediaVariants = (0, import_class_variance_authority5.cva)(
2162
2228
  }
2163
2229
  }
2164
2230
  );
2165
- var EmptyMedia = React11.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
2166
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
2231
+ var EmptyMedia = React14.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
2232
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
2167
2233
  });
2168
2234
  function EmptyHeader({ className, ...props }) {
2169
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2235
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2170
2236
  "div",
2171
2237
  {
2172
2238
  className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
@@ -2175,7 +2241,7 @@ function EmptyHeader({ className, ...props }) {
2175
2241
  );
2176
2242
  }
2177
2243
  function EmptyTitle({ children, className, ...props }) {
2178
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2244
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2179
2245
  "h2",
2180
2246
  {
2181
2247
  className: cn("text-foreground", className),
@@ -2193,7 +2259,7 @@ function EmptyDescription({
2193
2259
  className,
2194
2260
  ...props
2195
2261
  }) {
2196
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2262
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2197
2263
  "p",
2198
2264
  {
2199
2265
  className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
@@ -2207,7 +2273,7 @@ function EmptyDescription({
2207
2273
  );
2208
2274
  }
2209
2275
  function EmptyContent({ children, className, ...props }) {
2210
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2276
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2211
2277
  "div",
2212
2278
  {
2213
2279
  className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
@@ -2218,9 +2284,9 @@ function EmptyContent({ children, className, ...props }) {
2218
2284
  }
2219
2285
  );
2220
2286
  }
2221
- var Empty = React11.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
2222
- const hasCustomChildren = React11.Children.count(children) > 0;
2223
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2287
+ var Empty = React14.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
2288
+ const hasCustomChildren = React14.Children.count(children) > 0;
2289
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2224
2290
  "div",
2225
2291
  {
2226
2292
  ref,
@@ -2229,13 +2295,13 @@ var Empty = React11.forwardRef(function Empty2({ children, className, content, d
2229
2295
  className
2230
2296
  ),
2231
2297
  ...props,
2232
- children: hasCustomChildren ? children : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
2233
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(EmptyHeader, { children: [
2234
- media ?? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: "folders", size: 28 }) }),
2235
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EmptyTitle, { children: title ?? "Nada por aqui" }),
2236
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
2298
+ children: hasCustomChildren ? children : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
2299
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(EmptyHeader, { children: [
2300
+ media ?? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { name: "folders", size: 28 }) }),
2301
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyTitle, { children: title ?? "Nada por aqui" }),
2302
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
2237
2303
  ] }),
2238
- content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EmptyContent, { children: content }) : null
2304
+ content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(EmptyContent, { children: content }) : null
2239
2305
  ] })
2240
2306
  }
2241
2307
  );
@@ -2248,104 +2314,73 @@ EmptyDescription.displayName = "EmptyDescription";
2248
2314
  EmptyContent.displayName = "EmptyContent";
2249
2315
 
2250
2316
  // src/components/input.tsx
2251
- var React13 = __toESM(require("react"), 1);
2317
+ var React17 = __toESM(require("react"), 1);
2252
2318
  var import_input_otp2 = require("input-otp");
2253
- var import_react2 = require("motion/react");
2254
2319
 
2255
- // src/components/input-otp.tsx
2256
- var React12 = __toESM(require("react"), 1);
2257
- var import_input_otp = require("input-otp");
2258
- var import_jsx_runtime14 = require("react/jsx-runtime");
2259
- var InputOTP = React12.forwardRef(({ className, containerClassName, ...props }, ref) => {
2260
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2261
- import_input_otp.OTPInput,
2262
- {
2263
- ref,
2264
- containerClassName: cn(
2265
- "flex items-center gap-4 has-[:disabled]:opacity-50",
2266
- containerClassName
2267
- ),
2268
- className: cn("disabled:cursor-not-allowed", className),
2269
- ...props
2270
- }
2271
- );
2272
- });
2273
- InputOTP.displayName = "InputOTP";
2274
- var InputOTPGroup = React12.forwardRef(({ className, ...props }, ref) => {
2275
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2276
- "div",
2320
+ // src/lib/field-shell.tsx
2321
+ var import_jsx_runtime15 = require("react/jsx-runtime");
2322
+ function FieldLabel({
2323
+ children,
2324
+ className,
2325
+ htmlFor,
2326
+ textClassName = "block text-[color:var(--sofya-text-default)]",
2327
+ textSize = "body",
2328
+ textStyle = {
2329
+ fontWeight: 500
2330
+ }
2331
+ }) {
2332
+ if (!children) {
2333
+ return null;
2334
+ }
2335
+ const Component = htmlFor ? "label" : "div";
2336
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2337
+ Component,
2277
2338
  {
2278
- ref,
2279
- className: cn(
2280
- "flex overflow-hidden rounded-[12px] border border-[color:var(--sofya-border-hover)] bg-card",
2281
- className
2282
- ),
2283
- ...props
2339
+ className: cn("text-[color:var(--sofya-text-default)]", className),
2340
+ htmlFor,
2341
+ children: renderTextContent(children, {
2342
+ as: "span",
2343
+ className: textClassName,
2344
+ size: textSize,
2345
+ style: textStyle
2346
+ })
2284
2347
  }
2285
2348
  );
2286
- });
2287
- InputOTPGroup.displayName = "InputOTPGroup";
2288
- var InputOTPSlot = React12.forwardRef(
2289
- ({ className, index, ...props }, ref) => {
2290
- const otpContext = React12.useContext(import_input_otp.OTPInputContext);
2291
- const slot = otpContext.slots[index];
2292
- if (!slot) {
2293
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2294
- "div",
2295
- {
2296
- ref,
2297
- className: cn(
2298
- "relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card last:border-r-0",
2299
- className
2300
- ),
2301
- ...props
2302
- }
2303
- );
2304
- }
2305
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
2306
- "div",
2349
+ }
2350
+ function FieldShell({
2351
+ containerClassName,
2352
+ control,
2353
+ label,
2354
+ labelClassName,
2355
+ labelHtmlFor,
2356
+ labelTextClassName,
2357
+ labelTextSize,
2358
+ labelTextStyle
2359
+ }) {
2360
+ if (!label && !containerClassName) {
2361
+ return control;
2362
+ }
2363
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn("grid w-full gap-2", containerClassName), children: [
2364
+ label ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2365
+ FieldLabel,
2307
2366
  {
2308
- ref,
2309
- className: cn(
2310
- "relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card text-[40px] font-medium leading-none tracking-[-0.04em] text-[color:var(--sofya-text-default)] transition-[background-color,box-shadow,border-color,color] duration-sofya ease-sofya last:border-r-0",
2311
- slot.isActive && "z-10 border-transparent bg-[color:var(--sofya-surface-hover)] text-primary shadow-[var(--sofya-shadow-otp-focus)] ring-2 ring-inset ring-[color:var(--sofya-focus-ring-strong)]",
2312
- className
2313
- ),
2314
- ...props,
2315
- children: [
2316
- slot.char ?? null,
2317
- slot.hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
2318
- ]
2367
+ className: labelClassName,
2368
+ htmlFor: labelHtmlFor,
2369
+ textClassName: labelTextClassName,
2370
+ textSize: labelTextSize,
2371
+ textStyle: labelTextStyle,
2372
+ children: label
2319
2373
  }
2320
- );
2321
- }
2322
- );
2323
- InputOTPSlot.displayName = "InputOTPSlot";
2324
- var InputOTPSeparator = React12.forwardRef(({ className, ...props }, ref) => {
2325
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2326
- "div",
2327
- {
2328
- ref,
2329
- role: "separator",
2330
- className: cn(
2331
- "flex items-center justify-center px-2 text-[28px] leading-none text-[color:var(--sofya-text-soft)]",
2332
- className
2333
- ),
2334
- ...props,
2335
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { "aria-hidden": "true", children: "." })
2336
- }
2337
- );
2338
- });
2339
- InputOTPSeparator.displayName = "InputOTPSeparator";
2374
+ ) : null,
2375
+ control
2376
+ ] });
2377
+ }
2340
2378
 
2341
- // src/components/input.tsx
2342
- var import_jsx_runtime15 = require("react/jsx-runtime");
2343
- var inputVariantOptions = [
2344
- "default",
2345
- "search",
2346
- "otp",
2347
- "upload"
2348
- ];
2379
+ // src/components/input-upload.tsx
2380
+ var React15 = __toESM(require("react"), 1);
2381
+ var import_icons_react4 = require("@tabler/icons-react");
2382
+ var import_react2 = require("motion/react");
2383
+ var import_jsx_runtime16 = require("react/jsx-runtime");
2349
2384
  var uploadKindOptions = ["document", "image", "video"];
2350
2385
  var uploadAcceptByKind = {
2351
2386
  document: ".pdf,.doc,.docx,.txt,.rtf,.odt,.jpg,.jpeg,.png,.webp,.gif",
@@ -2392,7 +2427,7 @@ function mergeUploadFiles(currentFiles, nextFiles, multiple) {
2392
2427
  return Array.from(filesBySignature.values());
2393
2428
  }
2394
2429
  var uploadListItemTransition = {
2395
- duration: 0.2,
2430
+ duration: 0.18,
2396
2431
  ease: [0.22, 1, 0.36, 1]
2397
2432
  };
2398
2433
  function formatUploadFileSize(bytes) {
@@ -2438,96 +2473,12 @@ function resolveUploadFileVisualKind(file, fallbackKind) {
2438
2473
  }
2439
2474
  return "document";
2440
2475
  }
2441
- function InputShell({
2442
- containerClassName,
2443
- control,
2444
- label,
2445
- labelClassName,
2446
- resolvedId
2447
- }) {
2448
- if (!label && !containerClassName) {
2449
- return control;
2450
- }
2451
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn("grid w-full gap-2", containerClassName), children: [
2452
- label ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2453
- "label",
2454
- {
2455
- className: cn(
2456
- "text-[color:var(--sofya-text-default)]",
2457
- labelClassName
2458
- ),
2459
- htmlFor: resolvedId,
2460
- children: renderTextContent(label, {
2461
- as: "span",
2462
- className: "block text-[color:var(--sofya-text-default)]",
2463
- size: "body",
2464
- style: {
2465
- fontWeight: 500
2466
- }
2467
- })
2468
- }
2469
- ) : null,
2470
- control
2471
- ] });
2472
- }
2473
- function UploadInputShell({
2474
- containerClassName,
2475
- control,
2476
- label,
2477
- labelClassName,
2478
- optionalLabel
2479
- }) {
2480
- if (!label && !optionalLabel && !containerClassName) {
2481
- return control;
2482
- }
2483
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: cn("grid w-full gap-2", containerClassName), children: [
2484
- label || optionalLabel ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2485
- "div",
2486
- {
2487
- className: cn(
2488
- "text-[color:var(--sofya-text-default)]",
2489
- labelClassName
2490
- ),
2491
- children: [
2492
- renderTextContent(label, {
2493
- as: "span",
2494
- className: "text-[color:var(--sofya-text-default)]",
2495
- size: "body",
2496
- style: {
2497
- fontWeight: 700
2498
- }
2499
- }),
2500
- optionalLabel ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(optionalLabel, {
2501
- as: "span",
2502
- className: "text-[color:var(--sofya-text-subtle)]",
2503
- size: "tiny"
2504
- }) }) : null
2505
- ]
2506
- }
2507
- ) : null,
2508
- control
2509
- ] });
2510
- }
2511
2476
  function UploadGlyph({ className }) {
2512
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2513
- "svg",
2477
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2478
+ import_icons_react4.IconUpload,
2514
2479
  {
2515
2480
  "aria-hidden": "true",
2516
- className: cn("inline-block shrink-0 align-middle", className),
2517
- fill: "none",
2518
- focusable: "false",
2519
- viewBox: "0 0 20 20",
2520
- xmlns: "http://www.w3.org/2000/svg",
2521
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2522
- "path",
2523
- {
2524
- d: "M10 12.5V3.75M6.66667 7.08333L10 3.75L13.3333 7.08333M5 11.6667V14.1667C5 14.6269 5.3731 15 5.83333 15H14.1667C14.6269 15 15 14.6269 15 14.1667V11.6667",
2525
- stroke: "currentColor",
2526
- strokeLinecap: "round",
2527
- strokeLinejoin: "round",
2528
- strokeWidth: "2"
2529
- }
2530
- )
2481
+ className: cn("inline-block shrink-0 align-middle", className)
2531
2482
  }
2532
2483
  );
2533
2484
  }
@@ -2536,120 +2487,32 @@ function UploadFileTypeGlyph({
2536
2487
  kind
2537
2488
  }) {
2538
2489
  if (kind === "image") {
2539
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2540
- "svg",
2490
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2491
+ import_icons_react4.IconPhoto,
2541
2492
  {
2542
2493
  "aria-hidden": "true",
2543
- className: cn("inline-block shrink-0 align-middle", className),
2544
- fill: "none",
2545
- focusable: "false",
2546
- viewBox: "0 0 18 18",
2547
- xmlns: "http://www.w3.org/2000/svg",
2548
- children: [
2549
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2550
- "rect",
2551
- {
2552
- x: "2.5",
2553
- y: "3",
2554
- width: "13",
2555
- height: "12",
2556
- rx: "2.5",
2557
- stroke: "currentColor",
2558
- strokeWidth: "1.5"
2559
- }
2560
- ),
2561
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("circle", { cx: "6.75", cy: "7.25", r: "1.25", fill: "currentColor" }),
2562
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2563
- "path",
2564
- {
2565
- d: "M4.5 12L7.25 9.25C7.64052 8.85948 8.27368 8.85948 8.66421 9.25L9.5 10.0858C9.89052 10.4763 10.5237 10.4763 10.9142 10.0858L11.25 9.75C11.6405 9.35948 12.2737 9.35948 12.6642 9.75L13.5 10.5858",
2566
- stroke: "currentColor",
2567
- strokeLinecap: "round",
2568
- strokeLinejoin: "round",
2569
- strokeWidth: "1.5"
2570
- }
2571
- )
2572
- ]
2494
+ className: cn("inline-block shrink-0 align-middle", className)
2573
2495
  }
2574
2496
  );
2575
2497
  }
2576
2498
  if (kind === "video") {
2577
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2578
- "svg",
2499
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2500
+ import_icons_react4.IconVideo,
2579
2501
  {
2580
2502
  "aria-hidden": "true",
2581
- className: cn("inline-block shrink-0 align-middle", className),
2582
- fill: "none",
2583
- focusable: "false",
2584
- viewBox: "0 0 18 18",
2585
- xmlns: "http://www.w3.org/2000/svg",
2586
- children: [
2587
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2588
- "rect",
2589
- {
2590
- x: "2.5",
2591
- y: "4",
2592
- width: "13",
2593
- height: "10",
2594
- rx: "2.5",
2595
- stroke: "currentColor",
2596
- strokeWidth: "1.5"
2597
- }
2598
- ),
2599
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2600
- "path",
2601
- {
2602
- d: "M8 7.35C8 7.03889 8.33624 6.84443 8.60583 7.00018L11.1583 8.47518C11.4279 8.63094 11.4279 9.02088 11.1583 9.17664L8.60583 10.6516C8.33624 10.8074 8 10.6129 8 10.3018V7.35Z",
2603
- fill: "currentColor"
2604
- }
2605
- )
2606
- ]
2503
+ className: cn("inline-block shrink-0 align-middle", className)
2607
2504
  }
2608
2505
  );
2609
2506
  }
2610
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2611
- "svg",
2507
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2508
+ import_icons_react4.IconFileText,
2612
2509
  {
2613
2510
  "aria-hidden": "true",
2614
- className: cn("inline-block shrink-0 align-middle", className),
2615
- fill: "none",
2616
- focusable: "false",
2617
- viewBox: "0 0 18 18",
2618
- xmlns: "http://www.w3.org/2000/svg",
2619
- children: [
2620
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2621
- "path",
2622
- {
2623
- d: "M7.5 2.25H5C3.89543 2.25 3 3.14543 3 4.25V13.75C3 14.8546 3.89543 15.75 5 15.75H13C14.1046 15.75 15 14.8546 15 13.75V8.25L11.25 4.5H9.75C8.50736 4.5 7.5 3.49264 7.5 2.25Z",
2624
- stroke: "currentColor",
2625
- strokeLinejoin: "round",
2626
- strokeWidth: "1.5"
2627
- }
2628
- ),
2629
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2630
- "path",
2631
- {
2632
- d: "M7.5 2.25V4.25C7.5 5.35457 8.39543 6.25 9.5 6.25H11.5",
2633
- stroke: "currentColor",
2634
- strokeLinecap: "round",
2635
- strokeLinejoin: "round",
2636
- strokeWidth: "1.5"
2637
- }
2638
- ),
2639
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2640
- "path",
2641
- {
2642
- d: "M6 10H12M6 12.5H10",
2643
- stroke: "currentColor",
2644
- strokeLinecap: "round",
2645
- strokeWidth: "1.5"
2646
- }
2647
- )
2648
- ]
2511
+ className: cn("inline-block shrink-0 align-middle", className)
2649
2512
  }
2650
2513
  );
2651
2514
  }
2652
- var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2515
+ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
2653
2516
  accept,
2654
2517
  "aria-label": ariaLabel,
2655
2518
  className,
@@ -2663,17 +2526,17 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2663
2526
  resolvedId,
2664
2527
  ...uploadProps
2665
2528
  }, ref) {
2666
- const inputRef = React13.useRef(null);
2667
- const [isDragActive, setIsDragActive] = React13.useState(false);
2668
- const [selectedFiles, setSelectedFiles] = React13.useState([]);
2529
+ const inputRef = React15.useRef(null);
2530
+ const [isDragActive, setIsDragActive] = React15.useState(false);
2531
+ const [selectedFiles, setSelectedFiles] = React15.useState([]);
2669
2532
  const resolvedMultiple = multiple ?? true;
2670
2533
  const prefersReducedMotion = (0, import_react2.useReducedMotion)();
2671
- React13.useImperativeHandle(ref, () => inputRef.current);
2534
+ React15.useImperativeHandle(ref, () => inputRef.current);
2672
2535
  const resolvedAccept = accept ?? uploadAcceptByKind[uploadKind];
2673
2536
  const resolvedAriaLabel = ariaLabel ?? uploadAriaLabelByKind[uploadKind];
2674
2537
  const resolvedTitle = uploadTitle ?? "Arraste arquivos aqui ou clique para selecionar";
2675
2538
  const resolvedDescription = uploadDescription ?? uploadDescriptionByKind[uploadKind];
2676
- const syncSelectedFiles = React13.useCallback(
2539
+ const syncSelectedFiles = React15.useCallback(
2677
2540
  (files) => {
2678
2541
  const normalizedFiles = resolvedMultiple ? files : files.slice(0, 1);
2679
2542
  setSelectedFiles(normalizedFiles);
@@ -2681,7 +2544,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2681
2544
  },
2682
2545
  [onFilesChange, resolvedMultiple]
2683
2546
  );
2684
- const applyFilesToInput = React13.useCallback((files) => {
2547
+ const applyFilesToInput = React15.useCallback((files) => {
2685
2548
  const inputElement = inputRef.current;
2686
2549
  if (!inputElement || typeof DataTransfer === "undefined") {
2687
2550
  return false;
@@ -2700,7 +2563,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2700
2563
  return false;
2701
2564
  }
2702
2565
  }, []);
2703
- const handleInputChange = React13.useCallback(
2566
+ const handleInputChange = React15.useCallback(
2704
2567
  (event) => {
2705
2568
  const nextFiles = mergeUploadFiles(
2706
2569
  selectedFiles,
@@ -2719,12 +2582,12 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2719
2582
  syncSelectedFiles
2720
2583
  ]
2721
2584
  );
2722
- const openPicker = React13.useCallback(() => {
2585
+ const openPicker = React15.useCallback(() => {
2723
2586
  if (!disabled) {
2724
2587
  inputRef.current?.click();
2725
2588
  }
2726
2589
  }, [disabled]);
2727
- const handleKeyDown = React13.useCallback(
2590
+ const handleKeyDown = React15.useCallback(
2728
2591
  (event) => {
2729
2592
  if (disabled) {
2730
2593
  return;
@@ -2736,7 +2599,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2736
2599
  },
2737
2600
  [disabled, openPicker]
2738
2601
  );
2739
- const handleDragEnter = React13.useCallback(
2602
+ const handleDragEnter = React15.useCallback(
2740
2603
  (event) => {
2741
2604
  event.preventDefault();
2742
2605
  if (!disabled) {
@@ -2745,7 +2608,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2745
2608
  },
2746
2609
  [disabled]
2747
2610
  );
2748
- const handleDragLeave = React13.useCallback(
2611
+ const handleDragLeave = React15.useCallback(
2749
2612
  (event) => {
2750
2613
  if (disabled) {
2751
2614
  return;
@@ -2758,7 +2621,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2758
2621
  },
2759
2622
  [disabled]
2760
2623
  );
2761
- const handleDragOver = React13.useCallback(
2624
+ const handleDragOver = React15.useCallback(
2762
2625
  (event) => {
2763
2626
  event.preventDefault();
2764
2627
  if (disabled) {
@@ -2769,7 +2632,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2769
2632
  },
2770
2633
  [disabled]
2771
2634
  );
2772
- const handleDrop = React13.useCallback(
2635
+ const handleDrop = React15.useCallback(
2773
2636
  (event) => {
2774
2637
  event.preventDefault();
2775
2638
  if (disabled) {
@@ -2802,7 +2665,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2802
2665
  syncSelectedFiles
2803
2666
  ]
2804
2667
  );
2805
- const handleRemoveFile = React13.useCallback(
2668
+ const handleRemoveFile = React15.useCallback(
2806
2669
  (fileIndex) => {
2807
2670
  if (disabled) {
2808
2671
  return;
@@ -2813,8 +2676,8 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2813
2676
  },
2814
2677
  [applyFilesToInput, disabled, selectedFiles, syncSelectedFiles]
2815
2678
  );
2816
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "grid w-full gap-4", children: [
2817
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2679
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "grid w-full gap-4", children: [
2680
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2818
2681
  "input",
2819
2682
  {
2820
2683
  ...uploadProps,
@@ -2829,7 +2692,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2829
2692
  onChange: handleInputChange
2830
2693
  }
2831
2694
  ),
2832
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2695
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2833
2696
  "label",
2834
2697
  {
2835
2698
  "aria-disabled": disabled || void 0,
@@ -2849,8 +2712,8 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2849
2712
  onDrop: handleDrop,
2850
2713
  onKeyDown: handleKeyDown,
2851
2714
  children: [
2852
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(UploadGlyph, { className: "size-[18px]" }) }),
2853
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
2715
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(UploadGlyph, { className: "size-[18px]" }) }),
2716
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
2854
2717
  as: "span",
2855
2718
  className: "block text-[color:var(--sofya-text-default)]",
2856
2719
  size: "body",
@@ -2858,7 +2721,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2858
2721
  fontWeight: 500
2859
2722
  }
2860
2723
  }) }),
2861
- resolvedDescription ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
2724
+ resolvedDescription ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
2862
2725
  as: "span",
2863
2726
  className: "block text-[color:var(--sofya-text-subtle)]",
2864
2727
  size: "tiny"
@@ -2866,28 +2729,27 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2866
2729
  ]
2867
2730
  }
2868
2731
  ),
2869
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react2.motion.div, { layout: true, role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react2.AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
2732
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react2.AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
2870
2733
  const fileKey = resolveUploadFileSignature(file);
2871
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2734
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2872
2735
  import_react2.motion.div,
2873
2736
  {
2874
- layout: true,
2875
2737
  role: "listitem",
2876
2738
  className: "overflow-hidden",
2877
- initial: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: 10, scale: 0.98, height: 0 },
2878
- animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0, scale: 1, height: "auto" },
2879
- exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, scale: 0.98, height: 0 },
2739
+ initial: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: 8 },
2740
+ animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0 },
2741
+ exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: -6 },
2880
2742
  transition: uploadListItemTransition,
2881
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(Card, { variant: "panel", className: "flex items-center gap-4 p-4", children: [
2882
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2743
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Card, { variant: "panel", className: "flex items-center gap-4 p-4", children: [
2744
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2883
2745
  UploadFileTypeGlyph,
2884
2746
  {
2885
2747
  className: "size-[18px]",
2886
2748
  kind: resolveUploadFileVisualKind(file, uploadKind)
2887
2749
  }
2888
2750
  ) }),
2889
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "min-w-0 flex-1", children: [
2890
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
2751
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "min-w-0 flex-1", children: [
2752
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
2891
2753
  as: "span",
2892
2754
  className: "block truncate text-[color:var(--sofya-text-default)]",
2893
2755
  size: "body",
@@ -2895,7 +2757,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2895
2757
  fontWeight: 500
2896
2758
  }
2897
2759
  }) }),
2898
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
2760
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
2899
2761
  `${resolveUploadFileBadge(
2900
2762
  file
2901
2763
  )} \xB7 ${formatUploadFileSize(file.size)}`,
@@ -2906,7 +2768,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2906
2768
  }
2907
2769
  ) })
2908
2770
  ] }),
2909
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2771
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2910
2772
  "button",
2911
2773
  {
2912
2774
  "aria-label": `Remover ${file.name}`,
@@ -2918,7 +2780,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2918
2780
  event.stopPropagation();
2919
2781
  handleRemoveFile(index);
2920
2782
  },
2921
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2783
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2922
2784
  Icon,
2923
2785
  {
2924
2786
  "aria-hidden": "true",
@@ -2936,9 +2798,104 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2936
2798
  }) }) })
2937
2799
  ] });
2938
2800
  });
2939
- UploadInputControl.displayName = "UploadInputControl";
2940
- var Input = React13.forwardRef((props, ref) => {
2941
- const generatedId = React13.useId();
2801
+ UploadInputControl.displayName = "UploadInputControl";
2802
+
2803
+ // src/components/input-otp.tsx
2804
+ var React16 = __toESM(require("react"), 1);
2805
+ var import_input_otp = require("input-otp");
2806
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2807
+ var InputOTP = React16.forwardRef(({ className, containerClassName, ...props }, ref) => {
2808
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2809
+ import_input_otp.OTPInput,
2810
+ {
2811
+ ref,
2812
+ containerClassName: cn(
2813
+ "flex items-center gap-4 has-[:disabled]:opacity-50",
2814
+ containerClassName
2815
+ ),
2816
+ className: cn("disabled:cursor-not-allowed", className),
2817
+ ...props
2818
+ }
2819
+ );
2820
+ });
2821
+ InputOTP.displayName = "InputOTP";
2822
+ var InputOTPGroup = React16.forwardRef(({ className, ...props }, ref) => {
2823
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2824
+ "div",
2825
+ {
2826
+ ref,
2827
+ className: cn(
2828
+ "flex overflow-hidden rounded-[12px] border border-[color:var(--sofya-border-hover)] bg-card",
2829
+ className
2830
+ ),
2831
+ ...props
2832
+ }
2833
+ );
2834
+ });
2835
+ InputOTPGroup.displayName = "InputOTPGroup";
2836
+ var InputOTPSlot = React16.forwardRef(
2837
+ ({ className, index, ...props }, ref) => {
2838
+ const otpContext = React16.useContext(import_input_otp.OTPInputContext);
2839
+ const slot = otpContext.slots[index];
2840
+ if (!slot) {
2841
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2842
+ "div",
2843
+ {
2844
+ ref,
2845
+ className: cn(
2846
+ "relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card last:border-r-0",
2847
+ className
2848
+ ),
2849
+ ...props
2850
+ }
2851
+ );
2852
+ }
2853
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2854
+ "div",
2855
+ {
2856
+ ref,
2857
+ className: cn(
2858
+ "relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card text-[40px] font-medium leading-none tracking-[-0.04em] text-[color:var(--sofya-text-default)] transition-[background-color,box-shadow,border-color,color] duration-sofya ease-sofya last:border-r-0",
2859
+ slot.isActive && "z-10 border-transparent bg-[color:var(--sofya-surface-hover)] text-primary shadow-[var(--sofya-shadow-otp-focus)] ring-2 ring-inset ring-[color:var(--sofya-focus-ring-strong)]",
2860
+ className
2861
+ ),
2862
+ ...props,
2863
+ children: [
2864
+ slot.char ?? null,
2865
+ slot.hasFakeCaret ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
2866
+ ]
2867
+ }
2868
+ );
2869
+ }
2870
+ );
2871
+ InputOTPSlot.displayName = "InputOTPSlot";
2872
+ var InputOTPSeparator = React16.forwardRef(({ className, ...props }, ref) => {
2873
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2874
+ "div",
2875
+ {
2876
+ ref,
2877
+ role: "separator",
2878
+ className: cn(
2879
+ "flex items-center justify-center px-2 text-[28px] leading-none text-[color:var(--sofya-text-soft)]",
2880
+ className
2881
+ ),
2882
+ ...props,
2883
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { "aria-hidden": "true", children: "." })
2884
+ }
2885
+ );
2886
+ });
2887
+ InputOTPSeparator.displayName = "InputOTPSeparator";
2888
+
2889
+ // src/components/input.tsx
2890
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2891
+ var inputVariantOptions = [
2892
+ "default",
2893
+ "search",
2894
+ "otp",
2895
+ "upload"
2896
+ ];
2897
+ var Input = React17.forwardRef((props, ref) => {
2898
+ const generatedId = React17.useId();
2942
2899
  const resolvedId = props.id ?? generatedId;
2943
2900
  const variant = props.variant ?? "default";
2944
2901
  if (variant === "otp") {
@@ -2966,7 +2923,7 @@ var Input = React13.forwardRef((props, ref) => {
2966
2923
  );
2967
2924
  const hasTrailingGroup = resolvedSplitIndex < resolvedLength;
2968
2925
  const otpAriaLabel = otpProps["aria-label"] ?? "Verification code";
2969
- const otpControl = /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2926
+ const otpControl = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
2970
2927
  InputOTP,
2971
2928
  {
2972
2929
  ref,
@@ -2979,7 +2936,7 @@ var Input = React13.forwardRef((props, ref) => {
2979
2936
  containerClassName: className2,
2980
2937
  ...otpProps,
2981
2938
  children: [
2982
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(InputOTPGroup, { className: otpGroupClassName, children: Array.from({ length: resolvedSplitIndex }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2939
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(InputOTPGroup, { className: otpGroupClassName, children: Array.from({ length: resolvedSplitIndex }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2983
2940
  InputOTPSlot,
2984
2941
  {
2985
2942
  className: otpSlotClassName,
@@ -2987,10 +2944,10 @@ var Input = React13.forwardRef((props, ref) => {
2987
2944
  },
2988
2945
  `otp-leading-${index}`
2989
2946
  )) }),
2990
- hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
2991
- hasTrailingGroup ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
2947
+ hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
2948
+ hasTrailingGroup ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
2992
2949
  { length: resolvedLength - resolvedSplitIndex },
2993
- (_, index) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2950
+ (_, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2994
2951
  InputOTPSlot,
2995
2952
  {
2996
2953
  className: otpSlotClassName,
@@ -3002,12 +2959,12 @@ var Input = React13.forwardRef((props, ref) => {
3002
2959
  ]
3003
2960
  }
3004
2961
  );
3005
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3006
- InputShell,
2962
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2963
+ FieldShell,
3007
2964
  {
3008
2965
  containerClassName: containerClassName2,
3009
2966
  control: otpControl,
3010
- resolvedId
2967
+ labelHtmlFor: resolvedId
3011
2968
  }
3012
2969
  );
3013
2970
  }
@@ -3021,7 +2978,7 @@ var Input = React13.forwardRef((props, ref) => {
3021
2978
  variant: _variant2,
3022
2979
  ...uploadProps
3023
2980
  } = props;
3024
- const uploadControl = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2981
+ const uploadControl = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3025
2982
  UploadInputControl,
3026
2983
  {
3027
2984
  ...uploadProps,
@@ -3029,14 +2986,28 @@ var Input = React13.forwardRef((props, ref) => {
3029
2986
  resolvedId
3030
2987
  }
3031
2988
  );
3032
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3033
- UploadInputShell,
2989
+ const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
2990
+ renderTextContent(label2, {
2991
+ as: "span",
2992
+ className: "text-[color:var(--sofya-text-default)]",
2993
+ size: "body",
2994
+ style: {
2995
+ fontWeight: 700
2996
+ }
2997
+ }),
2998
+ uploadOptionalLabel ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(uploadOptionalLabel, {
2999
+ as: "span",
3000
+ className: "text-[color:var(--sofya-text-subtle)]",
3001
+ size: "tiny"
3002
+ }) }) : null
3003
+ ] }) : void 0;
3004
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3005
+ FieldShell,
3034
3006
  {
3035
3007
  containerClassName: containerClassName2,
3036
3008
  control: uploadControl,
3037
- label: label2,
3038
- labelClassName: labelClassName2,
3039
- optionalLabel: uploadOptionalLabel
3009
+ label: uploadLabel,
3010
+ labelClassName: labelClassName2
3040
3011
  }
3041
3012
  );
3042
3013
  }
@@ -3053,8 +3024,8 @@ var Input = React13.forwardRef((props, ref) => {
3053
3024
  const isSearch = variant === "search";
3054
3025
  const resolvedType = type ?? (isSearch ? "search" : void 0);
3055
3026
  const ariaLabel = nativeProps["aria-label"] ?? (typeof label === "string" ? label : isSearch ? "Search" : void 0);
3056
- const nativeControl = isSearch ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex h-[88px] w-full items-center gap-6 rounded-full border border-[color:var(--sofya-border-strong)] bg-card px-8 shadow-none transition-[border-color,box-shadow,background-color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] hover:ring-2 hover:ring-[color:var(--sofya-focus-ring-soft)] focus-within:border-transparent focus-within:ring-2 focus-within:ring-[color:var(--sofya-focus-ring-soft)] has-[:active]:border-transparent has-[:active]:ring-2 has-[:active]:ring-[color:var(--sofya-focus-ring-soft)]", children: [
3057
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3027
+ const nativeControl = isSearch ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex h-[88px] w-full items-center gap-6 rounded-full border border-[color:var(--sofya-border-strong)] bg-card px-8 shadow-none transition-[border-color,box-shadow,background-color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] hover:ring-2 hover:ring-[color:var(--sofya-focus-ring-soft)] focus-within:border-transparent focus-within:ring-2 focus-within:ring-[color:var(--sofya-focus-ring-soft)] has-[:active]:border-transparent has-[:active]:ring-2 has-[:active]:ring-[color:var(--sofya-focus-ring-soft)]", children: [
3028
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3058
3029
  Icon,
3059
3030
  {
3060
3031
  "aria-hidden": "true",
@@ -3063,7 +3034,7 @@ var Input = React13.forwardRef((props, ref) => {
3063
3034
  size: 32
3064
3035
  }
3065
3036
  ),
3066
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3037
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3067
3038
  "input",
3068
3039
  {
3069
3040
  id: resolvedId,
@@ -3079,7 +3050,7 @@ var Input = React13.forwardRef((props, ref) => {
3079
3050
  placeholder: nativeProps.placeholder ?? "Search"
3080
3051
  }
3081
3052
  )
3082
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3053
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3083
3054
  "input",
3084
3055
  {
3085
3056
  id: resolvedId,
@@ -3093,25 +3064,25 @@ var Input = React13.forwardRef((props, ref) => {
3093
3064
  "aria-label": ariaLabel
3094
3065
  }
3095
3066
  );
3096
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
3097
- InputShell,
3067
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3068
+ FieldShell,
3098
3069
  {
3099
3070
  containerClassName,
3100
3071
  control: nativeControl,
3101
3072
  label: isSearch ? void 0 : label,
3102
3073
  labelClassName: isSearch ? void 0 : labelClassName,
3103
- resolvedId
3074
+ labelHtmlFor: isSearch ? void 0 : resolvedId
3104
3075
  }
3105
3076
  );
3106
3077
  });
3107
3078
  Input.displayName = "Input";
3108
3079
 
3109
3080
  // src/components/label.tsx
3110
- var React14 = __toESM(require("react"), 1);
3111
- var import_jsx_runtime16 = require("react/jsx-runtime");
3112
- var Label = React14.forwardRef(
3081
+ var React18 = __toESM(require("react"), 1);
3082
+ var import_jsx_runtime19 = require("react/jsx-runtime");
3083
+ var Label = React18.forwardRef(
3113
3084
  ({ children, className, ...props }, ref) => {
3114
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
3085
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3115
3086
  "label",
3116
3087
  {
3117
3088
  ref,
@@ -3135,10 +3106,10 @@ var Label = React14.forwardRef(
3135
3106
  Label.displayName = "Label";
3136
3107
 
3137
3108
  // src/components/link.tsx
3138
- var React15 = __toESM(require("react"), 1);
3109
+ var React19 = __toESM(require("react"), 1);
3139
3110
  var import_react_slot3 = require("@radix-ui/react-slot");
3140
3111
  var import_class_variance_authority6 = require("class-variance-authority");
3141
- var import_jsx_runtime17 = require("react/jsx-runtime");
3112
+ var import_jsx_runtime20 = require("react/jsx-runtime");
3142
3113
  var linkVariants = (0, import_class_variance_authority6.cva)(
3143
3114
  "inline bg-[linear-gradient(currentColor,currentColor)] bg-[position:0_100%] bg-no-repeat pb-0 text-primary no-underline transition-[color,background-size,box-shadow] duration-sofya ease-sofya hover:text-[color:var(--sofya-link-hover)] focus-visible:rounded-[4px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
3144
3115
  {
@@ -3153,9 +3124,9 @@ var linkVariants = (0, import_class_variance_authority6.cva)(
3153
3124
  }
3154
3125
  }
3155
3126
  );
3156
- var Link = React15.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
3127
+ var Link = React19.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
3157
3128
  const Component = asChild ? import_react_slot3.Slot : "a";
3158
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3129
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3159
3130
  Component,
3160
3131
  {
3161
3132
  ref,
@@ -3173,7 +3144,7 @@ var Link = React15.forwardRef(function Link2({ asChild = false, children, classN
3173
3144
  Link.displayName = "Link";
3174
3145
 
3175
3146
  // src/components/logo.tsx
3176
- var React16 = __toESM(require("react"), 1);
3147
+ var React20 = __toESM(require("react"), 1);
3177
3148
 
3178
3149
  // src/components/logo-data.ts
3179
3150
  var logoAssets = {
@@ -3270,7 +3241,7 @@ var logoAssets = {
3270
3241
  };
3271
3242
 
3272
3243
  // src/components/logo.tsx
3273
- var import_jsx_runtime18 = require("react/jsx-runtime");
3244
+ var import_jsx_runtime21 = require("react/jsx-runtime");
3274
3245
  var logoVariants = ["mono", "default", "text", "full"];
3275
3246
  var logoSizeOptions = ["sm", "md", "lg", "xl", "2xl"];
3276
3247
  var logoSizeScale = {
@@ -3306,7 +3277,7 @@ function resolveLogoDimensions(variant, size, width, height) {
3306
3277
  height: resolvedHeight
3307
3278
  };
3308
3279
  }
3309
- var Logo = React16.forwardRef(function Logo2({
3280
+ var Logo = React20.forwardRef(function Logo2({
3310
3281
  variant = "full",
3311
3282
  size = "lg",
3312
3283
  width,
@@ -3317,10 +3288,10 @@ var Logo = React16.forwardRef(function Logo2({
3317
3288
  ...props
3318
3289
  }, ref) {
3319
3290
  const asset = logoAssets[variant];
3320
- const titleId = React16.useId();
3291
+ const titleId = React20.useId();
3321
3292
  const dimensions = resolveLogoDimensions(variant, size, width, height);
3322
3293
  const monoFill = variant === "mono" ? monoColor ?? "currentColor" : void 0;
3323
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
3294
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
3324
3295
  "svg",
3325
3296
  {
3326
3297
  ref,
@@ -3335,8 +3306,8 @@ var Logo = React16.forwardRef(function Logo2({
3335
3306
  focusable: "false",
3336
3307
  ...props,
3337
3308
  children: [
3338
- title ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("title", { id: titleId, children: title }) : null,
3339
- asset.paths.map((path, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
3309
+ title ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("title", { id: titleId, children: title }) : null,
3310
+ asset.paths.map((path, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3340
3311
  "path",
3341
3312
  {
3342
3313
  d: path.d,
@@ -3353,10 +3324,12 @@ var Logo = React16.forwardRef(function Logo2({
3353
3324
  Logo.displayName = "Logo";
3354
3325
 
3355
3326
  // src/components/pagination.tsx
3327
+ var import_icons_react5 = require("@tabler/icons-react");
3356
3328
  var import_react_slot4 = require("@radix-ui/react-slot");
3357
3329
  var import_class_variance_authority7 = require("class-variance-authority");
3358
- var import_jsx_runtime19 = require("react/jsx-runtime");
3359
- var inheritTypographyStyle = {
3330
+
3331
+ // src/lib/inherited-typography.ts
3332
+ var inheritedTypographyStyle = {
3360
3333
  color: "inherit",
3361
3334
  fontFamily: "inherit",
3362
3335
  fontSize: "inherit",
@@ -3364,6 +3337,9 @@ var inheritTypographyStyle = {
3364
3337
  letterSpacing: "inherit",
3365
3338
  lineHeight: "inherit"
3366
3339
  };
3340
+
3341
+ // src/components/pagination.tsx
3342
+ var import_jsx_runtime22 = require("react/jsx-runtime");
3367
3343
  var paginationLinkVariants = (0, import_class_variance_authority7.cva)(
3368
3344
  "inline-flex h-10 min-w-10 items-center justify-center rounded-full border border-transparent px-4 [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] font-medium leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] text-[color:var(--sofya-text-soft)] no-underline transition-[transform,background-color,border-color,color,box-shadow] duration-sofya ease-sofya motion-safe:active:scale-[0.985] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
3369
3345
  {
@@ -3384,7 +3360,7 @@ var paginationLinkVariants = (0, import_class_variance_authority7.cva)(
3384
3360
  }
3385
3361
  );
3386
3362
  function Pagination({ className, ...props }) {
3387
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3363
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3388
3364
  "nav",
3389
3365
  {
3390
3366
  "aria-label": "Pagination",
@@ -3397,7 +3373,7 @@ function PaginationContent({
3397
3373
  className,
3398
3374
  ...props
3399
3375
  }) {
3400
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3376
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3401
3377
  "ul",
3402
3378
  {
3403
3379
  className: cn(
@@ -3409,7 +3385,7 @@ function PaginationContent({
3409
3385
  );
3410
3386
  }
3411
3387
  function PaginationItem({ className, ...props }) {
3412
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("li", { className: cn("list-none", className), ...props });
3388
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("li", { className: cn("list-none", className), ...props });
3413
3389
  }
3414
3390
  function PaginationLink({
3415
3391
  asChild = false,
@@ -3419,7 +3395,7 @@ function PaginationLink({
3419
3395
  ...props
3420
3396
  }) {
3421
3397
  const Component = asChild ? import_react_slot4.Slot : "a";
3422
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3398
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3423
3399
  Component,
3424
3400
  {
3425
3401
  "aria-current": isActive ? "page" : void 0,
@@ -3429,67 +3405,29 @@ function PaginationLink({
3429
3405
  );
3430
3406
  }
3431
3407
  function PaginationChevronLeft() {
3432
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3433
- "svg",
3434
- {
3435
- "aria-hidden": "true",
3436
- className: "h-4 w-4",
3437
- viewBox: "0 0 16 16",
3438
- fill: "none",
3439
- xmlns: "http://www.w3.org/2000/svg",
3440
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3441
- "path",
3442
- {
3443
- d: "M9.5 3.5L5 8L9.5 12.5",
3444
- stroke: "currentColor",
3445
- strokeWidth: "1.75",
3446
- strokeLinecap: "round",
3447
- strokeLinejoin: "round"
3448
- }
3449
- )
3450
- }
3451
- );
3408
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons_react5.IconChevronLeft, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
3452
3409
  }
3453
3410
  function PaginationChevronRight() {
3454
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3455
- "svg",
3456
- {
3457
- "aria-hidden": "true",
3458
- className: "h-4 w-4",
3459
- viewBox: "0 0 16 16",
3460
- fill: "none",
3461
- xmlns: "http://www.w3.org/2000/svg",
3462
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
3463
- "path",
3464
- {
3465
- d: "M6.5 3.5L11 8L6.5 12.5",
3466
- stroke: "currentColor",
3467
- strokeWidth: "1.75",
3468
- strokeLinecap: "round",
3469
- strokeLinejoin: "round"
3470
- }
3471
- )
3472
- }
3473
- );
3411
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_icons_react5.IconChevronRight, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
3474
3412
  }
3475
3413
  function PaginationPrevious({
3476
3414
  className,
3477
3415
  text = "Previous",
3478
3416
  ...props
3479
3417
  }) {
3480
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
3418
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
3481
3419
  PaginationLink,
3482
3420
  {
3483
3421
  "aria-label": "Go to previous page",
3484
3422
  className: cn("gap-2 px-4", className),
3485
3423
  ...props,
3486
3424
  children: [
3487
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PaginationChevronLeft, {}),
3488
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "hidden sm:block", children: renderTextContent(text, {
3425
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(PaginationChevronLeft, {}),
3426
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "hidden sm:block", children: renderTextContent(text, {
3489
3427
  as: "span",
3490
3428
  className: "block text-inherit",
3491
3429
  size: "body",
3492
- style: inheritTypographyStyle
3430
+ style: inheritedTypographyStyle
3493
3431
  }) })
3494
3432
  ]
3495
3433
  }
@@ -3500,20 +3438,20 @@ function PaginationNext({
3500
3438
  text = "Next",
3501
3439
  ...props
3502
3440
  }) {
3503
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
3441
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
3504
3442
  PaginationLink,
3505
3443
  {
3506
3444
  "aria-label": "Go to next page",
3507
3445
  className: cn("gap-2 px-4", className),
3508
3446
  ...props,
3509
3447
  children: [
3510
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "hidden sm:block", children: renderTextContent(text, {
3448
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "hidden sm:block", children: renderTextContent(text, {
3511
3449
  as: "span",
3512
3450
  className: "block text-inherit",
3513
3451
  size: "body",
3514
- style: inheritTypographyStyle
3452
+ style: inheritedTypographyStyle
3515
3453
  }) }),
3516
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(PaginationChevronRight, {})
3454
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(PaginationChevronRight, {})
3517
3455
  ]
3518
3456
  }
3519
3457
  );
@@ -3522,7 +3460,7 @@ function PaginationEllipsis({
3522
3460
  className,
3523
3461
  ...props
3524
3462
  }) {
3525
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
3463
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
3526
3464
  "span",
3527
3465
  {
3528
3466
  "aria-hidden": "true",
@@ -3532,35 +3470,35 @@ function PaginationEllipsis({
3532
3470
  ),
3533
3471
  ...props,
3534
3472
  children: [
3535
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: renderTextContent("...", {
3473
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { children: renderTextContent("...", {
3536
3474
  as: "span",
3537
3475
  className: "block text-inherit",
3538
3476
  size: "h5",
3539
- style: inheritTypographyStyle
3477
+ style: inheritedTypographyStyle
3540
3478
  }) }),
3541
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "sr-only", children: "More pages" })
3479
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "sr-only", children: "More pages" })
3542
3480
  ]
3543
3481
  }
3544
3482
  );
3545
3483
  }
3546
3484
 
3547
3485
  // src/components/popover.tsx
3548
- var React17 = __toESM(require("react"), 1);
3486
+ var React21 = __toESM(require("react"), 1);
3549
3487
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
3550
- var import_jsx_runtime20 = require("react/jsx-runtime");
3488
+ var import_jsx_runtime23 = require("react/jsx-runtime");
3551
3489
  var Popover = PopoverPrimitive.Root;
3552
3490
  var PopoverTrigger = PopoverPrimitive.Trigger;
3553
3491
  var PopoverAnchor = PopoverPrimitive.Anchor;
3554
3492
  var PopoverPortal = PopoverPrimitive.Portal;
3555
3493
  var PopoverClose = PopoverPrimitive.Close;
3556
- var PopoverContent = React17.forwardRef(function PopoverContent2({
3494
+ var PopoverContent = React21.forwardRef(function PopoverContent2({
3557
3495
  align = "center",
3558
3496
  className,
3559
3497
  collisionPadding = 8,
3560
3498
  sideOffset = 8,
3561
3499
  ...props
3562
3500
  }, ref) {
3563
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3501
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3564
3502
  PopoverPrimitive.Content,
3565
3503
  {
3566
3504
  ref,
@@ -3577,8 +3515,8 @@ var PopoverContent = React17.forwardRef(function PopoverContent2({
3577
3515
  ) });
3578
3516
  });
3579
3517
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
3580
- var PopoverTitle = React17.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
3581
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3518
+ var PopoverTitle = React21.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
3519
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3582
3520
  "h4",
3583
3521
  {
3584
3522
  ref,
@@ -3594,8 +3532,8 @@ var PopoverTitle = React17.forwardRef(function PopoverTitle2({ children, classNa
3594
3532
  );
3595
3533
  });
3596
3534
  PopoverTitle.displayName = "PopoverTitle";
3597
- var PopoverDescription = React17.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
3598
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3535
+ var PopoverDescription = React21.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
3536
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3599
3537
  "p",
3600
3538
  {
3601
3539
  ref,
@@ -3613,9 +3551,9 @@ var PopoverDescription = React17.forwardRef(function PopoverDescription2({ child
3613
3551
  PopoverDescription.displayName = "PopoverDescription";
3614
3552
 
3615
3553
  // src/components/progress.tsx
3616
- var React18 = __toESM(require("react"), 1);
3554
+ var React22 = __toESM(require("react"), 1);
3617
3555
  var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"), 1);
3618
- var import_jsx_runtime21 = require("react/jsx-runtime");
3556
+ var import_jsx_runtime24 = require("react/jsx-runtime");
3619
3557
  var progressSizeOptions = ["sm", "default", "lg"];
3620
3558
  function clampProgressValue(value, max) {
3621
3559
  if (Number.isNaN(value)) {
@@ -3623,7 +3561,7 @@ function clampProgressValue(value, max) {
3623
3561
  }
3624
3562
  return Math.min(Math.max(value, 0), max);
3625
3563
  }
3626
- var Progress = React18.forwardRef(function Progress2({
3564
+ var Progress = React22.forwardRef(function Progress2({
3627
3565
  className,
3628
3566
  indicatorClassName,
3629
3567
  max = 100,
@@ -3634,7 +3572,7 @@ var Progress = React18.forwardRef(function Progress2({
3634
3572
  const safeMax = max > 0 ? max : 100;
3635
3573
  const resolvedValue = typeof value === "number" ? clampProgressValue(value, safeMax) : null;
3636
3574
  const progressScale = resolvedValue === null ? void 0 : Number((resolvedValue / safeMax).toFixed(4));
3637
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3575
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3638
3576
  ProgressPrimitive.Root,
3639
3577
  {
3640
3578
  ref,
@@ -3647,7 +3585,7 @@ var Progress = React18.forwardRef(function Progress2({
3647
3585
  className
3648
3586
  ),
3649
3587
  ...props,
3650
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3588
+ children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3651
3589
  ProgressPrimitive.Indicator,
3652
3590
  {
3653
3591
  "data-slot": "progress-indicator",
@@ -3664,12 +3602,12 @@ var Progress = React18.forwardRef(function Progress2({
3664
3602
  Progress.displayName = ProgressPrimitive.Root.displayName;
3665
3603
 
3666
3604
  // src/components/radio-group.tsx
3667
- var React19 = __toESM(require("react"), 1);
3605
+ var React23 = __toESM(require("react"), 1);
3668
3606
  var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1);
3669
- var import_jsx_runtime22 = require("react/jsx-runtime");
3607
+ var import_jsx_runtime25 = require("react/jsx-runtime");
3670
3608
  var radioGroupOrientationOptions = ["horizontal", "vertical"];
3671
- var RadioGroup2 = React19.forwardRef(function RadioGroup3({ className, ...props }, ref) {
3672
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3609
+ var RadioGroup2 = React23.forwardRef(function RadioGroup3({ className, ...props }, ref) {
3610
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3673
3611
  RadioGroupPrimitive.Root,
3674
3612
  {
3675
3613
  ref,
@@ -3683,7 +3621,7 @@ var RadioGroup2 = React19.forwardRef(function RadioGroup3({ className, ...props
3683
3621
  );
3684
3622
  });
3685
3623
  RadioGroup2.displayName = RadioGroupPrimitive.Root.displayName;
3686
- var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3624
+ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
3687
3625
  className,
3688
3626
  controlClassName,
3689
3627
  description,
@@ -3695,22 +3633,21 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3695
3633
  labelClassName,
3696
3634
  ...props
3697
3635
  }, ref) {
3698
- const generatedId = React19.useId();
3636
+ const generatedId = React23.useId();
3699
3637
  const resolvedId = id ?? generatedId;
3700
3638
  const labelId = label ? `${resolvedId}-label` : void 0;
3701
3639
  const descriptionId = description ? `${resolvedId}-description` : void 0;
3702
3640
  const alignClassName = description ? "items-start" : "items-center";
3703
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
3641
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3704
3642
  "label",
3705
3643
  {
3706
- className: cn(
3707
- "flex w-fit gap-4",
3644
+ className: selectionControlContainerClasses({
3708
3645
  alignClassName,
3709
- disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
3710
- className
3711
- ),
3646
+ className,
3647
+ disabled
3648
+ }),
3712
3649
  children: [
3713
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3650
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3714
3651
  RadioGroupPrimitive.Item,
3715
3652
  {
3716
3653
  ref,
@@ -3720,11 +3657,13 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3720
3657
  "aria-describedby": descriptionId,
3721
3658
  "data-slot": "radio-group-item",
3722
3659
  className: cn(
3723
- "peer mt-0 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-[color:var(--sofya-border-strong)] bg-card text-primary-foreground outline-none transition-[background-color,border-color,box-shadow] duration-sofya ease-sofya focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 data-[state=checked]:border-primary data-[state=checked]:bg-primary aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive/20 disabled:cursor-not-allowed disabled:opacity-50",
3660
+ "peer mt-0 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-primary-foreground outline-none",
3661
+ selectionControlControlBaseClasses,
3662
+ "focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 data-[state=checked]:border-primary data-[state=checked]:bg-primary aria-invalid:border-destructive aria-invalid:focus-visible:ring-destructive/20",
3724
3663
  controlClassName
3725
3664
  ),
3726
3665
  ...props,
3727
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3666
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3728
3667
  "span",
3729
3668
  {
3730
3669
  "data-slot": "radio-group-indicator",
@@ -3736,13 +3675,13 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3736
3675
  ) })
3737
3676
  }
3738
3677
  ),
3739
- label || description ? /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("span", { className: "grid gap-2", children: [
3740
- label ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3678
+ label || description ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: selectionControlContentBaseClasses, children: [
3679
+ label ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3741
3680
  "span",
3742
3681
  {
3743
3682
  id: labelId,
3744
3683
  className: cn(
3745
- "text-[color:var(--sofya-text-default)]",
3684
+ selectionControlLabelTextBaseClasses,
3746
3685
  labelClassName
3747
3686
  ),
3748
3687
  children: renderTextContent(label, {
@@ -3752,11 +3691,14 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3752
3691
  })
3753
3692
  }
3754
3693
  ) : null,
3755
- description ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3694
+ description ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3756
3695
  "span",
3757
3696
  {
3758
3697
  id: descriptionId,
3759
- className: cn("text-muted-foreground", descriptionClassName),
3698
+ className: cn(
3699
+ selectionControlDescriptionTextBaseClasses,
3700
+ descriptionClassName
3701
+ ),
3760
3702
  children: renderTextContent(description, {
3761
3703
  as: "span",
3762
3704
  className: "text-muted-foreground",
@@ -3772,12 +3714,12 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3772
3714
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
3773
3715
 
3774
3716
  // src/components/scroll-area.tsx
3775
- var React20 = __toESM(require("react"), 1);
3717
+ var React24 = __toESM(require("react"), 1);
3776
3718
  var ScrollAreaPrimitive = __toESM(require("@radix-ui/react-scroll-area"), 1);
3777
- var import_jsx_runtime23 = require("react/jsx-runtime");
3719
+ var import_jsx_runtime26 = require("react/jsx-runtime");
3778
3720
  var scrollAreaOrientationOptions = ["horizontal", "vertical"];
3779
- var ScrollArea = React20.forwardRef(function ScrollArea2({ className, ...props }, ref) {
3780
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3721
+ var ScrollArea = React24.forwardRef(function ScrollArea2({ className, ...props }, ref) {
3722
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3781
3723
  ScrollAreaPrimitive.Root,
3782
3724
  {
3783
3725
  ref,
@@ -3788,8 +3730,8 @@ var ScrollArea = React20.forwardRef(function ScrollArea2({ className, ...props }
3788
3730
  );
3789
3731
  });
3790
3732
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3791
- var ScrollAreaViewport = React20.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
3792
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3733
+ var ScrollAreaViewport = React24.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
3734
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3793
3735
  ScrollAreaPrimitive.Viewport,
3794
3736
  {
3795
3737
  ref,
@@ -3803,8 +3745,8 @@ var ScrollAreaViewport = React20.forwardRef(function ScrollAreaViewport2({ class
3803
3745
  );
3804
3746
  });
3805
3747
  ScrollAreaViewport.displayName = ScrollAreaPrimitive.Viewport.displayName;
3806
- var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
3807
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3748
+ var ScrollAreaScrollbar = React24.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
3749
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3808
3750
  ScrollAreaPrimitive.Scrollbar,
3809
3751
  {
3810
3752
  ref,
@@ -3815,7 +3757,7 @@ var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ cla
3815
3757
  className
3816
3758
  ),
3817
3759
  ...props,
3818
- children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3760
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3819
3761
  ScrollAreaPrimitive.Thumb,
3820
3762
  {
3821
3763
  "data-slot": "scroll-area-thumb",
@@ -3829,8 +3771,8 @@ var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ cla
3829
3771
  );
3830
3772
  });
3831
3773
  ScrollAreaScrollbar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
3832
- var ScrollAreaCorner = React20.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
3833
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3774
+ var ScrollAreaCorner = React24.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
3775
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3834
3776
  ScrollAreaPrimitive.Corner,
3835
3777
  {
3836
3778
  ref,
@@ -3843,22 +3785,19 @@ var ScrollAreaCorner = React20.forwardRef(function ScrollAreaCorner2({ className
3843
3785
  ScrollAreaCorner.displayName = ScrollAreaPrimitive.Corner.displayName;
3844
3786
 
3845
3787
  // src/components/select.tsx
3846
- var React21 = __toESM(require("react"), 1);
3788
+ var React25 = __toESM(require("react"), 1);
3847
3789
  var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
3848
- var import_jsx_runtime24 = require("react/jsx-runtime");
3849
- var inheritTypographyStyle2 = {
3850
- color: "inherit",
3851
- fontFamily: "inherit",
3852
- fontSize: "inherit",
3853
- fontWeight: "inherit",
3854
- letterSpacing: "inherit",
3855
- lineHeight: "inherit"
3856
- };
3790
+
3791
+ // src/lib/form-control-classes.ts
3792
+ var formControlBaseClasses = "flex w-full items-center justify-between gap-4 rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 text-left [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] [font-weight:var(--sofya-text-body-font-weight)] leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50 aria-invalid:border-destructive aria-invalid:focus:ring-destructive/20 data-[placeholder]:text-[color:var(--sofya-text-placeholder)]";
3793
+
3794
+ // src/components/select.tsx
3795
+ var import_jsx_runtime27 = require("react/jsx-runtime");
3857
3796
  var selectSizeOptions = ["default", "sm"];
3858
3797
  var Select = SelectPrimitive.Root;
3859
3798
  var SelectGroup = SelectPrimitive.Group;
3860
- var SelectValue = React21.forwardRef(function SelectValue2({ className, ...props }, ref) {
3861
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3799
+ var SelectValue = React25.forwardRef(function SelectValue2({ className, ...props }, ref) {
3800
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3862
3801
  Text,
3863
3802
  {
3864
3803
  ref,
@@ -3866,34 +3805,28 @@ var SelectValue = React21.forwardRef(function SelectValue2({ className, ...props
3866
3805
  "data-slot": "select-value",
3867
3806
  className: cn("block truncate text-inherit", className),
3868
3807
  size: "body",
3869
- style: {
3870
- fontFamily: "inherit",
3871
- fontSize: "inherit",
3872
- fontWeight: "inherit",
3873
- lineHeight: "inherit",
3874
- letterSpacing: "inherit",
3875
- color: "inherit"
3876
- },
3877
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectPrimitive.Value, { className: "block truncate", ...props })
3808
+ style: inheritedTypographyStyle,
3809
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectPrimitive.Value, { className: "block truncate", ...props })
3878
3810
  }
3879
3811
  );
3880
3812
  });
3881
3813
  SelectValue.displayName = SelectPrimitive.Value.displayName;
3882
- var SelectTrigger = React21.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
3883
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3814
+ var SelectTrigger = React25.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
3815
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
3884
3816
  SelectPrimitive.Trigger,
3885
3817
  {
3886
3818
  ref,
3887
3819
  "data-slot": "select-trigger",
3888
3820
  "data-size": size,
3889
3821
  className: cn(
3890
- "flex w-full items-center justify-between gap-4 rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 text-left [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] [font-weight:var(--sofya-text-body-font-weight)] leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50 aria-invalid:border-destructive aria-invalid:focus:ring-destructive/20 data-[placeholder]:text-[color:var(--sofya-text-placeholder)] data-[size=default]:h-10 data-[size=default]:py-2 data-[size=sm]:h-9 data-[size=sm]:px-2 data-[size=sm]:text-[14px] data-[size=sm]:leading-5 [&>span]:line-clamp-1 [&>span]:flex-1",
3822
+ formControlBaseClasses,
3823
+ "data-[size=default]:h-10 data-[size=default]:py-2 data-[size=sm]:h-9 data-[size=sm]:px-2 data-[size=sm]:text-[14px] data-[size=sm]:leading-5 [&>span]:line-clamp-1 [&>span]:flex-1",
3891
3824
  className
3892
3825
  ),
3893
3826
  ...props,
3894
3827
  children: [
3895
3828
  children,
3896
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3829
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3897
3830
  Icon,
3898
3831
  {
3899
3832
  name: "caret-down",
@@ -3906,8 +3839,8 @@ var SelectTrigger = React21.forwardRef(function SelectTrigger2({ className, chil
3906
3839
  );
3907
3840
  });
3908
3841
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
3909
- var SelectScrollUpButton = React21.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
3910
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3842
+ var SelectScrollUpButton = React25.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
3843
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3911
3844
  SelectPrimitive.ScrollUpButton,
3912
3845
  {
3913
3846
  ref,
@@ -3917,13 +3850,13 @@ var SelectScrollUpButton = React21.forwardRef(function SelectScrollUpButton2({ c
3917
3850
  className
3918
3851
  ),
3919
3852
  ...props,
3920
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { name: "caret-up", size: 12 })
3853
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon, { name: "caret-up", size: 12 })
3921
3854
  }
3922
3855
  );
3923
3856
  });
3924
3857
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
3925
- var SelectScrollDownButton = React21.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
3926
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3858
+ var SelectScrollDownButton = React25.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
3859
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3927
3860
  SelectPrimitive.ScrollDownButton,
3928
3861
  {
3929
3862
  ref,
@@ -3933,13 +3866,13 @@ var SelectScrollDownButton = React21.forwardRef(function SelectScrollDownButton2
3933
3866
  className
3934
3867
  ),
3935
3868
  ...props,
3936
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { name: "caret-down", size: 12 })
3869
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon, { name: "caret-down", size: 12 })
3937
3870
  }
3938
3871
  );
3939
3872
  });
3940
3873
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
3941
- var SelectContent = React21.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
3942
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3874
+ var SelectContent = React25.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
3875
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
3943
3876
  SelectPrimitive.Content,
3944
3877
  {
3945
3878
  ref,
@@ -3952,8 +3885,8 @@ var SelectContent = React21.forwardRef(function SelectContent2({ className, chil
3952
3885
  ),
3953
3886
  ...props,
3954
3887
  children: [
3955
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectScrollUpButton, {}),
3956
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3888
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectScrollUpButton, {}),
3889
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3957
3890
  SelectPrimitive.Viewport,
3958
3891
  {
3959
3892
  "data-slot": "select-viewport",
@@ -3961,14 +3894,14 @@ var SelectContent = React21.forwardRef(function SelectContent2({ className, chil
3961
3894
  children
3962
3895
  }
3963
3896
  ),
3964
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectScrollDownButton, {})
3897
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectScrollDownButton, {})
3965
3898
  ]
3966
3899
  }
3967
3900
  ) });
3968
3901
  });
3969
3902
  SelectContent.displayName = SelectPrimitive.Content.displayName;
3970
- var SelectLabel = React21.forwardRef(function SelectLabel2({ className, ...props }, ref) {
3971
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3903
+ var SelectLabel = React25.forwardRef(function SelectLabel2({ className, ...props }, ref) {
3904
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3972
3905
  SelectPrimitive.Label,
3973
3906
  {
3974
3907
  ref,
@@ -3990,8 +3923,8 @@ var SelectLabel = React21.forwardRef(function SelectLabel2({ className, ...props
3990
3923
  );
3991
3924
  });
3992
3925
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
3993
- var SelectItem = React21.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
3994
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3926
+ var SelectItem = React25.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
3927
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
3995
3928
  SelectPrimitive.Item,
3996
3929
  {
3997
3930
  ref,
@@ -4002,20 +3935,20 @@ var SelectItem = React21.forwardRef(function SelectItem2({ className, children,
4002
3935
  ),
4003
3936
  ...props,
4004
3937
  children: [
4005
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
3938
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
4006
3939
  as: "span",
4007
3940
  className: "block truncate text-[color:var(--sofya-text-default)]",
4008
3941
  size: "body",
4009
- style: inheritTypographyStyle2
3942
+ style: inheritedTypographyStyle
4010
3943
  }) }),
4011
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Icon, { name: "check", size: 14 }) }) })
3944
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon, { name: "check", size: 14 }) }) })
4012
3945
  ]
4013
3946
  }
4014
3947
  );
4015
3948
  });
4016
3949
  SelectItem.displayName = SelectPrimitive.Item.displayName;
4017
- var SelectSeparator = React21.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
4018
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3950
+ var SelectSeparator = React25.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
3951
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4019
3952
  SelectPrimitive.Separator,
4020
3953
  {
4021
3954
  ref,
@@ -4028,11 +3961,11 @@ var SelectSeparator = React21.forwardRef(function SelectSeparator2({ className,
4028
3961
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
4029
3962
 
4030
3963
  // src/components/separator.tsx
4031
- var React22 = __toESM(require("react"), 1);
3964
+ var React26 = __toESM(require("react"), 1);
4032
3965
  var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
4033
- var import_jsx_runtime25 = require("react/jsx-runtime");
4034
- var Separator2 = React22.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
4035
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3966
+ var import_jsx_runtime28 = require("react/jsx-runtime");
3967
+ var Separator2 = React26.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
3968
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4036
3969
  SeparatorPrimitive.Root,
4037
3970
  {
4038
3971
  ref,
@@ -4051,8 +3984,8 @@ var Separator2 = React22.forwardRef(function Separator3({ className, decorative
4051
3984
  Separator2.displayName = SeparatorPrimitive.Root.displayName;
4052
3985
 
4053
3986
  // src/components/slider.tsx
4054
- var React23 = __toESM(require("react"), 1);
4055
- var import_jsx_runtime26 = require("react/jsx-runtime");
3987
+ var React27 = __toESM(require("react"), 1);
3988
+ var import_jsx_runtime29 = require("react/jsx-runtime");
4056
3989
  function clampSliderValue(value, min, max) {
4057
3990
  if (Number.isNaN(value)) {
4058
3991
  return min;
@@ -4077,7 +4010,7 @@ function resolveSliderMeasurement(value, fallback) {
4077
4010
  function isTextValue(value) {
4078
4011
  return typeof value === "string" || typeof value === "number";
4079
4012
  }
4080
- var Slider = React23.forwardRef(function Slider2({
4013
+ var Slider = React27.forwardRef(function Slider2({
4081
4014
  className,
4082
4015
  defaultValue,
4083
4016
  formatValue,
@@ -4100,23 +4033,28 @@ var Slider = React23.forwardRef(function Slider2({
4100
4033
  valueClassName,
4101
4034
  ...props
4102
4035
  }, ref) {
4103
- const resolvedId = React23.useId();
4036
+ const resolvedId = React27.useId();
4104
4037
  const inputId = id ?? resolvedId;
4105
4038
  const safeMin = min;
4106
4039
  const safeMax = resolveSliderMax(safeMin, max);
4107
- const isControlled = value !== void 0;
4108
- const [internalValue, setInternalValue] = React23.useState(
4109
- () => clampSliderValue(defaultValue ?? safeMin, safeMin, safeMax)
4110
- );
4111
- React23.useEffect(() => {
4112
- if (isControlled) {
4040
+ const [controllableValue, setControllableValue, setUncontrolledValue] = useControllableState({
4041
+ defaultValue: clampSliderValue(defaultValue ?? safeMin, safeMin, safeMax),
4042
+ onChange: onValueChange,
4043
+ value
4044
+ });
4045
+ React27.useEffect(() => {
4046
+ if (value !== void 0) {
4113
4047
  return;
4114
4048
  }
4115
- setInternalValue(
4116
- (currentValue2) => clampSliderValue(currentValue2, safeMin, safeMax)
4049
+ setUncontrolledValue(
4050
+ (currentValue2) => clampSliderValue(currentValue2 ?? safeMin, safeMin, safeMax)
4117
4051
  );
4118
- }, [isControlled, safeMax, safeMin]);
4119
- const currentValue = isControlled ? clampSliderValue(value ?? safeMin, safeMin, safeMax) : internalValue;
4052
+ }, [safeMax, safeMin, setUncontrolledValue, value]);
4053
+ const currentValue = clampSliderValue(
4054
+ controllableValue ?? safeMin,
4055
+ safeMin,
4056
+ safeMax
4057
+ );
4120
4058
  const valueRatio = safeMax === safeMin ? 0 : (currentValue - safeMin) / (safeMax - safeMin);
4121
4059
  const valuePercentage = valueRatio * 100;
4122
4060
  const formattedValue = formatValue?.(currentValue) ?? currentValue.toString();
@@ -4148,38 +4086,29 @@ var Slider = React23.forwardRef(function Slider2({
4148
4086
  safeMin,
4149
4087
  safeMax
4150
4088
  );
4151
- if (!isControlled) {
4152
- setInternalValue(nextValue);
4153
- }
4089
+ setControllableValue(nextValue);
4154
4090
  onChange?.(event);
4155
- onValueChange?.(nextValue);
4156
4091
  };
4157
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4092
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
4158
4093
  "div",
4159
4094
  {
4160
4095
  "data-slot": "slider",
4161
4096
  className: cn("grid w-full gap-2", className),
4162
4097
  children: [
4163
- label || showValue ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "flex items-center justify-between gap-4", children: [
4164
- label ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4165
- "label",
4098
+ label || showValue ? /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "flex items-center justify-between gap-4", children: [
4099
+ label ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4100
+ FieldLabel,
4166
4101
  {
4167
4102
  htmlFor: inputId,
4168
4103
  className: cn(
4169
- "min-w-0 text-[color:var(--sofya-text-default)]",
4104
+ "min-w-0",
4170
4105
  labelClassName
4171
4106
  ),
4172
- children: renderTextContent(label, {
4173
- as: "span",
4174
- className: "block text-[color:var(--sofya-text-default)]",
4175
- size: "body",
4176
- style: {
4177
- fontWeight: 500
4178
- }
4179
- })
4107
+ textClassName: "block min-w-0 text-[color:var(--sofya-text-default)]",
4108
+ children: label
4180
4109
  }
4181
- ) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", {}),
4182
- showValue ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4110
+ ) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", {}),
4111
+ showValue ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4183
4112
  "div",
4184
4113
  {
4185
4114
  className: cn(
@@ -4197,7 +4126,7 @@ var Slider = React23.forwardRef(function Slider2({
4197
4126
  }
4198
4127
  ) : null
4199
4128
  ] }) : null,
4200
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
4129
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
4201
4130
  "div",
4202
4131
  {
4203
4132
  "data-slot": "slider-control",
@@ -4207,7 +4136,7 @@ var Slider = React23.forwardRef(function Slider2({
4207
4136
  ),
4208
4137
  style: controlStyle,
4209
4138
  children: [
4210
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4139
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4211
4140
  "input",
4212
4141
  {
4213
4142
  ...props,
@@ -4224,7 +4153,7 @@ var Slider = React23.forwardRef(function Slider2({
4224
4153
  style: inputBoundsStyle
4225
4154
  }
4226
4155
  ),
4227
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4156
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4228
4157
  "div",
4229
4158
  {
4230
4159
  "data-slot": "slider-track",
@@ -4235,7 +4164,7 @@ var Slider = React23.forwardRef(function Slider2({
4235
4164
  style: trackBoundsStyle
4236
4165
  }
4237
4166
  ),
4238
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4167
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4239
4168
  "div",
4240
4169
  {
4241
4170
  "data-slot": "slider-range",
@@ -4246,7 +4175,7 @@ var Slider = React23.forwardRef(function Slider2({
4246
4175
  style: rangeStyle
4247
4176
  }
4248
4177
  ),
4249
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
4178
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4250
4179
  "div",
4251
4180
  {
4252
4181
  "data-slot": "slider-thumb",
@@ -4267,10 +4196,10 @@ var Slider = React23.forwardRef(function Slider2({
4267
4196
  Slider.displayName = "Slider";
4268
4197
 
4269
4198
  // src/components/skeleton.tsx
4270
- var React24 = __toESM(require("react"), 1);
4271
- var import_jsx_runtime27 = require("react/jsx-runtime");
4272
- var Skeleton = React24.forwardRef(function Skeleton2({ className, ...props }, ref) {
4273
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4199
+ var React28 = __toESM(require("react"), 1);
4200
+ var import_jsx_runtime30 = require("react/jsx-runtime");
4201
+ var Skeleton = React28.forwardRef(function Skeleton2({ className, ...props }, ref) {
4202
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4274
4203
  "div",
4275
4204
  {
4276
4205
  ref,
@@ -4285,15 +4214,15 @@ var Skeleton = React24.forwardRef(function Skeleton2({ className, ...props }, re
4285
4214
  Skeleton.displayName = "Skeleton";
4286
4215
 
4287
4216
  // src/components/sonner.tsx
4288
- var React25 = __toESM(require("react"), 1);
4217
+ var React29 = __toESM(require("react"), 1);
4289
4218
  var import_sonner = require("sonner");
4290
- var import_jsx_runtime28 = require("react/jsx-runtime");
4219
+ var import_jsx_runtime31 = require("react/jsx-runtime");
4291
4220
  var notificationVariantOptions = ["default", "success", "error", "warning"];
4292
4221
  function ToastStatusIcon({
4293
4222
  iconName,
4294
4223
  className
4295
4224
  }) {
4296
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4225
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4297
4226
  "span",
4298
4227
  {
4299
4228
  "aria-hidden": "true",
@@ -4301,7 +4230,7 @@ function ToastStatusIcon({
4301
4230
  "inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full border shadow-sofya-sm",
4302
4231
  className
4303
4232
  ),
4304
- children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon, { name: iconName, size: 16 })
4233
+ children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Icon, { name: iconName, size: 16 })
4305
4234
  }
4306
4235
  );
4307
4236
  }
@@ -4322,35 +4251,35 @@ var defaultToastClassNames = {
4322
4251
  loading: "border-border bg-card text-foreground"
4323
4252
  };
4324
4253
  var defaultToastIcons = {
4325
- success: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4254
+ success: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4326
4255
  ToastStatusIcon,
4327
4256
  {
4328
4257
  iconName: "check",
4329
4258
  className: "border-success/15 bg-success/12 text-success"
4330
4259
  }
4331
4260
  ),
4332
- error: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4261
+ error: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4333
4262
  ToastStatusIcon,
4334
4263
  {
4335
4264
  iconName: "x",
4336
4265
  className: "border-destructive/15 bg-destructive/12 text-destructive"
4337
4266
  }
4338
4267
  ),
4339
- warning: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4268
+ warning: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4340
4269
  ToastStatusIcon,
4341
4270
  {
4342
4271
  iconName: "question",
4343
4272
  className: "border-warning/20 bg-warning/15 text-foreground"
4344
4273
  }
4345
4274
  ),
4346
- info: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4275
+ info: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4347
4276
  ToastStatusIcon,
4348
4277
  {
4349
4278
  iconName: "question",
4350
4279
  className: "border-primary/15 bg-primary/10 text-primary"
4351
4280
  }
4352
4281
  ),
4353
- close: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon, { name: "x", size: 12 })
4282
+ close: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Icon, { name: "x", size: 12 })
4354
4283
  };
4355
4284
  function mergeToastClassNames(overrides) {
4356
4285
  return {
@@ -4358,7 +4287,7 @@ function mergeToastClassNames(overrides) {
4358
4287
  ...overrides
4359
4288
  };
4360
4289
  }
4361
- var Toaster = React25.forwardRef(
4290
+ var Toaster = React29.forwardRef(
4362
4291
  function Toaster2({
4363
4292
  className,
4364
4293
  closeButton = true,
@@ -4370,7 +4299,7 @@ var Toaster = React25.forwardRef(
4370
4299
  visibleToasts = 5,
4371
4300
  ...props
4372
4301
  }, ref) {
4373
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4302
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4374
4303
  import_sonner.Toaster,
4375
4304
  {
4376
4305
  ref,
@@ -4400,10 +4329,11 @@ var Toaster = React25.forwardRef(
4400
4329
  Toaster.displayName = "Toaster";
4401
4330
 
4402
4331
  // src/components/spinner.tsx
4403
- var React26 = __toESM(require("react"), 1);
4404
- var import_jsx_runtime29 = require("react/jsx-runtime");
4332
+ var React30 = __toESM(require("react"), 1);
4333
+ var import_icons_react6 = require("@tabler/icons-react");
4334
+ var import_jsx_runtime32 = require("react/jsx-runtime");
4405
4335
  var spinnerSizeOptions = ["sm", "default", "lg"];
4406
- var Spinner = React26.forwardRef(function Spinner2({
4336
+ var Spinner = React30.forwardRef(function Spinner2({
4407
4337
  "aria-label": ariaLabelProp,
4408
4338
  "aria-labelledby": ariaLabelledby,
4409
4339
  className,
@@ -4412,15 +4342,12 @@ var Spinner = React26.forwardRef(function Spinner2({
4412
4342
  ...props
4413
4343
  }, ref) {
4414
4344
  const ariaLabel = ariaLabelProp ?? (ariaLabelledby ? void 0 : "Loading");
4415
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
4416
- "svg",
4345
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4346
+ import_icons_react6.IconLoader2,
4417
4347
  {
4418
4348
  ref,
4419
4349
  "data-size": size,
4420
4350
  "data-slot": "spinner",
4421
- viewBox: "0 0 24 24",
4422
- fill: "none",
4423
- xmlns: "http://www.w3.org/2000/svg",
4424
4351
  role,
4425
4352
  "aria-label": ariaLabel,
4426
4353
  "aria-labelledby": ariaLabelledby,
@@ -4428,30 +4355,18 @@ var Spinner = React26.forwardRef(function Spinner2({
4428
4355
  "shrink-0 animate-spin text-primary data-[size=sm]:h-3.5 data-[size=sm]:w-3.5 data-[size=default]:h-4 data-[size=default]:w-4 data-[size=lg]:h-6 data-[size=lg]:w-6",
4429
4356
  className
4430
4357
  ),
4431
- ...props,
4432
- children: [
4433
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("circle", { cx: "12", cy: "12", r: "9", className: "opacity-20", stroke: "currentColor", strokeWidth: "3" }),
4434
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4435
- "path",
4436
- {
4437
- d: "M21 12A9 9 0 0 0 12 3",
4438
- stroke: "currentColor",
4439
- strokeWidth: "3",
4440
- strokeLinecap: "round"
4441
- }
4442
- )
4443
- ]
4358
+ ...props
4444
4359
  }
4445
4360
  );
4446
4361
  });
4447
4362
  Spinner.displayName = "Spinner";
4448
4363
 
4449
4364
  // src/components/switch.tsx
4450
- var React27 = __toESM(require("react"), 1);
4365
+ var React31 = __toESM(require("react"), 1);
4451
4366
  var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"), 1);
4452
- var import_jsx_runtime30 = require("react/jsx-runtime");
4453
- var Switch = React27.forwardRef(({ className, ...props }, ref) => {
4454
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4367
+ var import_jsx_runtime33 = require("react/jsx-runtime");
4368
+ var Switch = React31.forwardRef(({ className, ...props }, ref) => {
4369
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4455
4370
  SwitchPrimitives.Root,
4456
4371
  {
4457
4372
  className: cn(
@@ -4460,7 +4375,7 @@ var Switch = React27.forwardRef(({ className, ...props }, ref) => {
4460
4375
  ),
4461
4376
  ...props,
4462
4377
  ref,
4463
- children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4378
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4464
4379
  SwitchPrimitives.Thumb,
4465
4380
  {
4466
4381
  className: "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-sm ring-0 transition-transform duration-sofya ease-sofya data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
@@ -4473,8 +4388,8 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
4473
4388
 
4474
4389
  // src/components/table.tsx
4475
4390
  var import_class_variance_authority8 = require("class-variance-authority");
4476
- var React28 = __toESM(require("react"), 1);
4477
- var import_jsx_runtime31 = require("react/jsx-runtime");
4391
+ var React32 = __toESM(require("react"), 1);
4392
+ var import_jsx_runtime34 = require("react/jsx-runtime");
4478
4393
  var tableCellVariantOptions = ["default", "primary", "muted"];
4479
4394
  var tableStatusToneOptions = [
4480
4395
  "active",
@@ -4524,21 +4439,13 @@ var tableActionButtonVariants = (0, import_class_variance_authority8.cva)(
4524
4439
  }
4525
4440
  }
4526
4441
  );
4527
- var inheritedTextStyle = {
4528
- fontFamily: "inherit",
4529
- fontSize: "inherit",
4530
- fontWeight: "inherit",
4531
- lineHeight: "inherit",
4532
- letterSpacing: "inherit",
4533
- color: "inherit"
4534
- };
4535
- var Table = React28.forwardRef(function Table2({ className, ...props }, ref) {
4536
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4442
+ var Table = React32.forwardRef(function Table2({ className, ...props }, ref) {
4443
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4537
4444
  "div",
4538
4445
  {
4539
4446
  "data-slot": "table-container",
4540
4447
  className: "relative w-full overflow-x-auto",
4541
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4448
+ children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4542
4449
  "table",
4543
4450
  {
4544
4451
  "data-slot": "table",
@@ -4553,8 +4460,8 @@ var Table = React28.forwardRef(function Table2({ className, ...props }, ref) {
4553
4460
  }
4554
4461
  );
4555
4462
  });
4556
- var TableHeader = React28.forwardRef(function TableHeader2({ className, ...props }, ref) {
4557
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4463
+ var TableHeader = React32.forwardRef(function TableHeader2({ className, ...props }, ref) {
4464
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4558
4465
  "thead",
4559
4466
  {
4560
4467
  "data-slot": "table-header",
@@ -4567,8 +4474,8 @@ var TableHeader = React28.forwardRef(function TableHeader2({ className, ...props
4567
4474
  }
4568
4475
  );
4569
4476
  });
4570
- var TableBody = React28.forwardRef(function TableBody2({ className, ...props }, ref) {
4571
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4477
+ var TableBody = React32.forwardRef(function TableBody2({ className, ...props }, ref) {
4478
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4572
4479
  "tbody",
4573
4480
  {
4574
4481
  "data-slot": "table-body",
@@ -4578,8 +4485,8 @@ var TableBody = React28.forwardRef(function TableBody2({ className, ...props },
4578
4485
  }
4579
4486
  );
4580
4487
  });
4581
- var TableFooter = React28.forwardRef(function TableFooter2({ className, ...props }, ref) {
4582
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4488
+ var TableFooter = React32.forwardRef(function TableFooter2({ className, ...props }, ref) {
4489
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4583
4490
  "tfoot",
4584
4491
  {
4585
4492
  "data-slot": "table-footer",
@@ -4592,8 +4499,8 @@ var TableFooter = React28.forwardRef(function TableFooter2({ className, ...props
4592
4499
  }
4593
4500
  );
4594
4501
  });
4595
- var TableRow = React28.forwardRef(function TableRow2({ className, ...props }, ref) {
4596
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4502
+ var TableRow = React32.forwardRef(function TableRow2({ className, ...props }, ref) {
4503
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4597
4504
  "tr",
4598
4505
  {
4599
4506
  "data-slot": "table-row",
@@ -4606,8 +4513,8 @@ var TableRow = React28.forwardRef(function TableRow2({ className, ...props }, re
4606
4513
  }
4607
4514
  );
4608
4515
  });
4609
- var TableHead = React28.forwardRef(function TableHead2({ className, children, ...props }, ref) {
4610
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4516
+ var TableHead = React32.forwardRef(function TableHead2({ className, children, ...props }, ref) {
4517
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4611
4518
  "th",
4612
4519
  {
4613
4520
  "data-slot": "table-head",
@@ -4621,14 +4528,14 @@ var TableHead = React28.forwardRef(function TableHead2({ className, children, ..
4621
4528
  as: "span",
4622
4529
  className: "inline-flex items-center gap-2 text-inherit",
4623
4530
  size: "tiny",
4624
- style: inheritedTextStyle
4531
+ style: inheritedTypographyStyle
4625
4532
  })
4626
4533
  }
4627
4534
  );
4628
4535
  });
4629
- var TableCell = React28.forwardRef(
4536
+ var TableCell = React32.forwardRef(
4630
4537
  function TableCell2({ className, variant, children, ...props }, ref) {
4631
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4538
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4632
4539
  "td",
4633
4540
  {
4634
4541
  "data-slot": "table-cell",
@@ -4639,14 +4546,14 @@ var TableCell = React28.forwardRef(
4639
4546
  as: "span",
4640
4547
  className: "block text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
4641
4548
  size: "body",
4642
- style: inheritedTextStyle
4549
+ style: inheritedTypographyStyle
4643
4550
  })
4644
4551
  }
4645
4552
  );
4646
4553
  }
4647
4554
  );
4648
- var TableCaption = React28.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
4649
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4555
+ var TableCaption = React32.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
4556
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4650
4557
  "caption",
4651
4558
  {
4652
4559
  "data-slot": "table-caption",
@@ -4660,7 +4567,7 @@ var TableCaption = React28.forwardRef(function TableCaption2({ className, childr
4660
4567
  as: "span",
4661
4568
  className: "block text-inherit",
4662
4569
  size: "body",
4663
- style: inheritedTextStyle
4570
+ style: inheritedTypographyStyle
4664
4571
  })
4665
4572
  }
4666
4573
  );
@@ -4671,7 +4578,7 @@ function TableStatusBadge({
4671
4578
  children,
4672
4579
  ...props
4673
4580
  }) {
4674
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4581
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4675
4582
  Badge,
4676
4583
  {
4677
4584
  variant: "pill",
@@ -4681,13 +4588,13 @@ function TableStatusBadge({
4681
4588
  as: "span",
4682
4589
  className: "inline-flex items-center gap-2 text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
4683
4590
  size: "tiny",
4684
- style: inheritedTextStyle
4591
+ style: inheritedTypographyStyle
4685
4592
  })
4686
4593
  }
4687
4594
  );
4688
4595
  }
4689
- var TableActionButton = React28.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
4690
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4596
+ var TableActionButton = React32.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
4597
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4691
4598
  Button,
4692
4599
  {
4693
4600
  ref,
@@ -4700,13 +4607,13 @@ var TableActionButton = React28.forwardRef(function TableActionButton2({ classNa
4700
4607
  as: "span",
4701
4608
  className: "inline-flex items-center justify-center text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
4702
4609
  size: "body",
4703
- style: inheritedTextStyle
4610
+ style: inheritedTypographyStyle
4704
4611
  })
4705
4612
  }
4706
4613
  );
4707
4614
  });
4708
- var TableActions = React28.forwardRef(function TableActions2({ className, ...props }, ref) {
4709
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4615
+ var TableActions = React32.forwardRef(function TableActions2({ className, ...props }, ref) {
4616
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4710
4617
  "div",
4711
4618
  {
4712
4619
  ref,
@@ -4727,10 +4634,10 @@ TableActionButton.displayName = "TableActionButton";
4727
4634
  TableActions.displayName = "TableActions";
4728
4635
 
4729
4636
  // src/components/tabs.tsx
4730
- var React29 = __toESM(require("react"), 1);
4637
+ var React33 = __toESM(require("react"), 1);
4731
4638
  var TabsPrimitive = __toESM(require("@radix-ui/react-tabs"), 1);
4732
4639
  var import_react3 = require("motion/react");
4733
- var import_jsx_runtime32 = require("react/jsx-runtime");
4640
+ var import_jsx_runtime35 = require("react/jsx-runtime");
4734
4641
  function resolveDefaultValue(items, defaultValue) {
4735
4642
  if (defaultValue) {
4736
4643
  return defaultValue;
@@ -4749,33 +4656,26 @@ function Tabs({
4749
4656
  ...props
4750
4657
  }) {
4751
4658
  const resolvedDefaultValue = resolveDefaultValue(items, defaultValue);
4752
- const isControlled = value !== void 0;
4753
- const [selectedValue, setSelectedValue] = React29.useState(resolvedDefaultValue);
4754
- const indicatorLayoutId = React29.useId();
4755
- const currentValue = isControlled ? value : selectedValue;
4756
- React29.useEffect(() => {
4757
- if (!isControlled) {
4758
- setSelectedValue(resolvedDefaultValue);
4659
+ const [currentValue, setCurrentValue, setUncontrolledCurrentValue] = useControllableState({
4660
+ defaultValue: resolvedDefaultValue,
4661
+ onChange: onValueChange,
4662
+ value
4663
+ });
4664
+ const indicatorLayoutId = React33.useId();
4665
+ React33.useEffect(() => {
4666
+ if (value === void 0) {
4667
+ setUncontrolledCurrentValue(resolvedDefaultValue);
4759
4668
  }
4760
- }, [isControlled, resolvedDefaultValue]);
4761
- const handleValueChange = React29.useCallback(
4762
- (nextValue) => {
4763
- if (!isControlled) {
4764
- setSelectedValue(nextValue);
4765
- }
4766
- onValueChange?.(nextValue);
4767
- },
4768
- [isControlled, onValueChange]
4769
- );
4770
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
4669
+ }, [resolvedDefaultValue, setUncontrolledCurrentValue, value]);
4670
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4771
4671
  TabsPrimitive.Root,
4772
4672
  {
4773
4673
  className: cn("w-full", className),
4774
- onValueChange: handleValueChange,
4674
+ onValueChange: setCurrentValue,
4775
4675
  value: currentValue,
4776
4676
  ...props,
4777
4677
  children: [
4778
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4678
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4779
4679
  TabsPrimitive.List,
4780
4680
  {
4781
4681
  "aria-label": "Subtelas navegaveis",
@@ -4786,7 +4686,7 @@ function Tabs({
4786
4686
  children: items.map((item) => {
4787
4687
  const isUnavailable = item.disabled || item.loading;
4788
4688
  const isActive = item.value === currentValue;
4789
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
4689
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4790
4690
  TabsPrimitive.Trigger,
4791
4691
  {
4792
4692
  value: item.value,
@@ -4798,7 +4698,7 @@ function Tabs({
4798
4698
  item.triggerClassName
4799
4699
  ),
4800
4700
  children: [
4801
- isActive ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4701
+ isActive ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4802
4702
  import_react3.motion.span,
4803
4703
  {
4804
4704
  "aria-hidden": "true",
@@ -4808,15 +4708,15 @@ function Tabs({
4808
4708
  transition: { duration: 0.25, ease: "easeInOut" }
4809
4709
  }
4810
4710
  ) : null,
4811
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
4812
- item.loading ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4711
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
4712
+ item.loading ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4813
4713
  "span",
4814
4714
  {
4815
4715
  "aria-hidden": "true",
4816
4716
  className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent"
4817
4717
  }
4818
4718
  ) : null,
4819
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { children: renderTextContent(item.label, {
4719
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: renderTextContent(item.label, {
4820
4720
  as: "span",
4821
4721
  className: "block text-inherit",
4822
4722
  size: "h5"
@@ -4830,7 +4730,7 @@ function Tabs({
4830
4730
  }
4831
4731
  ),
4832
4732
  items.map(
4833
- (item) => item.content !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4733
+ (item) => item.content !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4834
4734
  TabsPrimitive.Content,
4835
4735
  {
4836
4736
  value: item.value,
@@ -4853,9 +4753,9 @@ function Tabs({
4853
4753
  Tabs.displayName = "Tabs";
4854
4754
 
4855
4755
  // src/components/textarea.tsx
4856
- var React30 = __toESM(require("react"), 1);
4857
- var import_jsx_runtime33 = require("react/jsx-runtime");
4858
- var Textarea = React30.forwardRef(
4756
+ var React34 = __toESM(require("react"), 1);
4757
+ var import_jsx_runtime36 = require("react/jsx-runtime");
4758
+ var Textarea = React34.forwardRef(
4859
4759
  ({
4860
4760
  className,
4861
4761
  containerClassName,
@@ -4865,10 +4765,10 @@ var Textarea = React30.forwardRef(
4865
4765
  rows = 5,
4866
4766
  ...props
4867
4767
  }, ref) => {
4868
- const generatedId = React30.useId();
4768
+ const generatedId = React34.useId();
4869
4769
  const resolvedId = id ?? generatedId;
4870
4770
  const ariaLabel = props["aria-label"] ?? (typeof label === "string" ? label : void 0);
4871
- const control = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4771
+ const control = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4872
4772
  "textarea",
4873
4773
  {
4874
4774
  className: cn(
@@ -4882,43 +4782,29 @@ var Textarea = React30.forwardRef(
4882
4782
  "aria-label": ariaLabel
4883
4783
  }
4884
4784
  );
4885
- if (!label && !containerClassName) {
4886
- return control;
4887
- }
4888
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: cn("grid w-full gap-2", containerClassName), children: [
4889
- label ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4890
- "label",
4891
- {
4892
- className: cn(
4893
- "text-[color:var(--sofya-text-default)]",
4894
- labelClassName
4895
- ),
4896
- htmlFor: resolvedId,
4897
- children: renderTextContent(label, {
4898
- as: "span",
4899
- className: "block text-[color:var(--sofya-text-default)]",
4900
- size: "body",
4901
- style: {
4902
- fontWeight: 500
4903
- }
4904
- })
4905
- }
4906
- ) : null,
4907
- control
4908
- ] });
4785
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4786
+ FieldShell,
4787
+ {
4788
+ control,
4789
+ containerClassName,
4790
+ label,
4791
+ labelClassName,
4792
+ labelHtmlFor: resolvedId
4793
+ }
4794
+ );
4909
4795
  }
4910
4796
  );
4911
4797
  Textarea.displayName = "Textarea";
4912
4798
 
4913
4799
  // src/components/tooltip.tsx
4914
- var React31 = __toESM(require("react"), 1);
4800
+ var React35 = __toESM(require("react"), 1);
4915
4801
  var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
4916
- var import_jsx_runtime34 = require("react/jsx-runtime");
4802
+ var import_jsx_runtime37 = require("react/jsx-runtime");
4917
4803
  var TooltipProvider = TooltipPrimitive.Provider;
4918
4804
  var Tooltip = TooltipPrimitive.Root;
4919
4805
  var TooltipTrigger = TooltipPrimitive.Trigger;
4920
- var TooltipContent = React31.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
4921
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4806
+ var TooltipContent = React35.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
4807
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4922
4808
  TooltipPrimitive.Content,
4923
4809
  {
4924
4810
  ref,
@@ -4942,9 +4828,9 @@ var TooltipContent = React31.forwardRef(function TooltipContent2({ className, si
4942
4828
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
4943
4829
 
4944
4830
  // src/theme/provider.tsx
4945
- var React32 = __toESM(require("react"), 1);
4831
+ var React36 = __toESM(require("react"), 1);
4946
4832
  var import_tokens = require("@sofya-ds/tokens");
4947
- var import_jsx_runtime35 = require("react/jsx-runtime");
4833
+ var import_jsx_runtime38 = require("react/jsx-runtime");
4948
4834
  var SOFYA_FONT_LINKS = [
4949
4835
  {
4950
4836
  id: "preconnect-googleapis",
@@ -4964,7 +4850,7 @@ var SOFYA_FONT_LINKS = [
4964
4850
  }
4965
4851
  ];
4966
4852
  function useSofyaFontLinks() {
4967
- React32.useEffect(() => {
4853
+ React36.useEffect(() => {
4968
4854
  if (typeof document === "undefined") {
4969
4855
  return;
4970
4856
  }
@@ -4997,7 +4883,7 @@ function SofyaProvider({
4997
4883
  useSofyaFontLinks();
4998
4884
  const theme = (0, import_tokens.createWhitelabelTheme)(overrides ?? {}, preset);
4999
4885
  const cssVariables = (0, import_tokens.themeToCssVariables)(theme);
5000
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4886
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5001
4887
  "div",
5002
4888
  {
5003
4889
  "data-sofya-theme": theme.name,
@@ -5141,6 +5027,7 @@ var import_tokens2 = require("@sofya-ds/tokens");
5141
5027
  hexToHslChannels,
5142
5028
  iconColorOptions,
5143
5029
  iconNames,
5030
+ iconSizeMap,
5144
5031
  iconSizeOptions,
5145
5032
  inputVariantOptions,
5146
5033
  isTextContent,