@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.js CHANGED
@@ -105,110 +105,122 @@ import * as AccordionPrimitive from "@radix-ui/react-accordion";
105
105
  import * as React2 from "react";
106
106
 
107
107
  // src/components/icon-data.ts
108
- var rawIconRegistry = {
109
- "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" },
110
- "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" },
111
- "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" },
112
- "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" },
113
- "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" },
114
- "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" },
115
- "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" },
116
- "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" },
117
- "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" },
118
- "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" },
119
- "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" },
120
- "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" },
121
- "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" },
122
- "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" },
123
- "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" },
124
- "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" },
125
- "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" },
126
- "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" },
127
- "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" },
128
- "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" },
129
- "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" },
130
- "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" },
131
- "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" },
132
- "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" },
133
- "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" },
134
- "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" },
135
- "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" },
136
- "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" },
137
- "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" },
138
- "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" },
139
- "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" },
140
- "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" },
141
- "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" },
142
- "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" },
143
- "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" },
144
- "corners-out 1": { viewBox: "0 0 16 16", strokes: [
145
- { d: "M1 5V1H5", strokeWidth: 1.75, strokeLinecap: "round" },
146
- { d: "M11 1H15V5", strokeWidth: 1.75, strokeLinecap: "round" },
147
- { d: "M15 11V15H11", strokeWidth: 1.75, strokeLinecap: "round" },
148
- { d: "M5 15H1V11", strokeWidth: 1.75, strokeLinecap: "round" }
149
- ] },
150
- "corners-in 1": { viewBox: "0 0 16 16", strokes: [
151
- { d: "M1 1H5V5", strokeWidth: 1.75, strokeLinecap: "round" },
152
- { d: "M11 1H15V5", strokeWidth: 1.75, strokeLinecap: "round" },
153
- { d: "M15 11V15H11", strokeWidth: 1.75, strokeLinecap: "round" },
154
- { d: "M1 11H5V15", strokeWidth: 1.75, strokeLinecap: "round" }
155
- ] },
156
- "Volume": { viewBox: "0 0 12 14", strokes: [
157
- { d: "M1 13L1 7", strokeWidth: 2, strokeLinecap: "round" },
158
- { d: "M6 13L6 4", strokeWidth: 2, strokeLinecap: "round" },
159
- { d: "M11 13L11 1", strokeWidth: 2, strokeLinecap: "round" }
160
- ] }
108
+ import {
109
+ IconAdjustmentsHorizontalFilled,
110
+ IconArrowUp,
111
+ IconBuildingHospital,
112
+ IconBooks,
113
+ IconBulb,
114
+ IconChartBar,
115
+ IconCheck,
116
+ IconChecklist,
117
+ IconChevronDown,
118
+ IconChevronUp,
119
+ IconFile,
120
+ IconFolders,
121
+ IconHelpCircle,
122
+ IconLanguage,
123
+ IconMapPin,
124
+ IconMessages,
125
+ IconMicrophone,
126
+ IconPencil,
127
+ IconPlus,
128
+ IconSchool,
129
+ IconSearch,
130
+ IconSparkles,
131
+ IconUser,
132
+ IconUserFilled,
133
+ IconUserCircle,
134
+ IconUserSearch,
135
+ IconUsers,
136
+ IconUsersGroup,
137
+ IconX
138
+ } from "@tabler/icons-react";
139
+ var tablerIconRegistry = {
140
+ IconAdjustmentsHorizontalFilled,
141
+ IconArrowUp,
142
+ IconBuildingHospital,
143
+ IconBooks,
144
+ IconBulb,
145
+ IconChartBar,
146
+ IconCheck,
147
+ IconChecklist,
148
+ IconChevronDown,
149
+ IconChevronUp,
150
+ IconFile,
151
+ IconFolders,
152
+ IconHelpCircle,
153
+ IconLanguage,
154
+ IconMapPin,
155
+ IconMessages,
156
+ IconMicrophone,
157
+ IconPencil,
158
+ IconPlus,
159
+ IconSchool,
160
+ IconSearch,
161
+ IconSparkles,
162
+ IconUser,
163
+ IconUserFilled,
164
+ IconUserCircle,
165
+ IconUserSearch,
166
+ IconUsers,
167
+ IconUsersGroup,
168
+ IconX
161
169
  };
162
- var iconNameMap = {
163
- "files": "files",
164
- "books": "books",
165
- "file-magnifying-glass": "file-magnifying-glass",
166
- "minus": "minus",
167
- "plus": "plus",
168
- "arrows-in-simple": "arrows-in-simple",
169
- "check": "check",
170
- "caret-down": "caret-down",
171
- "lightbulb": "lightbulb",
172
- "chats": "chats",
173
- "file": "file",
174
- "folders": "folders",
175
- "sparkle": "sparkle",
176
- "microphone-stage": "microphone-stage",
177
- "battery-low": "battery-low",
178
- "microphone": "microphone",
179
- "microphone-slash": "microphone-slash",
180
- "play": "play",
181
- "x": "x",
182
- "mail": "Mail",
183
- "pause": "pause",
184
- "broadcast": "broadcast",
185
- "sidebar-simple": "sidebar-simple",
186
- "pencil-simple-line": "pencil-simple-line",
187
- "search": "search",
188
- "list-dashes": "list-dashes",
189
- "brain": "brain",
190
- "eye": "eye",
191
- "frame": "Frame",
192
- "arrow-up": "arrow-up",
193
- "question": "question",
194
- "caret-up": "caret-up",
195
- "stop-1": "stop 1",
196
- "pause-1": "pause 1",
197
- "play-1": "play 1",
198
- "corners-out-1": "corners-out 1",
199
- "corners-in-1": "corners-in 1",
200
- "volume": "Volume"
170
+ var tablerIconNames = Object.keys(tablerIconRegistry).sort(
171
+ (left, right) => left.localeCompare(right)
172
+ );
173
+ function resolveTablerIcon(name) {
174
+ const candidate = tablerIconRegistry[name];
175
+ if (!candidate) {
176
+ throw new Error(
177
+ `Icon could not resolve Tabler icon \`${name}\`. Import it and append it to tablerIconRegistry before using it.`
178
+ );
179
+ }
180
+ return candidate;
181
+ }
182
+ var legacyIconToTablerNameMap = {
183
+ "adjustments-horizontal-filled": "IconAdjustmentsHorizontalFilled",
184
+ "books": "IconBooks",
185
+ "organization": "IconBuildingHospital",
186
+ "locations": "IconMapPin",
187
+ "people": "IconUsers",
188
+ "terminologies": "IconLanguage",
189
+ "guidelines": "IconChecklist",
190
+ "logs": "IconChartBar",
191
+ "profile": "IconUserSearch",
192
+ "experience": "IconSchool",
193
+ "voice": "IconMicrophone",
194
+ "plus": "IconPlus",
195
+ "check": "IconCheck",
196
+ "caret-down": "IconChevronDown",
197
+ "lightbulb": "IconBulb",
198
+ "chats": "IconMessages",
199
+ "file": "IconFile",
200
+ "folders": "IconFolders",
201
+ "sparkle": "IconSparkles",
202
+ "x": "IconX",
203
+ "pencil-simple-line": "IconPencil",
204
+ "search": "IconSearch",
205
+ "arrow-up": "IconArrowUp",
206
+ "question": "IconHelpCircle",
207
+ "user-filled": "IconUserFilled",
208
+ "caret-up": "IconChevronUp",
209
+ "users-group": "IconUsersGroup"
201
210
  };
211
+ var iconNames = Object.keys(legacyIconToTablerNameMap);
202
212
  var iconRegistry = Object.fromEntries(
203
- Object.entries(iconNameMap).map(([canonicalName, rawName]) => [
204
- canonicalName,
205
- rawIconRegistry[rawName]
213
+ Object.entries(legacyIconToTablerNameMap).map(([name, tablerName]) => [
214
+ name,
215
+ resolveTablerIcon(tablerName)
206
216
  ])
207
217
  );
208
- var iconNames = Object.keys(iconNameMap);
218
+ var iconNameMap = Object.fromEntries(
219
+ iconNames.map((name) => [name, name])
220
+ );
209
221
 
210
222
  // src/components/icon.tsx
211
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
223
+ import { jsx as jsx2 } from "react/jsx-runtime";
212
224
  var iconSizeOptions = ["xs", "sm", "md", "lg", "xl"];
213
225
  var iconColorOptions = [
214
226
  "current",
@@ -246,7 +258,7 @@ var iconColorOptions = [
246
258
  "agent-mint",
247
259
  "agent-green"
248
260
  ];
249
- var iconSizeScale = {
261
+ var iconSizeMap = {
250
262
  xs: 12,
251
263
  sm: 16,
252
264
  md: 20,
@@ -289,7 +301,7 @@ var iconColorScale = {
289
301
  "agent-green": "var(--sofya-agent-green)"
290
302
  };
291
303
  function resolveIconSize(size) {
292
- return typeof size === "number" ? size : iconSizeScale[size];
304
+ return typeof size === "number" ? size : iconSizeMap[size];
293
305
  }
294
306
  function resolveIconColor(color) {
295
307
  if (!color || color === "current") {
@@ -297,55 +309,43 @@ function resolveIconColor(color) {
297
309
  }
298
310
  return iconColorScale[color];
299
311
  }
300
- var Icon = React2.forwardRef(function Icon2({
301
- name,
302
- size = "md",
303
- color = "current",
304
- title,
305
- strokeWidth = 2,
306
- className,
307
- style,
308
- ...props
309
- }, ref) {
310
- const icon = iconRegistry[name];
311
- const titleId = React2.useId();
312
+ var Icon = React2.forwardRef(function Icon2(incomingProps, ref) {
313
+ const {
314
+ decorative,
315
+ size = "md",
316
+ color = "current",
317
+ title,
318
+ strokeWidth = 2,
319
+ className,
320
+ style
321
+ } = incomingProps;
322
+ const IconComponent = iconRegistry[incomingProps.name];
323
+ const {
324
+ decorative: _decorative,
325
+ color: _color,
326
+ name: _name,
327
+ size: _size,
328
+ strokeWidth: _strokeWidth,
329
+ title: _title,
330
+ ...props
331
+ } = incomingProps;
312
332
  const dimension = resolveIconSize(size);
313
333
  const resolvedColor = resolveIconColor(color);
314
334
  const resolvedStyle = resolvedColor ? { ...style, color: resolvedColor } : style;
315
- const fillPath = "d" in icon ? icon.d : void 0;
316
- const strokePaths = "strokes" in icon ? icon.strokes : void 0;
317
- return /* @__PURE__ */ jsxs(
318
- "svg",
335
+ const isDecorative = decorative ?? !title;
336
+ return /* @__PURE__ */ jsx2(
337
+ IconComponent,
319
338
  {
320
339
  ref,
321
- xmlns: "http://www.w3.org/2000/svg",
322
- viewBox: icon.viewBox,
323
340
  className: cn("inline-block shrink-0 align-middle", className),
324
- fill: "none",
325
- role: title ? "img" : void 0,
326
- "aria-hidden": title ? void 0 : true,
327
- "aria-labelledby": title ? titleId : void 0,
341
+ role: isDecorative ? void 0 : "img",
342
+ "aria-hidden": isDecorative ? true : void 0,
328
343
  focusable: "false",
329
344
  ...props,
330
- width: dimension,
331
- height: dimension,
332
- style: resolvedStyle,
333
- children: [
334
- title ? /* @__PURE__ */ jsx2("title", { id: titleId, children: title }) : null,
335
- fillPath ? /* @__PURE__ */ jsx2("path", { d: fillPath, fill: "currentColor" }) : null,
336
- strokePaths?.map((path, index) => /* @__PURE__ */ jsx2(
337
- "path",
338
- {
339
- d: path.d,
340
- fill: "none",
341
- stroke: "currentColor",
342
- strokeWidth: path.strokeWidth ?? strokeWidth,
343
- strokeLinecap: path.strokeLinecap ?? "round",
344
- strokeLinejoin: "round"
345
- },
346
- `${name}-${index}`
347
- ))
348
- ]
345
+ size: dimension,
346
+ title,
347
+ stroke: strokeWidth,
348
+ style: resolvedStyle
349
349
  }
350
350
  );
351
351
  });
@@ -566,7 +566,7 @@ function renderTextContent(children, { as, className, size = "body", style, vari
566
566
  }
567
567
 
568
568
  // src/components/accordion.tsx
569
- import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
569
+ import { jsx as jsx4, jsxs } from "react/jsx-runtime";
570
570
  var Accordion = AccordionPrimitive.Root;
571
571
  var AccordionItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx4(
572
572
  AccordionPrimitive.Item,
@@ -580,7 +580,7 @@ var AccordionItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PU
580
580
  }
581
581
  ));
582
582
  AccordionItem.displayName = AccordionPrimitive.Item.displayName;
583
- var AccordionTrigger = React4.forwardRef(({ className, children, indicator, ...props }, ref) => /* @__PURE__ */ jsx4(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs2(
583
+ var AccordionTrigger = React4.forwardRef(({ className, children, indicator, ...props }, ref) => /* @__PURE__ */ jsx4(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
584
584
  AccordionPrimitive.Trigger,
585
585
  {
586
586
  ref,
@@ -633,7 +633,7 @@ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
633
633
  // src/components/alert.tsx
634
634
  import * as React5 from "react";
635
635
  import { cva as cva2 } from "class-variance-authority";
636
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
636
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
637
637
  var alertToneOptions = [
638
638
  "default",
639
639
  "info",
@@ -683,7 +683,7 @@ var Alert = React5.forwardRef(function Alert2({
683
683
  const resolvedRole = role ?? (resolvedTone === "warning" || resolvedTone === "destructive" ? "alert" : "status");
684
684
  const toneIconName = resolvedTone !== "default" ? toneIconMap[resolvedTone] : void 0;
685
685
  const resolvedIcon = icon ?? (showToneIcon && toneIconName ? /* @__PURE__ */ jsx5(Icon, { name: toneIconName, size: 16, "aria-hidden": "true" }) : null);
686
- return /* @__PURE__ */ jsxs3(
686
+ return /* @__PURE__ */ jsxs2(
687
687
  "div",
688
688
  {
689
689
  ref,
@@ -814,10 +814,10 @@ function Badge({ className, variant, alert, pillTone, ...props }) {
814
814
  }
815
815
 
816
816
  // src/components/button.tsx
817
- import * as React6 from "react";
817
+ import * as React8 from "react";
818
+ import { IconLoader2 } from "@tabler/icons-react";
818
819
  import { Slot } from "@radix-ui/react-slot";
819
820
  import { cva as cva4 } from "class-variance-authority";
820
- import { motion, useReducedMotion } from "motion/react";
821
821
 
822
822
  // src/components/button-language-flags.ts
823
823
  function createFlagDataUri(svg) {
@@ -941,8 +941,271 @@ var dropdownLanguageFlagSrc = {
941
941
  `)
942
942
  };
943
943
 
944
+ // src/components/button-ripple.tsx
945
+ import * as React6 from "react";
946
+ import { motion, useReducedMotion } from "motion/react";
947
+ import { jsx as jsx7 } from "react/jsx-runtime";
948
+ var MAX_ACTIVE_RIPPLES = 3;
949
+ var buttonRippleVariantClasses = {
950
+ default: "bg-[hsl(var(--sofya-primary-foreground)/0.82)] mix-blend-screen",
951
+ gradient: "bg-[hsl(var(--sofya-primary-foreground)/0.8)] mix-blend-screen",
952
+ dropdown: "bg-[hsl(var(--sofya-primary)/0.36)]",
953
+ icon: "bg-[hsl(var(--sofya-primary)/0.34)]",
954
+ language: "bg-[hsl(var(--sofya-background)/0.76)] mix-blend-screen",
955
+ secondary: "bg-[hsl(var(--sofya-primary)/0.30)]",
956
+ outline: "bg-[hsl(var(--sofya-primary)/0.32)]",
957
+ ghost: "bg-[hsl(var(--sofya-primary)/0.28)]",
958
+ destructive: "bg-[hsl(var(--sofya-destructive-foreground)/0.78)] mix-blend-screen"
959
+ };
960
+ var buttonRippleBaseSize = {
961
+ default: 20,
962
+ sm: 18,
963
+ lg: 22,
964
+ icon: 18
965
+ };
966
+ function useButtonRippleState({
967
+ disabled,
968
+ onClick,
969
+ onPointerDown,
970
+ size,
971
+ variant
972
+ }) {
973
+ const prefersReducedMotion = Boolean(useReducedMotion());
974
+ const [ripples, setRipples] = React6.useState([]);
975
+ const rippleIdRef = React6.useRef(0);
976
+ const lastRippleAtRef = React6.useRef(0);
977
+ const handleRippleComplete = React6.useCallback((rippleId) => {
978
+ setRipples(
979
+ (currentRipples) => currentRipples.filter((currentRipple) => currentRipple.id !== rippleId)
980
+ );
981
+ }, []);
982
+ const createRipple = React6.useCallback(
983
+ (currentTarget, clientX, clientY) => {
984
+ const now = performance.now();
985
+ if (now - lastRippleAtRef.current < 48) {
986
+ return;
987
+ }
988
+ lastRippleAtRef.current = now;
989
+ const rect = currentTarget.getBoundingClientRect();
990
+ const hasPointerPosition = clientX !== void 0 && clientY !== void 0;
991
+ const x = hasPointerPosition ? clientX - rect.left : rect.width / 2;
992
+ const y = hasPointerPosition ? clientY - rect.top : rect.height / 2;
993
+ const radius = Math.max(
994
+ Math.hypot(x, y),
995
+ Math.hypot(rect.width - x, y),
996
+ Math.hypot(x, rect.height - y),
997
+ Math.hypot(rect.width - x, rect.height - y)
998
+ );
999
+ const baseSize = buttonRippleBaseSize[size];
1000
+ const finalDiameter = Math.max(
1001
+ radius * 2 + 24,
1002
+ Math.max(rect.width, rect.height) + 18
1003
+ );
1004
+ setRipples((currentRipples) => {
1005
+ const nextRipple = {
1006
+ id: rippleIdRef.current++,
1007
+ scale: finalDiameter / baseSize,
1008
+ size: baseSize,
1009
+ x: x - baseSize / 2,
1010
+ y: y - baseSize / 2
1011
+ };
1012
+ const nextRipples = [...currentRipples, nextRipple];
1013
+ if (nextRipples.length > MAX_ACTIVE_RIPPLES) {
1014
+ return nextRipples.slice(nextRipples.length - MAX_ACTIVE_RIPPLES);
1015
+ }
1016
+ return nextRipples;
1017
+ });
1018
+ },
1019
+ [size]
1020
+ );
1021
+ const handlePointerDown = React6.useCallback(
1022
+ (event) => {
1023
+ onPointerDown?.(event);
1024
+ if (event.defaultPrevented || disabled) {
1025
+ return;
1026
+ }
1027
+ if (prefersReducedMotion) {
1028
+ return;
1029
+ }
1030
+ if (event.button === 0) {
1031
+ createRipple(
1032
+ event.currentTarget,
1033
+ event.clientX,
1034
+ event.clientY
1035
+ );
1036
+ }
1037
+ },
1038
+ [createRipple, disabled, onPointerDown, prefersReducedMotion]
1039
+ );
1040
+ const handleClick = React6.useCallback(
1041
+ (event) => {
1042
+ if (!disabled && !prefersReducedMotion && event.detail === 0) {
1043
+ createRipple(event.currentTarget);
1044
+ }
1045
+ onClick?.(event);
1046
+ },
1047
+ [createRipple, disabled, onClick, prefersReducedMotion]
1048
+ );
1049
+ return {
1050
+ handleClick,
1051
+ handlePointerDown,
1052
+ handleRippleComplete,
1053
+ prefersReducedMotion,
1054
+ rippleClassName: buttonRippleVariantClasses[variant],
1055
+ ripples
1056
+ };
1057
+ }
1058
+ function ButtonRippleLayer({
1059
+ onAnimationComplete,
1060
+ prefersReducedMotion,
1061
+ rippleClassName,
1062
+ ripples
1063
+ }) {
1064
+ if (ripples.length === 0) {
1065
+ return null;
1066
+ }
1067
+ return /* @__PURE__ */ jsx7(
1068
+ "span",
1069
+ {
1070
+ "aria-hidden": "true",
1071
+ className: "pointer-events-none absolute inset-0 z-[1] overflow-hidden rounded-[inherit]",
1072
+ children: ripples.map((ripple) => /* @__PURE__ */ jsx7(
1073
+ motion.span,
1074
+ {
1075
+ className: cn(
1076
+ "absolute rounded-full will-change-transform transform-gpu",
1077
+ rippleClassName
1078
+ ),
1079
+ initial: prefersReducedMotion ? { opacity: 0.32, scale: 0.72 } : { opacity: 0.56, scale: 0 },
1080
+ animate: prefersReducedMotion ? { opacity: 0, scale: 1.02 } : { opacity: [0.56, 0.26, 0], scale: ripple.scale },
1081
+ transition: prefersReducedMotion ? { duration: 0.2, ease: "linear" } : {
1082
+ duration: 0.62,
1083
+ times: [0, 0.35, 1],
1084
+ ease: [0.16, 1, 0.3, 1]
1085
+ },
1086
+ style: {
1087
+ height: ripple.size,
1088
+ left: ripple.x,
1089
+ top: ripple.y,
1090
+ transformOrigin: "center center",
1091
+ width: ripple.size
1092
+ },
1093
+ onAnimationComplete: () => {
1094
+ onAnimationComplete(ripple.id);
1095
+ }
1096
+ },
1097
+ ripple.id
1098
+ ))
1099
+ }
1100
+ );
1101
+ }
1102
+
1103
+ // src/components/button-loading-state.ts
1104
+ import * as React7 from "react";
1105
+ var BUTTON_SEQUENCE_MS = 250;
1106
+ function useButtonLoadingState({
1107
+ buttonRef,
1108
+ children,
1109
+ leftIcon,
1110
+ loading,
1111
+ rightIcon
1112
+ }) {
1113
+ const expandedWidthRef = React7.useRef(void 0);
1114
+ const previousLoadingRef = React7.useRef(loading);
1115
+ const timeoutsRef = React7.useRef([]);
1116
+ const frameRef = React7.useRef(null);
1117
+ const [animatedWidth, setAnimatedWidth] = React7.useState(void 0);
1118
+ const [loadingPhase, setLoadingPhase] = React7.useState(
1119
+ loading ? "loading" : "idle"
1120
+ );
1121
+ const clearAnimationTimers = React7.useCallback(() => {
1122
+ for (const timeoutId of timeoutsRef.current) {
1123
+ window.clearTimeout(timeoutId);
1124
+ }
1125
+ timeoutsRef.current = [];
1126
+ if (frameRef.current !== null) {
1127
+ window.cancelAnimationFrame(frameRef.current);
1128
+ frameRef.current = null;
1129
+ }
1130
+ }, []);
1131
+ React7.useLayoutEffect(() => {
1132
+ const element = buttonRef.current;
1133
+ if (element && loadingPhase === "idle" && !loading) {
1134
+ expandedWidthRef.current = element.offsetWidth;
1135
+ }
1136
+ if (element && loadingPhase === "loading" && animatedWidth === void 0) {
1137
+ setAnimatedWidth(element.offsetHeight);
1138
+ }
1139
+ }, [animatedWidth, buttonRef, loading, loadingPhase, children, leftIcon, rightIcon]);
1140
+ React7.useEffect(() => {
1141
+ return () => {
1142
+ clearAnimationTimers();
1143
+ };
1144
+ }, [clearAnimationTimers]);
1145
+ React7.useEffect(() => {
1146
+ const element = buttonRef.current;
1147
+ if (!element) {
1148
+ return;
1149
+ }
1150
+ const previousLoading = previousLoadingRef.current;
1151
+ previousLoadingRef.current = loading;
1152
+ if (previousLoading === loading) {
1153
+ return;
1154
+ }
1155
+ clearAnimationTimers();
1156
+ if (loading) {
1157
+ const currentWidth2 = element.offsetWidth;
1158
+ const collapsedWidth = element.offsetHeight;
1159
+ expandedWidthRef.current = currentWidth2;
1160
+ setAnimatedWidth(currentWidth2);
1161
+ setLoadingPhase("hiding-content");
1162
+ timeoutsRef.current.push(
1163
+ window.setTimeout(() => {
1164
+ setLoadingPhase("collapsing");
1165
+ setAnimatedWidth(collapsedWidth);
1166
+ }, BUTTON_SEQUENCE_MS)
1167
+ );
1168
+ timeoutsRef.current.push(
1169
+ window.setTimeout(() => {
1170
+ setLoadingPhase("loading");
1171
+ }, BUTTON_SEQUENCE_MS * 2)
1172
+ );
1173
+ return;
1174
+ }
1175
+ const currentWidth = element.offsetWidth;
1176
+ const expandedWidth = expandedWidthRef.current ?? Math.max(element.scrollWidth, currentWidth);
1177
+ setAnimatedWidth(currentWidth);
1178
+ setLoadingPhase("hiding-spinner");
1179
+ timeoutsRef.current.push(
1180
+ window.setTimeout(() => {
1181
+ setLoadingPhase("expanding");
1182
+ frameRef.current = window.requestAnimationFrame(() => {
1183
+ frameRef.current = window.requestAnimationFrame(() => {
1184
+ setAnimatedWidth(expandedWidth);
1185
+ });
1186
+ });
1187
+ }, BUTTON_SEQUENCE_MS)
1188
+ );
1189
+ timeoutsRef.current.push(
1190
+ window.setTimeout(() => {
1191
+ setLoadingPhase("revealing-content");
1192
+ }, BUTTON_SEQUENCE_MS * 2)
1193
+ );
1194
+ timeoutsRef.current.push(
1195
+ window.setTimeout(() => {
1196
+ setLoadingPhase("idle");
1197
+ setAnimatedWidth(void 0);
1198
+ }, BUTTON_SEQUENCE_MS * 3)
1199
+ );
1200
+ }, [buttonRef, clearAnimationTimers, loading]);
1201
+ return {
1202
+ animatedWidth,
1203
+ loadingPhase
1204
+ };
1205
+ }
1206
+
944
1207
  // src/components/button.tsx
945
- import { Fragment, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
1208
+ import { Fragment, jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
946
1209
  var buttonVariantOptions = [
947
1210
  "default",
948
1211
  "gradient",
@@ -955,17 +1218,6 @@ var buttonVariantOptions = [
955
1218
  "destructive"
956
1219
  ];
957
1220
  var buttonSizeOptions = ["default", "sm", "lg", "icon"];
958
- var buttonRippleVariantClasses = {
959
- default: "bg-[hsl(var(--sofya-primary-foreground)/0.82)] mix-blend-screen",
960
- gradient: "bg-[hsl(var(--sofya-primary-foreground)/0.8)] mix-blend-screen",
961
- dropdown: "bg-[hsl(var(--sofya-primary)/0.36)]",
962
- icon: "bg-[hsl(var(--sofya-primary)/0.34)]",
963
- language: "bg-[hsl(var(--sofya-background)/0.76)] mix-blend-screen",
964
- secondary: "bg-[hsl(var(--sofya-primary)/0.30)]",
965
- outline: "bg-[hsl(var(--sofya-primary)/0.32)]",
966
- ghost: "bg-[hsl(var(--sofya-primary)/0.28)]",
967
- destructive: "bg-[hsl(var(--sofya-destructive-foreground)/0.78)] mix-blend-screen"
968
- };
969
1221
  var buttonVariants = cva4(
970
1222
  "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",
971
1223
  {
@@ -994,7 +1246,6 @@ var buttonVariants = cva4(
994
1246
  }
995
1247
  }
996
1248
  );
997
- var BUTTON_SEQUENCE_MS = 250;
998
1249
  var loadingSpinnerSizeClasses = {
999
1250
  default: "h-4 w-4",
1000
1251
  sm: "h-3.5 w-3.5",
@@ -1007,52 +1258,21 @@ var languageButtonSizeClasses = {
1007
1258
  lg: "h-12 w-12 rounded-full p-0",
1008
1259
  icon: "h-11 w-11 rounded-full p-0"
1009
1260
  };
1010
- var buttonRippleBaseSize = {
1011
- default: 20,
1012
- sm: 18,
1013
- lg: 22,
1014
- icon: 18
1015
- };
1016
1261
  function ButtonSpinner({
1017
1262
  size
1018
1263
  }) {
1019
- return /* @__PURE__ */ jsxs4(
1020
- "svg",
1264
+ return /* @__PURE__ */ jsx8(
1265
+ IconLoader2,
1021
1266
  {
1022
1267
  "aria-hidden": "true",
1023
1268
  className: cn(
1024
1269
  "animate-spin text-current",
1025
1270
  loadingSpinnerSizeClasses[size]
1026
- ),
1027
- viewBox: "0 0 24 24",
1028
- fill: "none",
1029
- xmlns: "http://www.w3.org/2000/svg",
1030
- children: [
1031
- /* @__PURE__ */ jsx7(
1032
- "circle",
1033
- {
1034
- cx: "12",
1035
- cy: "12",
1036
- r: "9",
1037
- className: "opacity-20",
1038
- stroke: "currentColor",
1039
- strokeWidth: "3"
1040
- }
1041
- ),
1042
- /* @__PURE__ */ jsx7(
1043
- "path",
1044
- {
1045
- d: "M21 12A9 9 0 0 0 12 3",
1046
- stroke: "currentColor",
1047
- strokeWidth: "3",
1048
- strokeLinecap: "round"
1049
- }
1050
- )
1051
- ]
1271
+ )
1052
1272
  }
1053
1273
  );
1054
1274
  }
1055
- var Button = React6.forwardRef(
1275
+ var Button = React8.forwardRef(
1056
1276
  ({
1057
1277
  active = false,
1058
1278
  disabled,
@@ -1071,20 +1291,9 @@ var Button = React6.forwardRef(
1071
1291
  style,
1072
1292
  ...props
1073
1293
  }, ref) => {
1074
- const buttonRef = React6.useRef(null);
1075
- const expandedWidthRef = React6.useRef(void 0);
1076
- const previousLoadingRef = React6.useRef(loading);
1077
- const timeoutsRef = React6.useRef([]);
1078
- const frameRef = React6.useRef(null);
1079
- const [animatedWidth, setAnimatedWidth] = React6.useState(void 0);
1080
- const [loadingPhase, setLoadingPhase] = React6.useState(
1081
- loading ? "loading" : "idle"
1082
- );
1083
- const [ripples, setRipples] = React6.useState([]);
1084
- const rippleIdRef = React6.useRef(0);
1294
+ const buttonRef = React8.useRef(null);
1085
1295
  const Component = asChild ? Slot : "button";
1086
- const prefersReducedMotion = useReducedMotion();
1087
- const hasChildren = React6.Children.count(children) > 0;
1296
+ const hasChildren = React8.Children.count(children) > 0;
1088
1297
  const isIconOnly = !hasChildren && Boolean(leftIcon || rightIcon);
1089
1298
  const isIconOnlyAction = variant === "icon" && isIconOnly;
1090
1299
  const resolvedSize = size ?? (isIconOnly ? "icon" : "default");
@@ -1095,6 +1304,13 @@ var Button = React6.forwardRef(
1095
1304
  const resolvedLanguageLabel = resolvedLanguageLocale ? buttonLanguageLabels[resolvedLanguageLocale] : void 0;
1096
1305
  const iconSlotClassName = "inline-flex shrink-0 items-center justify-center [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0";
1097
1306
  const iconOnlyNode = leftIcon ?? rightIcon;
1307
+ const { animatedWidth, loadingPhase } = useButtonLoadingState({
1308
+ buttonRef,
1309
+ children,
1310
+ leftIcon,
1311
+ loading,
1312
+ rightIcon
1313
+ });
1098
1314
  const isDisabled = disabled || loadingPhase !== "idle";
1099
1315
  const resolvedWidthStyle = animatedWidth === void 0 ? style?.width : `${animatedWidth}px`;
1100
1316
  const isCompactPhase = loadingPhase === "collapsing" || loadingPhase === "loading" || loadingPhase === "hiding-spinner";
@@ -1117,153 +1333,26 @@ var Button = React6.forwardRef(
1117
1333
  backgroundSize: "cover"
1118
1334
  } : void 0
1119
1335
  };
1120
- const resolvedRippleClassName = buttonRippleVariantClasses[resolvedVariant];
1121
- const handleRippleComplete = React6.useCallback((rippleId) => {
1122
- setRipples(
1123
- (currentRipples) => currentRipples.filter((currentRipple) => currentRipple.id !== rippleId)
1124
- );
1125
- }, []);
1126
- const createRipple = React6.useCallback(
1127
- (currentTarget, clientX, clientY) => {
1128
- const rect = currentTarget.getBoundingClientRect();
1129
- const hasPointerPosition = clientX !== void 0 && clientY !== void 0;
1130
- const x = hasPointerPosition ? clientX - rect.left : rect.width / 2;
1131
- const y = hasPointerPosition ? clientY - rect.top : rect.height / 2;
1132
- const radius = Math.max(
1133
- Math.hypot(x, y),
1134
- Math.hypot(rect.width - x, y),
1135
- Math.hypot(x, rect.height - y),
1136
- Math.hypot(rect.width - x, rect.height - y)
1137
- );
1138
- const baseSize = buttonRippleBaseSize[resolvedSize];
1139
- const finalDiameter = Math.max(
1140
- radius * 2 + 24,
1141
- Math.max(rect.width, rect.height) + 18
1142
- );
1143
- setRipples((currentRipples) => [
1144
- ...currentRipples,
1145
- {
1146
- id: rippleIdRef.current++,
1147
- scale: finalDiameter / baseSize,
1148
- size: baseSize,
1149
- x: x - baseSize / 2,
1150
- y: y - baseSize / 2
1151
- }
1152
- ]);
1153
- },
1154
- [resolvedSize]
1155
- );
1156
- const handlePointerDown = React6.useCallback(
1157
- (event) => {
1158
- onPointerDown?.(event);
1159
- if (event.defaultPrevented || isDisabled) {
1160
- return;
1161
- }
1162
- if (event.button === 0) {
1163
- createRipple(
1164
- event.currentTarget,
1165
- event.clientX,
1166
- event.clientY
1167
- );
1168
- }
1169
- },
1170
- [createRipple, isDisabled, onPointerDown]
1171
- );
1172
- const handleClick = React6.useCallback(
1173
- (event) => {
1174
- if (!isDisabled && event.detail === 0) {
1175
- createRipple(event.currentTarget);
1176
- }
1177
- onClick?.(event);
1178
- },
1179
- [createRipple, isDisabled, onClick]
1180
- );
1181
- const clearAnimationTimers = React6.useCallback(() => {
1182
- for (const timeoutId of timeoutsRef.current) {
1183
- window.clearTimeout(timeoutId);
1184
- }
1185
- timeoutsRef.current = [];
1186
- if (frameRef.current !== null) {
1187
- window.cancelAnimationFrame(frameRef.current);
1188
- frameRef.current = null;
1189
- }
1190
- }, []);
1191
- React6.useImperativeHandle(
1336
+ const {
1337
+ handleClick,
1338
+ handlePointerDown,
1339
+ handleRippleComplete,
1340
+ prefersReducedMotion,
1341
+ rippleClassName,
1342
+ ripples
1343
+ } = useButtonRippleState({
1344
+ disabled: isDisabled,
1345
+ onClick,
1346
+ onPointerDown,
1347
+ size: resolvedSize,
1348
+ variant: resolvedVariant
1349
+ });
1350
+ React8.useImperativeHandle(
1192
1351
  ref,
1193
1352
  () => buttonRef.current
1194
1353
  );
1195
- React6.useLayoutEffect(() => {
1196
- const element = buttonRef.current;
1197
- if (element && loadingPhase === "idle" && !loading) {
1198
- expandedWidthRef.current = element.offsetWidth;
1199
- }
1200
- if (element && loadingPhase === "loading" && animatedWidth === void 0) {
1201
- setAnimatedWidth(element.offsetHeight);
1202
- }
1203
- }, [animatedWidth, loading, loadingPhase, children, leftIcon, rightIcon]);
1204
- React6.useEffect(() => {
1205
- return () => {
1206
- clearAnimationTimers();
1207
- };
1208
- }, [clearAnimationTimers]);
1209
- React6.useEffect(() => {
1210
- const element = buttonRef.current;
1211
- if (!element) {
1212
- return;
1213
- }
1214
- const previousLoading = previousLoadingRef.current;
1215
- previousLoadingRef.current = loading;
1216
- if (previousLoading === loading) {
1217
- return;
1218
- }
1219
- clearAnimationTimers();
1220
- if (loading) {
1221
- const currentWidth2 = element.offsetWidth;
1222
- const collapsedWidth = element.offsetHeight;
1223
- expandedWidthRef.current = currentWidth2;
1224
- setAnimatedWidth(currentWidth2);
1225
- setLoadingPhase("hiding-content");
1226
- timeoutsRef.current.push(
1227
- window.setTimeout(() => {
1228
- setLoadingPhase("collapsing");
1229
- setAnimatedWidth(collapsedWidth);
1230
- }, BUTTON_SEQUENCE_MS)
1231
- );
1232
- timeoutsRef.current.push(
1233
- window.setTimeout(() => {
1234
- setLoadingPhase("loading");
1235
- }, BUTTON_SEQUENCE_MS * 2)
1236
- );
1237
- return;
1238
- }
1239
- const currentWidth = element.offsetWidth;
1240
- const expandedWidth = expandedWidthRef.current ?? Math.max(element.scrollWidth, currentWidth);
1241
- setAnimatedWidth(currentWidth);
1242
- setLoadingPhase("hiding-spinner");
1243
- timeoutsRef.current.push(
1244
- window.setTimeout(() => {
1245
- setLoadingPhase("expanding");
1246
- frameRef.current = window.requestAnimationFrame(() => {
1247
- frameRef.current = window.requestAnimationFrame(() => {
1248
- setAnimatedWidth(expandedWidth);
1249
- });
1250
- });
1251
- }, BUTTON_SEQUENCE_MS)
1252
- );
1253
- timeoutsRef.current.push(
1254
- window.setTimeout(() => {
1255
- setLoadingPhase("revealing-content");
1256
- }, BUTTON_SEQUENCE_MS * 2)
1257
- );
1258
- timeoutsRef.current.push(
1259
- window.setTimeout(() => {
1260
- setLoadingPhase("idle");
1261
- setAnimatedWidth(void 0);
1262
- }, BUTTON_SEQUENCE_MS * 3)
1263
- );
1264
- }, [children, clearAnimationTimers, leftIcon, loading, rightIcon]);
1265
- const buttonContent = isLanguageButton ? null : isIconOnly ? /* @__PURE__ */ jsx7("span", { className: iconSlotClassName, children: iconOnlyNode }) : /* @__PURE__ */ jsxs4(Fragment, { children: [
1266
- leftIcon ? /* @__PURE__ */ jsx7("span", { className: iconSlotClassName, children: leftIcon }) : null,
1354
+ const buttonContent = isLanguageButton ? null : isIconOnly ? /* @__PURE__ */ jsx8("span", { className: iconSlotClassName, children: iconOnlyNode }) : /* @__PURE__ */ jsxs3(Fragment, { children: [
1355
+ leftIcon ? /* @__PURE__ */ jsx8("span", { className: iconSlotClassName, children: leftIcon }) : null,
1267
1356
  hasChildren ? renderTextContent(children, {
1268
1357
  as: "span",
1269
1358
  className: "inline-flex items-center text-current",
@@ -1273,9 +1362,9 @@ var Button = React6.forwardRef(
1273
1362
  letterSpacing: "inherit"
1274
1363
  }
1275
1364
  }) : null,
1276
- rightIcon ? /* @__PURE__ */ jsx7("span", { className: iconSlotClassName, children: rightIcon }) : null
1365
+ rightIcon ? /* @__PURE__ */ jsx8("span", { className: iconSlotClassName, children: rightIcon }) : null
1277
1366
  ] });
1278
- return /* @__PURE__ */ jsxs4(
1367
+ return /* @__PURE__ */ jsxs3(
1279
1368
  Component,
1280
1369
  {
1281
1370
  className: cn(
@@ -1296,41 +1385,16 @@ var Button = React6.forwardRef(
1296
1385
  style: { ...resolvedButtonStyle, width: resolvedWidthStyle },
1297
1386
  ...props,
1298
1387
  children: [
1299
- /* @__PURE__ */ jsx7(
1300
- "span",
1388
+ /* @__PURE__ */ jsx8(
1389
+ ButtonRippleLayer,
1301
1390
  {
1302
- "aria-hidden": "true",
1303
- className: "pointer-events-none absolute inset-0 z-[1] overflow-hidden rounded-[inherit]",
1304
- children: ripples.map((ripple) => /* @__PURE__ */ jsx7(
1305
- motion.span,
1306
- {
1307
- className: cn(
1308
- "absolute rounded-full will-change-transform transform-gpu",
1309
- resolvedRippleClassName
1310
- ),
1311
- initial: prefersReducedMotion ? { opacity: 0.32, scale: 0.72 } : { opacity: 0.56, scale: 0 },
1312
- animate: prefersReducedMotion ? { opacity: 0, scale: 1.02 } : { opacity: [0.56, 0.26, 0], scale: ripple.scale },
1313
- transition: prefersReducedMotion ? { duration: 0.2, ease: "linear" } : {
1314
- duration: 0.62,
1315
- times: [0, 0.35, 1],
1316
- ease: [0.16, 1, 0.3, 1]
1317
- },
1318
- style: {
1319
- height: ripple.size,
1320
- left: ripple.x,
1321
- top: ripple.y,
1322
- transformOrigin: "center center",
1323
- width: ripple.size
1324
- },
1325
- onAnimationComplete: () => {
1326
- handleRippleComplete(ripple.id);
1327
- }
1328
- },
1329
- ripple.id
1330
- ))
1391
+ onAnimationComplete: handleRippleComplete,
1392
+ prefersReducedMotion,
1393
+ rippleClassName,
1394
+ ripples
1331
1395
  }
1332
1396
  ),
1333
- /* @__PURE__ */ jsx7(
1397
+ /* @__PURE__ */ jsx8(
1334
1398
  "span",
1335
1399
  {
1336
1400
  className: cn(
@@ -1340,7 +1404,7 @@ var Button = React6.forwardRef(
1340
1404
  children: buttonContent
1341
1405
  }
1342
1406
  ),
1343
- /* @__PURE__ */ jsx7(
1407
+ /* @__PURE__ */ jsx8(
1344
1408
  "span",
1345
1409
  {
1346
1410
  "aria-hidden": "true",
@@ -1348,7 +1412,7 @@ var Button = React6.forwardRef(
1348
1412
  "pointer-events-none absolute inset-0 z-[2] flex items-center justify-center transition-opacity duration-sofya ease-sofya",
1349
1413
  showSpinner ? "opacity-100" : "opacity-0"
1350
1414
  ),
1351
- children: /* @__PURE__ */ jsx7(ButtonSpinner, { size: resolvedSize })
1415
+ children: /* @__PURE__ */ jsx8(ButtonSpinner, { size: resolvedSize })
1352
1416
  }
1353
1417
  )
1354
1418
  ]
@@ -1359,9 +1423,9 @@ var Button = React6.forwardRef(
1359
1423
  Button.displayName = "Button";
1360
1424
 
1361
1425
  // src/components/surface.tsx
1362
- import * as React7 from "react";
1426
+ import * as React9 from "react";
1363
1427
  import { Slot as Slot2 } from "@radix-ui/react-slot";
1364
- import { jsx as jsx8 } from "react/jsx-runtime";
1428
+ import { jsx as jsx9 } from "react/jsx-runtime";
1365
1429
  var surfaceStyles = {
1366
1430
  card: {
1367
1431
  backgroundColor: "hsl(var(--sofya-surface-card-background))",
@@ -1393,7 +1457,7 @@ var surfaceStyles = {
1393
1457
  };
1394
1458
  function SurfaceComponent({ as, asChild = false, variant = "card", className, style, ...props }, ref) {
1395
1459
  const Component = asChild ? Slot2 : as ?? "div";
1396
- return /* @__PURE__ */ jsx8(
1460
+ return /* @__PURE__ */ jsx9(
1397
1461
  Component,
1398
1462
  {
1399
1463
  ref,
@@ -1404,16 +1468,16 @@ function SurfaceComponent({ as, asChild = false, variant = "card", className, st
1404
1468
  }
1405
1469
  );
1406
1470
  }
1407
- var SurfaceBase = React7.forwardRef(SurfaceComponent);
1471
+ var SurfaceBase = React9.forwardRef(SurfaceComponent);
1408
1472
  SurfaceBase.displayName = "Surface";
1409
1473
  var Surface = SurfaceBase;
1410
1474
 
1411
1475
  // src/components/card.tsx
1412
- import { jsx as jsx9 } from "react/jsx-runtime";
1476
+ import { jsx as jsx10 } from "react/jsx-runtime";
1413
1477
  var cardVariants = ["card", "panel", "focus"];
1414
1478
  function Card({ className, variant = "card", ...props }) {
1415
1479
  const hasHoverShadow = variant === "card" || variant === "panel";
1416
- return /* @__PURE__ */ jsx9(
1480
+ return /* @__PURE__ */ jsx10(
1417
1481
  Surface,
1418
1482
  {
1419
1483
  variant,
@@ -1427,10 +1491,10 @@ function Card({ className, variant = "card", ...props }) {
1427
1491
  );
1428
1492
  }
1429
1493
  function CardHeader({ className, ...props }) {
1430
- return /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col gap-2 p-6", className), ...props });
1494
+ return /* @__PURE__ */ jsx10("div", { className: cn("flex flex-col gap-2 p-6", className), ...props });
1431
1495
  }
1432
1496
  function CardTitle({ children, className, ...props }) {
1433
- return /* @__PURE__ */ jsx9(
1497
+ return /* @__PURE__ */ jsx10(
1434
1498
  "h3",
1435
1499
  {
1436
1500
  className: cn("text-card-foreground", className),
@@ -1448,27 +1512,49 @@ function CardDescription({
1448
1512
  className,
1449
1513
  ...props
1450
1514
  }) {
1451
- return /* @__PURE__ */ jsx9("p", { className: cn("text-muted-foreground", className), ...props, children: renderTextContent(children, {
1515
+ return /* @__PURE__ */ jsx10("p", { className: cn("text-muted-foreground", className), ...props, children: renderTextContent(children, {
1452
1516
  as: "span",
1453
1517
  className: "block text-muted-foreground",
1454
1518
  size: "body"
1455
1519
  }) });
1456
1520
  }
1457
1521
  function CardContent({ children, className, ...props }) {
1458
- return /* @__PURE__ */ jsx9("div", { className: cn("p-6 pt-0", className), ...props, children: renderTextContent(children, {
1522
+ return /* @__PURE__ */ jsx10("div", { className: cn("p-6 pt-0", className), ...props, children: renderTextContent(children, {
1459
1523
  as: "span"
1460
1524
  }) });
1461
1525
  }
1462
1526
  function CardFooter({ children, className, ...props }) {
1463
- return /* @__PURE__ */ jsx9("div", { className: cn("flex items-center gap-4 p-6 pt-0", className), ...props, children: renderTextContent(children, {
1527
+ return /* @__PURE__ */ jsx10("div", { className: cn("flex items-center gap-4 p-6 pt-0", className), ...props, children: renderTextContent(children, {
1464
1528
  as: "span"
1465
1529
  }) });
1466
1530
  }
1467
1531
 
1468
1532
  // src/components/checkbox.tsx
1469
- import * as React8 from "react";
1470
- import { jsx as jsx10, jsxs as jsxs5 } from "react/jsx-runtime";
1471
- var Checkbox = React8.forwardRef(
1533
+ import * as React10 from "react";
1534
+ import { IconCheck as IconCheck2 } from "@tabler/icons-react";
1535
+
1536
+ // src/lib/selection-control-classes.ts
1537
+ var selectionControlContainerBaseClasses = "flex w-fit gap-4";
1538
+ var selectionControlContentBaseClasses = "grid gap-2";
1539
+ var selectionControlLabelTextBaseClasses = "text-[color:var(--sofya-text-default)] [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-[3px]";
1540
+ var selectionControlDescriptionTextBaseClasses = "text-muted-foreground";
1541
+ 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";
1542
+ function selectionControlContainerClasses({
1543
+ alignClassName,
1544
+ className,
1545
+ disabled
1546
+ }) {
1547
+ return cn(
1548
+ selectionControlContainerBaseClasses,
1549
+ alignClassName,
1550
+ disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
1551
+ className
1552
+ );
1553
+ }
1554
+
1555
+ // src/components/checkbox.tsx
1556
+ import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
1557
+ var Checkbox = React10.forwardRef(
1472
1558
  function Checkbox2({
1473
1559
  checked,
1474
1560
  className,
@@ -1481,23 +1567,21 @@ var Checkbox = React8.forwardRef(
1481
1567
  labelClassName,
1482
1568
  ...props
1483
1569
  }, ref) {
1484
- const generatedId = React8.useId();
1570
+ const generatedId = React10.useId();
1485
1571
  const resolvedId = id ?? generatedId;
1486
1572
  const descriptionId = description ? `${resolvedId}-description` : void 0;
1487
1573
  const alignClassName = description ? "items-start" : "items-center";
1488
- const indicatorOffsetClassName = "";
1489
- return /* @__PURE__ */ jsxs5(
1574
+ return /* @__PURE__ */ jsxs4(
1490
1575
  "label",
1491
1576
  {
1492
1577
  htmlFor: resolvedId,
1493
- className: cn(
1494
- "flex w-fit gap-4",
1578
+ className: selectionControlContainerClasses({
1495
1579
  alignClassName,
1496
- disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
1497
- className
1498
- ),
1580
+ className,
1581
+ disabled
1582
+ }),
1499
1583
  children: [
1500
- /* @__PURE__ */ jsx10(
1584
+ /* @__PURE__ */ jsx11(
1501
1585
  "input",
1502
1586
  {
1503
1587
  ref,
@@ -1511,41 +1595,24 @@ var Checkbox = React8.forwardRef(
1511
1595
  ...props
1512
1596
  }
1513
1597
  ),
1514
- /* @__PURE__ */ jsx10(
1598
+ /* @__PURE__ */ jsx11(
1515
1599
  "span",
1516
1600
  {
1517
1601
  "aria-hidden": "true",
1518
1602
  className: cn(
1519
- "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",
1520
- indicatorOffsetClassName
1603
+ "inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-[8px] text-transparent",
1604
+ selectionControlControlBaseClasses,
1605
+ "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"
1521
1606
  ),
1522
- children: /* @__PURE__ */ jsx10(
1523
- "svg",
1524
- {
1525
- viewBox: "0 0 16 16",
1526
- fill: "none",
1527
- xmlns: "http://www.w3.org/2000/svg",
1528
- className: "h-4 w-4 shrink-0",
1529
- children: /* @__PURE__ */ jsx10(
1530
- "path",
1531
- {
1532
- d: "M2.75 8.25L6.4 11.9L13.35 4.95",
1533
- stroke: "currentColor",
1534
- strokeWidth: "2.4",
1535
- strokeLinecap: "round",
1536
- strokeLinejoin: "round"
1537
- }
1538
- )
1539
- }
1540
- )
1607
+ children: /* @__PURE__ */ jsx11(IconCheck2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0", stroke: 2.4 })
1541
1608
  }
1542
1609
  ),
1543
- label || description ? /* @__PURE__ */ jsxs5("span", { className: "grid gap-2", children: [
1544
- label ? /* @__PURE__ */ jsx10(
1610
+ label || description ? /* @__PURE__ */ jsxs4("span", { className: selectionControlContentBaseClasses, children: [
1611
+ label ? /* @__PURE__ */ jsx11(
1545
1612
  "span",
1546
1613
  {
1547
1614
  className: cn(
1548
- "text-[color:var(--sofya-text-default)] [&_a]:text-primary [&_a]:underline [&_a]:underline-offset-[3px]",
1615
+ selectionControlLabelTextBaseClasses,
1549
1616
  labelClassName
1550
1617
  ),
1551
1618
  children: renderTextContent(label, {
@@ -1555,11 +1622,14 @@ var Checkbox = React8.forwardRef(
1555
1622
  })
1556
1623
  }
1557
1624
  ) : null,
1558
- description ? /* @__PURE__ */ jsx10(
1625
+ description ? /* @__PURE__ */ jsx11(
1559
1626
  "span",
1560
1627
  {
1561
1628
  id: descriptionId,
1562
- className: cn("text-muted-foreground", descriptionClassName),
1629
+ className: cn(
1630
+ selectionControlDescriptionTextBaseClasses,
1631
+ descriptionClassName
1632
+ ),
1563
1633
  children: renderTextContent(description, {
1564
1634
  as: "span",
1565
1635
  className: "text-muted-foreground",
@@ -1576,22 +1646,46 @@ var Checkbox = React8.forwardRef(
1576
1646
  Checkbox.displayName = "Checkbox";
1577
1647
 
1578
1648
  // src/components/dropdown.tsx
1579
- import * as React9 from "react";
1649
+ import * as React12 from "react";
1580
1650
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1581
- import { Fragment as Fragment2, jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
1582
- var dropdownVariantOptions = [
1583
- "card",
1584
- "panel",
1585
- "language",
1586
- "selected"
1587
- ];
1588
- var dropdownLanguageItems = [
1589
- { value: "en-US", label: "English", languageLocale: "en-US" },
1590
- { value: "pt-BR", label: "Portuguese", languageLocale: "pt-BR" },
1591
- { value: "es-ES", label: "Spanish", languageLocale: "es-ES" }
1592
- ];
1593
- var dropdownTriggerClasses = {
1594
- card: "h-12 rounded-[20px] px-6 py-2 text-primary",
1651
+
1652
+ // src/lib/use-controllable-state.ts
1653
+ import * as React11 from "react";
1654
+ function useControllableState({
1655
+ defaultValue,
1656
+ onChange,
1657
+ value
1658
+ }) {
1659
+ const isControlled = value !== void 0;
1660
+ const [uncontrolledValue, setUncontrolledValue] = React11.useState(defaultValue);
1661
+ const currentValue = isControlled ? value : uncontrolledValue;
1662
+ const setValue = React11.useCallback(
1663
+ (nextValue) => {
1664
+ if (!isControlled) {
1665
+ setUncontrolledValue(nextValue);
1666
+ }
1667
+ onChange?.(nextValue);
1668
+ },
1669
+ [isControlled, onChange]
1670
+ );
1671
+ return [currentValue, setValue, setUncontrolledValue];
1672
+ }
1673
+
1674
+ // src/components/dropdown.tsx
1675
+ import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
1676
+ var dropdownVariantOptions = [
1677
+ "card",
1678
+ "panel",
1679
+ "language",
1680
+ "selected"
1681
+ ];
1682
+ var dropdownLanguageItems = [
1683
+ { value: "en-US", label: "English", languageLocale: "en-US" },
1684
+ { value: "pt-BR", label: "Portuguese", languageLocale: "pt-BR" },
1685
+ { value: "es-ES", label: "Spanish", languageLocale: "es-ES" }
1686
+ ];
1687
+ var dropdownTriggerClasses = {
1688
+ card: "h-12 rounded-[20px] px-6 py-2 text-primary",
1595
1689
  panel: "h-12 rounded-[10px] px-6 py-2 text-foreground",
1596
1690
  language: "",
1597
1691
  selected: "h-10 w-full rounded-[10px] border-[color:var(--sofya-border-strong)] px-4 py-2 [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)]"
@@ -1622,7 +1716,7 @@ function resolveItemLanguageLocale(item) {
1622
1716
  }
1623
1717
  function DefaultDropdownTriggerIcon({ variant }) {
1624
1718
  if (variant === "selected") {
1625
- return /* @__PURE__ */ jsx11(
1719
+ return /* @__PURE__ */ jsx12(
1626
1720
  Icon,
1627
1721
  {
1628
1722
  name: "caret-down",
@@ -1630,16 +1724,16 @@ function DefaultDropdownTriggerIcon({ variant }) {
1630
1724
  }
1631
1725
  );
1632
1726
  }
1633
- return /* @__PURE__ */ jsx11("span", { className: "flex h-8 w-8 items-center justify-center rounded-[6px]", children: /* @__PURE__ */ jsx11(Icon, { name: "caret-down", className: "!h-4 !w-4" }) });
1727
+ return /* @__PURE__ */ jsx12("span", { className: "flex h-8 w-8 items-center justify-center rounded-[6px]", children: /* @__PURE__ */ jsx12(Icon, { name: "caret-down", className: "!h-4 !w-4" }) });
1634
1728
  }
1635
1729
  function DefaultDropdownItemIndicator() {
1636
- return /* @__PURE__ */ jsx11(Icon, { name: "check", size: 16 });
1730
+ return /* @__PURE__ */ jsx12(Icon, { name: "check", size: 16 });
1637
1731
  }
1638
1732
  function DefaultDropdownInlineCheck() {
1639
- return /* @__PURE__ */ jsx11(Icon, { name: "check", size: 14 });
1733
+ return /* @__PURE__ */ jsx12(Icon, { name: "check", size: 14 });
1640
1734
  }
1641
1735
  function LanguageFlagIcon({ locale }) {
1642
- return /* @__PURE__ */ jsx11(
1736
+ return /* @__PURE__ */ jsx12(
1643
1737
  "img",
1644
1738
  {
1645
1739
  alt: "",
@@ -1671,40 +1765,41 @@ function Dropdown({
1671
1765
  const isLanguageVariant = variant === "language";
1672
1766
  const isSelectedVariant = variant === "selected";
1673
1767
  const usesDefaultListStyle = !isLanguageVariant;
1674
- const resolvedItems = React9.useMemo(
1768
+ const resolvedItems = React12.useMemo(
1675
1769
  () => isLanguageVariant ? items && items.length > 0 ? items : dropdownLanguageItems : items ?? [],
1676
1770
  [isLanguageVariant, items]
1677
1771
  );
1678
1772
  const defaultUncontrolledValue = defaultValue ?? (isLanguageVariant ? resolvedItems[0]?.value : void 0);
1679
- const [internalValue, setInternalValue] = React9.useState(
1680
- defaultUncontrolledValue
1681
- );
1682
- const selectedValue = value ?? internalValue;
1773
+ const [selectedValue, setSelectedValue, setUncontrolledSelectedValue] = useControllableState({
1774
+ defaultValue: defaultUncontrolledValue,
1775
+ onChange: onValueChange,
1776
+ value
1777
+ });
1683
1778
  const radioValue = selectedValue ?? "";
1684
1779
  const selectedItem = resolvedItems.find(
1685
1780
  (item) => item.value === selectedValue
1686
1781
  );
1687
1782
  const hasSelectedItem = selectedItem !== void 0;
1688
1783
  const selectedLanguageLocale = resolveItemLanguageLocale(selectedItem);
1689
- React9.useEffect(() => {
1784
+ React12.useEffect(() => {
1690
1785
  if (value !== void 0) {
1691
1786
  return;
1692
1787
  }
1693
- const currentValueIsAvailable = internalValue !== void 0 && resolvedItems.some((item) => item.value === internalValue);
1788
+ const currentValueIsAvailable = selectedValue !== void 0 && resolvedItems.some((item) => item.value === selectedValue);
1694
1789
  if (!currentValueIsAvailable && defaultUncontrolledValue !== void 0) {
1695
- setInternalValue(defaultUncontrolledValue);
1790
+ setUncontrolledSelectedValue(defaultUncontrolledValue);
1696
1791
  }
1697
- }, [defaultUncontrolledValue, internalValue, resolvedItems, value]);
1698
- const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ jsx11(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
1792
+ }, [
1793
+ defaultUncontrolledValue,
1794
+ resolvedItems,
1795
+ selectedValue,
1796
+ setUncontrolledSelectedValue,
1797
+ value
1798
+ ]);
1799
+ const resolvedTriggerIcon = isLanguageVariant ? void 0 : triggerIcon === void 0 ? /* @__PURE__ */ jsx12(DefaultDropdownTriggerIcon, { variant }) : triggerIcon;
1699
1800
  const triggerLabel = selectedItem?.triggerLabel ?? selectedItem?.label ?? placeholder;
1700
1801
  const selectedTriggerToneClassName = isSelectedVariant ? hasSelectedItem ? "text-foreground" : "text-[color:var(--sofya-text-soft)]" : void 0;
1701
- function handleValueChange(nextValue) {
1702
- if (value === void 0) {
1703
- setInternalValue(nextValue);
1704
- }
1705
- onValueChange?.(nextValue);
1706
- }
1707
- return /* @__PURE__ */ jsxs6(
1802
+ return /* @__PURE__ */ jsxs5(
1708
1803
  DropdownMenuPrimitive.Root,
1709
1804
  {
1710
1805
  defaultOpen,
@@ -1712,7 +1807,7 @@ function Dropdown({
1712
1807
  onOpenChange,
1713
1808
  open,
1714
1809
  children: [
1715
- /* @__PURE__ */ jsx11(DropdownMenuPrimitive.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx11(
1810
+ /* @__PURE__ */ jsx12(DropdownMenuPrimitive.Trigger, { asChild: true, disabled, children: /* @__PURE__ */ jsx12(
1716
1811
  Button,
1717
1812
  {
1718
1813
  type: "button",
@@ -1725,14 +1820,14 @@ function Dropdown({
1725
1820
  triggerClassName
1726
1821
  ),
1727
1822
  rightIcon: resolvedTriggerIcon,
1728
- children: isLanguageVariant ? null : /* @__PURE__ */ jsx11("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
1823
+ children: isLanguageVariant ? null : /* @__PURE__ */ jsx12("span", { className: "min-w-0 truncate", children: renderTextContent(triggerLabel, {
1729
1824
  as: "span",
1730
1825
  className: "block min-w-0 truncate text-inherit",
1731
1826
  size: "body"
1732
1827
  }) })
1733
1828
  }
1734
1829
  ) }),
1735
- /* @__PURE__ */ jsx11(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx11(
1830
+ /* @__PURE__ */ jsx12(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx12(
1736
1831
  DropdownMenuPrimitive.Content,
1737
1832
  {
1738
1833
  align,
@@ -1742,18 +1837,18 @@ function Dropdown({
1742
1837
  dropdownContentClasses[variant],
1743
1838
  contentClassName
1744
1839
  ),
1745
- children: /* @__PURE__ */ jsx11(
1840
+ children: /* @__PURE__ */ jsx12(
1746
1841
  DropdownMenuPrimitive.RadioGroup,
1747
1842
  {
1748
1843
  value: radioValue,
1749
- onValueChange: handleValueChange,
1844
+ onValueChange: setSelectedValue,
1750
1845
  className: "grid gap-2",
1751
1846
  children: resolvedItems.map((item) => {
1752
1847
  const isSelected = item.value === selectedValue;
1753
1848
  const itemLanguageLocale = resolveItemLanguageLocale(item);
1754
- const indicator = item.indicator ?? /* @__PURE__ */ jsx11(DefaultDropdownItemIndicator, {});
1755
- const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ jsx11(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
1756
- return /* @__PURE__ */ jsx11(
1849
+ const indicator = item.indicator ?? /* @__PURE__ */ jsx12(DefaultDropdownItemIndicator, {});
1850
+ const itemIcon = item.icon ?? (variant === "language" && itemLanguageLocale ? /* @__PURE__ */ jsx12(LanguageFlagIcon, { locale: itemLanguageLocale }) : null);
1851
+ return /* @__PURE__ */ jsx12(
1757
1852
  DropdownMenuPrimitive.RadioItem,
1758
1853
  {
1759
1854
  value: item.value,
@@ -1764,7 +1859,7 @@ function Dropdown({
1764
1859
  dropdownItemClasses[variant],
1765
1860
  itemClassName
1766
1861
  ),
1767
- children: usesDefaultListStyle ? /* @__PURE__ */ jsxs6(
1862
+ children: usesDefaultListStyle ? /* @__PURE__ */ jsxs5(
1768
1863
  "span",
1769
1864
  {
1770
1865
  "data-dropdown-item-body": true,
@@ -1773,32 +1868,32 @@ function Dropdown({
1773
1868
  isSelected ? "bg-[color:var(--sofya-surface-selected)]" : "bg-transparent"
1774
1869
  ),
1775
1870
  children: [
1776
- itemIcon ? /* @__PURE__ */ jsx11("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
1777
- /* @__PURE__ */ jsx11("span", { className: "truncate", children: renderTextContent(item.label, {
1871
+ itemIcon ? /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
1872
+ /* @__PURE__ */ jsx12("span", { className: "truncate", children: renderTextContent(item.label, {
1778
1873
  as: "span",
1779
1874
  className: "block truncate text-inherit",
1780
1875
  size: "body"
1781
1876
  }) }),
1782
- isSelected ? /* @__PURE__ */ jsx11(
1877
+ isSelected ? /* @__PURE__ */ jsx12(
1783
1878
  "span",
1784
1879
  {
1785
1880
  "aria-hidden": "true",
1786
1881
  className: "flex h-[14px] w-[14px] shrink-0 items-center justify-center",
1787
- children: /* @__PURE__ */ jsx11(DefaultDropdownInlineCheck, {})
1882
+ children: /* @__PURE__ */ jsx12(DefaultDropdownInlineCheck, {})
1788
1883
  }
1789
1884
  ) : null
1790
1885
  ]
1791
1886
  }
1792
- ) : /* @__PURE__ */ jsxs6(Fragment2, { children: [
1793
- /* @__PURE__ */ jsxs6("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
1794
- itemIcon ? /* @__PURE__ */ jsx11("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
1795
- /* @__PURE__ */ jsx11("span", { className: "truncate", children: renderTextContent(item.label, {
1887
+ ) : /* @__PURE__ */ jsxs5(Fragment2, { children: [
1888
+ /* @__PURE__ */ jsxs5("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
1889
+ itemIcon ? /* @__PURE__ */ jsx12("span", { className: "flex shrink-0 items-center justify-center", children: itemIcon }) : null,
1890
+ /* @__PURE__ */ jsx12("span", { className: "truncate", children: renderTextContent(item.label, {
1796
1891
  as: "span",
1797
1892
  className: "block truncate text-inherit",
1798
1893
  size: "body"
1799
1894
  }) })
1800
1895
  ] }),
1801
- /* @__PURE__ */ jsx11(
1896
+ /* @__PURE__ */ jsx12(
1802
1897
  "span",
1803
1898
  {
1804
1899
  "aria-hidden": "true",
@@ -1825,14 +1920,14 @@ function Dropdown({
1825
1920
  }
1826
1921
 
1827
1922
  // src/components/dialog.tsx
1828
- import * as React10 from "react";
1923
+ import * as React13 from "react";
1829
1924
  import * as DialogPrimitive from "@radix-ui/react-dialog";
1830
- import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
1925
+ import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
1831
1926
  var Dialog = DialogPrimitive.Root;
1832
1927
  var DialogTrigger = DialogPrimitive.Trigger;
1833
1928
  var DialogPortal = DialogPrimitive.Portal;
1834
1929
  var DialogClose = DialogPrimitive.Close;
1835
- var DialogOverlay = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
1930
+ var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx13(
1836
1931
  DialogPrimitive.Overlay,
1837
1932
  {
1838
1933
  ref,
@@ -1844,7 +1939,7 @@ var DialogOverlay = React10.forwardRef(({ className, ...props }, ref) => /* @__P
1844
1939
  }
1845
1940
  ));
1846
1941
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
1847
- var DialogContent = React10.forwardRef(
1942
+ var DialogContent = React13.forwardRef(
1848
1943
  ({
1849
1944
  className,
1850
1945
  children,
@@ -1857,9 +1952,9 @@ var DialogContent = React10.forwardRef(
1857
1952
  const dialogCardStyle = {
1858
1953
  "--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
1859
1954
  };
1860
- return /* @__PURE__ */ jsxs7(DialogPortal, { children: [
1861
- /* @__PURE__ */ jsx12(DialogOverlay, { className: overlayClassName }),
1862
- /* @__PURE__ */ jsx12("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx12(
1955
+ return /* @__PURE__ */ jsxs6(DialogPortal, { children: [
1956
+ /* @__PURE__ */ jsx13(DialogOverlay, { className: overlayClassName }),
1957
+ /* @__PURE__ */ jsx13("div", { className: "sofya-dialog-positioner fixed inset-0 z-50 flex items-center justify-center p-4", children: /* @__PURE__ */ jsx13(
1863
1958
  DialogPrimitive.Content,
1864
1959
  {
1865
1960
  ref,
@@ -1868,7 +1963,7 @@ var DialogContent = React10.forwardRef(
1868
1963
  className
1869
1964
  ),
1870
1965
  ...props,
1871
- children: /* @__PURE__ */ jsxs7(
1966
+ children: /* @__PURE__ */ jsxs6(
1872
1967
  Card,
1873
1968
  {
1874
1969
  variant: cardVariant,
@@ -1879,15 +1974,15 @@ var DialogContent = React10.forwardRef(
1879
1974
  style: dialogCardStyle,
1880
1975
  children: [
1881
1976
  children,
1882
- showCloseButton ? /* @__PURE__ */ jsx12(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx12(
1977
+ showCloseButton ? /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(
1883
1978
  Button,
1884
1979
  {
1885
1980
  type: "button",
1886
- variant: "icon",
1981
+ variant: "ghost",
1887
1982
  size: "icon",
1888
1983
  "aria-label": "Close",
1889
- leftIcon: /* @__PURE__ */ jsx12(Icon, { name: "x", size: 18 }),
1890
- 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"
1984
+ leftIcon: /* @__PURE__ */ jsx13(Icon, { name: "x", size: 18 }),
1985
+ className: "absolute right-4 top-4 z-10 text-muted-foreground hover:text-foreground"
1891
1986
  }
1892
1987
  ) }) : null
1893
1988
  ]
@@ -1900,10 +1995,10 @@ var DialogContent = React10.forwardRef(
1900
1995
  );
1901
1996
  DialogContent.displayName = DialogPrimitive.Content.displayName;
1902
1997
  function DialogHeader({ className, ...props }) {
1903
- return /* @__PURE__ */ jsx12("div", { className: cn("grid gap-2 px-6 pt-6 pr-16 text-left", className), ...props });
1998
+ return /* @__PURE__ */ jsx13("div", { className: cn("grid gap-2 px-6 pt-6 pr-16 text-left", className), ...props });
1904
1999
  }
1905
2000
  function DialogFooter({ className, ...props }) {
1906
- return /* @__PURE__ */ jsx12(
2001
+ return /* @__PURE__ */ jsx13(
1907
2002
  "div",
1908
2003
  {
1909
2004
  className: cn(
@@ -1914,11 +2009,11 @@ function DialogFooter({ className, ...props }) {
1914
2009
  }
1915
2010
  );
1916
2011
  }
1917
- var DialogCancel = React10.forwardRef(
1918
- ({ type = "button", variant = "outline", ...props }, ref) => /* @__PURE__ */ jsx12(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx12(Button, { ref, type, variant, ...props }) })
2012
+ var DialogCancel = React13.forwardRef(
2013
+ ({ type = "button", variant = "outline", ...props }, ref) => /* @__PURE__ */ jsx13(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx13(Button, { ref, type, variant, ...props }) })
1919
2014
  );
1920
2015
  DialogCancel.displayName = "DialogCancel";
1921
- var DialogTitle = React10.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx12(
2016
+ var DialogTitle = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
1922
2017
  DialogPrimitive.Title,
1923
2018
  {
1924
2019
  ref,
@@ -1932,7 +2027,7 @@ var DialogTitle = React10.forwardRef(({ children, className, ...props }, ref) =>
1932
2027
  }
1933
2028
  ));
1934
2029
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
1935
- var DialogDescription = React10.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx12(
2030
+ var DialogDescription = React13.forwardRef(({ children, className, ...props }, ref) => /* @__PURE__ */ jsx13(
1936
2031
  DialogPrimitive.Description,
1937
2032
  {
1938
2033
  ref,
@@ -1948,9 +2043,9 @@ var DialogDescription = React10.forwardRef(({ children, className, ...props }, r
1948
2043
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
1949
2044
 
1950
2045
  // src/components/empty.tsx
1951
- import * as React11 from "react";
2046
+ import * as React14 from "react";
1952
2047
  import { cva as cva5 } from "class-variance-authority";
1953
- import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
2048
+ import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs7 } from "react/jsx-runtime";
1954
2049
  var emptyMediaVariantOptions = ["default", "icon"];
1955
2050
  var emptyMediaVariants = cva5(
1956
2051
  "inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
@@ -1966,11 +2061,11 @@ var emptyMediaVariants = cva5(
1966
2061
  }
1967
2062
  }
1968
2063
  );
1969
- var EmptyMedia = React11.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
1970
- return /* @__PURE__ */ jsx13("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
2064
+ var EmptyMedia = React14.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
2065
+ return /* @__PURE__ */ jsx14("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
1971
2066
  });
1972
2067
  function EmptyHeader({ className, ...props }) {
1973
- return /* @__PURE__ */ jsx13(
2068
+ return /* @__PURE__ */ jsx14(
1974
2069
  "div",
1975
2070
  {
1976
2071
  className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
@@ -1979,7 +2074,7 @@ function EmptyHeader({ className, ...props }) {
1979
2074
  );
1980
2075
  }
1981
2076
  function EmptyTitle({ children, className, ...props }) {
1982
- return /* @__PURE__ */ jsx13(
2077
+ return /* @__PURE__ */ jsx14(
1983
2078
  "h2",
1984
2079
  {
1985
2080
  className: cn("text-foreground", className),
@@ -1997,7 +2092,7 @@ function EmptyDescription({
1997
2092
  className,
1998
2093
  ...props
1999
2094
  }) {
2000
- return /* @__PURE__ */ jsx13(
2095
+ return /* @__PURE__ */ jsx14(
2001
2096
  "p",
2002
2097
  {
2003
2098
  className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
@@ -2011,7 +2106,7 @@ function EmptyDescription({
2011
2106
  );
2012
2107
  }
2013
2108
  function EmptyContent({ children, className, ...props }) {
2014
- return /* @__PURE__ */ jsx13(
2109
+ return /* @__PURE__ */ jsx14(
2015
2110
  "div",
2016
2111
  {
2017
2112
  className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
@@ -2022,9 +2117,9 @@ function EmptyContent({ children, className, ...props }) {
2022
2117
  }
2023
2118
  );
2024
2119
  }
2025
- var Empty = React11.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
2026
- const hasCustomChildren = React11.Children.count(children) > 0;
2027
- return /* @__PURE__ */ jsx13(
2120
+ var Empty = React14.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
2121
+ const hasCustomChildren = React14.Children.count(children) > 0;
2122
+ return /* @__PURE__ */ jsx14(
2028
2123
  "div",
2029
2124
  {
2030
2125
  ref,
@@ -2033,13 +2128,13 @@ var Empty = React11.forwardRef(function Empty2({ children, className, content, d
2033
2128
  className
2034
2129
  ),
2035
2130
  ...props,
2036
- children: hasCustomChildren ? children : /* @__PURE__ */ jsxs8(Fragment3, { children: [
2037
- /* @__PURE__ */ jsxs8(EmptyHeader, { children: [
2038
- media ?? /* @__PURE__ */ jsx13(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx13(Icon, { name: "folders", size: 28 }) }),
2039
- /* @__PURE__ */ jsx13(EmptyTitle, { children: title ?? "Nada por aqui" }),
2040
- /* @__PURE__ */ jsx13(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
2131
+ children: hasCustomChildren ? children : /* @__PURE__ */ jsxs7(Fragment3, { children: [
2132
+ /* @__PURE__ */ jsxs7(EmptyHeader, { children: [
2133
+ media ?? /* @__PURE__ */ jsx14(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx14(Icon, { name: "folders", size: 28 }) }),
2134
+ /* @__PURE__ */ jsx14(EmptyTitle, { children: title ?? "Nada por aqui" }),
2135
+ /* @__PURE__ */ jsx14(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
2041
2136
  ] }),
2042
- content !== void 0 && content !== null ? /* @__PURE__ */ jsx13(EmptyContent, { children: content }) : null
2137
+ content !== void 0 && content !== null ? /* @__PURE__ */ jsx14(EmptyContent, { children: content }) : null
2043
2138
  ] })
2044
2139
  }
2045
2140
  );
@@ -2052,108 +2147,78 @@ EmptyDescription.displayName = "EmptyDescription";
2052
2147
  EmptyContent.displayName = "EmptyContent";
2053
2148
 
2054
2149
  // src/components/input.tsx
2055
- import * as React13 from "react";
2150
+ import * as React17 from "react";
2056
2151
  import { REGEXP_ONLY_DIGITS as REGEXP_ONLY_DIGITS2 } from "input-otp";
2057
- import { AnimatePresence, motion as motion2, useReducedMotion as useReducedMotion2 } from "motion/react";
2058
2152
 
2059
- // src/components/input-otp.tsx
2060
- import * as React12 from "react";
2061
- import {
2062
- OTPInput,
2063
- OTPInputContext,
2064
- REGEXP_ONLY_DIGITS
2065
- } from "input-otp";
2066
- import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
2067
- var InputOTP = React12.forwardRef(({ className, containerClassName, ...props }, ref) => {
2068
- return /* @__PURE__ */ jsx14(
2069
- OTPInput,
2070
- {
2071
- ref,
2072
- containerClassName: cn(
2073
- "flex items-center gap-4 has-[:disabled]:opacity-50",
2074
- containerClassName
2075
- ),
2076
- className: cn("disabled:cursor-not-allowed", className),
2077
- ...props
2078
- }
2079
- );
2080
- });
2081
- InputOTP.displayName = "InputOTP";
2082
- var InputOTPGroup = React12.forwardRef(({ className, ...props }, ref) => {
2083
- return /* @__PURE__ */ jsx14(
2084
- "div",
2153
+ // src/lib/field-shell.tsx
2154
+ import { jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
2155
+ function FieldLabel({
2156
+ children,
2157
+ className,
2158
+ htmlFor,
2159
+ textClassName = "block text-[color:var(--sofya-text-default)]",
2160
+ textSize = "body",
2161
+ textStyle = {
2162
+ fontWeight: 500
2163
+ }
2164
+ }) {
2165
+ if (!children) {
2166
+ return null;
2167
+ }
2168
+ const Component = htmlFor ? "label" : "div";
2169
+ return /* @__PURE__ */ jsx15(
2170
+ Component,
2085
2171
  {
2086
- ref,
2087
- className: cn(
2088
- "flex overflow-hidden rounded-[12px] border border-[color:var(--sofya-border-hover)] bg-card",
2089
- className
2090
- ),
2091
- ...props
2172
+ className: cn("text-[color:var(--sofya-text-default)]", className),
2173
+ htmlFor,
2174
+ children: renderTextContent(children, {
2175
+ as: "span",
2176
+ className: textClassName,
2177
+ size: textSize,
2178
+ style: textStyle
2179
+ })
2092
2180
  }
2093
2181
  );
2094
- });
2095
- InputOTPGroup.displayName = "InputOTPGroup";
2096
- var InputOTPSlot = React12.forwardRef(
2097
- ({ className, index, ...props }, ref) => {
2098
- const otpContext = React12.useContext(OTPInputContext);
2099
- const slot = otpContext.slots[index];
2100
- if (!slot) {
2101
- return /* @__PURE__ */ jsx14(
2102
- "div",
2103
- {
2104
- ref,
2105
- className: cn(
2106
- "relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card last:border-r-0",
2107
- className
2108
- ),
2109
- ...props
2110
- }
2111
- );
2112
- }
2113
- return /* @__PURE__ */ jsxs9(
2114
- "div",
2182
+ }
2183
+ function FieldShell({
2184
+ containerClassName,
2185
+ control,
2186
+ label,
2187
+ labelClassName,
2188
+ labelHtmlFor,
2189
+ labelTextClassName,
2190
+ labelTextSize,
2191
+ labelTextStyle
2192
+ }) {
2193
+ if (!label && !containerClassName) {
2194
+ return control;
2195
+ }
2196
+ return /* @__PURE__ */ jsxs8("div", { className: cn("grid w-full gap-2", containerClassName), children: [
2197
+ label ? /* @__PURE__ */ jsx15(
2198
+ FieldLabel,
2115
2199
  {
2116
- ref,
2117
- className: cn(
2118
- "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",
2119
- 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)]",
2120
- className
2121
- ),
2122
- ...props,
2123
- children: [
2124
- slot.char ?? null,
2125
- slot.hasFakeCaret ? /* @__PURE__ */ jsx14("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx14("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
2126
- ]
2200
+ className: labelClassName,
2201
+ htmlFor: labelHtmlFor,
2202
+ textClassName: labelTextClassName,
2203
+ textSize: labelTextSize,
2204
+ textStyle: labelTextStyle,
2205
+ children: label
2127
2206
  }
2128
- );
2129
- }
2130
- );
2131
- InputOTPSlot.displayName = "InputOTPSlot";
2132
- var InputOTPSeparator = React12.forwardRef(({ className, ...props }, ref) => {
2133
- return /* @__PURE__ */ jsx14(
2134
- "div",
2135
- {
2136
- ref,
2137
- role: "separator",
2138
- className: cn(
2139
- "flex items-center justify-center px-2 text-[28px] leading-none text-[color:var(--sofya-text-soft)]",
2140
- className
2141
- ),
2142
- ...props,
2143
- children: /* @__PURE__ */ jsx14("span", { "aria-hidden": "true", children: "." })
2144
- }
2145
- );
2146
- });
2147
- InputOTPSeparator.displayName = "InputOTPSeparator";
2207
+ ) : null,
2208
+ control
2209
+ ] });
2210
+ }
2148
2211
 
2149
- // src/components/input.tsx
2150
- import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
2151
- var inputVariantOptions = [
2152
- "default",
2153
- "search",
2154
- "otp",
2155
- "upload"
2156
- ];
2212
+ // src/components/input-upload.tsx
2213
+ import * as React15 from "react";
2214
+ import {
2215
+ IconFileText,
2216
+ IconPhoto,
2217
+ IconUpload,
2218
+ IconVideo
2219
+ } from "@tabler/icons-react";
2220
+ import { AnimatePresence, motion as motion2, useReducedMotion as useReducedMotion2 } from "motion/react";
2221
+ import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
2157
2222
  var uploadKindOptions = ["document", "image", "video"];
2158
2223
  var uploadAcceptByKind = {
2159
2224
  document: ".pdf,.doc,.docx,.txt,.rtf,.odt,.jpg,.jpeg,.png,.webp,.gif",
@@ -2200,7 +2265,7 @@ function mergeUploadFiles(currentFiles, nextFiles, multiple) {
2200
2265
  return Array.from(filesBySignature.values());
2201
2266
  }
2202
2267
  var uploadListItemTransition = {
2203
- duration: 0.2,
2268
+ duration: 0.18,
2204
2269
  ease: [0.22, 1, 0.36, 1]
2205
2270
  };
2206
2271
  function formatUploadFileSize(bytes) {
@@ -2246,96 +2311,12 @@ function resolveUploadFileVisualKind(file, fallbackKind) {
2246
2311
  }
2247
2312
  return "document";
2248
2313
  }
2249
- function InputShell({
2250
- containerClassName,
2251
- control,
2252
- label,
2253
- labelClassName,
2254
- resolvedId
2255
- }) {
2256
- if (!label && !containerClassName) {
2257
- return control;
2258
- }
2259
- return /* @__PURE__ */ jsxs10("div", { className: cn("grid w-full gap-2", containerClassName), children: [
2260
- label ? /* @__PURE__ */ jsx15(
2261
- "label",
2262
- {
2263
- className: cn(
2264
- "text-[color:var(--sofya-text-default)]",
2265
- labelClassName
2266
- ),
2267
- htmlFor: resolvedId,
2268
- children: renderTextContent(label, {
2269
- as: "span",
2270
- className: "block text-[color:var(--sofya-text-default)]",
2271
- size: "body",
2272
- style: {
2273
- fontWeight: 500
2274
- }
2275
- })
2276
- }
2277
- ) : null,
2278
- control
2279
- ] });
2280
- }
2281
- function UploadInputShell({
2282
- containerClassName,
2283
- control,
2284
- label,
2285
- labelClassName,
2286
- optionalLabel
2287
- }) {
2288
- if (!label && !optionalLabel && !containerClassName) {
2289
- return control;
2290
- }
2291
- return /* @__PURE__ */ jsxs10("div", { className: cn("grid w-full gap-2", containerClassName), children: [
2292
- label || optionalLabel ? /* @__PURE__ */ jsxs10(
2293
- "div",
2294
- {
2295
- className: cn(
2296
- "text-[color:var(--sofya-text-default)]",
2297
- labelClassName
2298
- ),
2299
- children: [
2300
- renderTextContent(label, {
2301
- as: "span",
2302
- className: "text-[color:var(--sofya-text-default)]",
2303
- size: "body",
2304
- style: {
2305
- fontWeight: 700
2306
- }
2307
- }),
2308
- optionalLabel ? /* @__PURE__ */ jsx15("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(optionalLabel, {
2309
- as: "span",
2310
- className: "text-[color:var(--sofya-text-subtle)]",
2311
- size: "tiny"
2312
- }) }) : null
2313
- ]
2314
- }
2315
- ) : null,
2316
- control
2317
- ] });
2318
- }
2319
2314
  function UploadGlyph({ className }) {
2320
- return /* @__PURE__ */ jsx15(
2321
- "svg",
2315
+ return /* @__PURE__ */ jsx16(
2316
+ IconUpload,
2322
2317
  {
2323
2318
  "aria-hidden": "true",
2324
- className: cn("inline-block shrink-0 align-middle", className),
2325
- fill: "none",
2326
- focusable: "false",
2327
- viewBox: "0 0 20 20",
2328
- xmlns: "http://www.w3.org/2000/svg",
2329
- children: /* @__PURE__ */ jsx15(
2330
- "path",
2331
- {
2332
- 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",
2333
- stroke: "currentColor",
2334
- strokeLinecap: "round",
2335
- strokeLinejoin: "round",
2336
- strokeWidth: "2"
2337
- }
2338
- )
2319
+ className: cn("inline-block shrink-0 align-middle", className)
2339
2320
  }
2340
2321
  );
2341
2322
  }
@@ -2344,120 +2325,32 @@ function UploadFileTypeGlyph({
2344
2325
  kind
2345
2326
  }) {
2346
2327
  if (kind === "image") {
2347
- return /* @__PURE__ */ jsxs10(
2348
- "svg",
2328
+ return /* @__PURE__ */ jsx16(
2329
+ IconPhoto,
2349
2330
  {
2350
2331
  "aria-hidden": "true",
2351
- className: cn("inline-block shrink-0 align-middle", className),
2352
- fill: "none",
2353
- focusable: "false",
2354
- viewBox: "0 0 18 18",
2355
- xmlns: "http://www.w3.org/2000/svg",
2356
- children: [
2357
- /* @__PURE__ */ jsx15(
2358
- "rect",
2359
- {
2360
- x: "2.5",
2361
- y: "3",
2362
- width: "13",
2363
- height: "12",
2364
- rx: "2.5",
2365
- stroke: "currentColor",
2366
- strokeWidth: "1.5"
2367
- }
2368
- ),
2369
- /* @__PURE__ */ jsx15("circle", { cx: "6.75", cy: "7.25", r: "1.25", fill: "currentColor" }),
2370
- /* @__PURE__ */ jsx15(
2371
- "path",
2372
- {
2373
- 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",
2374
- stroke: "currentColor",
2375
- strokeLinecap: "round",
2376
- strokeLinejoin: "round",
2377
- strokeWidth: "1.5"
2378
- }
2379
- )
2380
- ]
2332
+ className: cn("inline-block shrink-0 align-middle", className)
2381
2333
  }
2382
2334
  );
2383
2335
  }
2384
2336
  if (kind === "video") {
2385
- return /* @__PURE__ */ jsxs10(
2386
- "svg",
2337
+ return /* @__PURE__ */ jsx16(
2338
+ IconVideo,
2387
2339
  {
2388
2340
  "aria-hidden": "true",
2389
- className: cn("inline-block shrink-0 align-middle", className),
2390
- fill: "none",
2391
- focusable: "false",
2392
- viewBox: "0 0 18 18",
2393
- xmlns: "http://www.w3.org/2000/svg",
2394
- children: [
2395
- /* @__PURE__ */ jsx15(
2396
- "rect",
2397
- {
2398
- x: "2.5",
2399
- y: "4",
2400
- width: "13",
2401
- height: "10",
2402
- rx: "2.5",
2403
- stroke: "currentColor",
2404
- strokeWidth: "1.5"
2405
- }
2406
- ),
2407
- /* @__PURE__ */ jsx15(
2408
- "path",
2409
- {
2410
- 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",
2411
- fill: "currentColor"
2412
- }
2413
- )
2414
- ]
2341
+ className: cn("inline-block shrink-0 align-middle", className)
2415
2342
  }
2416
2343
  );
2417
2344
  }
2418
- return /* @__PURE__ */ jsxs10(
2419
- "svg",
2345
+ return /* @__PURE__ */ jsx16(
2346
+ IconFileText,
2420
2347
  {
2421
2348
  "aria-hidden": "true",
2422
- className: cn("inline-block shrink-0 align-middle", className),
2423
- fill: "none",
2424
- focusable: "false",
2425
- viewBox: "0 0 18 18",
2426
- xmlns: "http://www.w3.org/2000/svg",
2427
- children: [
2428
- /* @__PURE__ */ jsx15(
2429
- "path",
2430
- {
2431
- 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",
2432
- stroke: "currentColor",
2433
- strokeLinejoin: "round",
2434
- strokeWidth: "1.5"
2435
- }
2436
- ),
2437
- /* @__PURE__ */ jsx15(
2438
- "path",
2439
- {
2440
- d: "M7.5 2.25V4.25C7.5 5.35457 8.39543 6.25 9.5 6.25H11.5",
2441
- stroke: "currentColor",
2442
- strokeLinecap: "round",
2443
- strokeLinejoin: "round",
2444
- strokeWidth: "1.5"
2445
- }
2446
- ),
2447
- /* @__PURE__ */ jsx15(
2448
- "path",
2449
- {
2450
- d: "M6 10H12M6 12.5H10",
2451
- stroke: "currentColor",
2452
- strokeLinecap: "round",
2453
- strokeWidth: "1.5"
2454
- }
2455
- )
2456
- ]
2349
+ className: cn("inline-block shrink-0 align-middle", className)
2457
2350
  }
2458
2351
  );
2459
2352
  }
2460
- var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2353
+ var UploadInputControl = React15.forwardRef(function UploadInputControl2({
2461
2354
  accept,
2462
2355
  "aria-label": ariaLabel,
2463
2356
  className,
@@ -2471,17 +2364,17 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2471
2364
  resolvedId,
2472
2365
  ...uploadProps
2473
2366
  }, ref) {
2474
- const inputRef = React13.useRef(null);
2475
- const [isDragActive, setIsDragActive] = React13.useState(false);
2476
- const [selectedFiles, setSelectedFiles] = React13.useState([]);
2367
+ const inputRef = React15.useRef(null);
2368
+ const [isDragActive, setIsDragActive] = React15.useState(false);
2369
+ const [selectedFiles, setSelectedFiles] = React15.useState([]);
2477
2370
  const resolvedMultiple = multiple ?? true;
2478
2371
  const prefersReducedMotion = useReducedMotion2();
2479
- React13.useImperativeHandle(ref, () => inputRef.current);
2372
+ React15.useImperativeHandle(ref, () => inputRef.current);
2480
2373
  const resolvedAccept = accept ?? uploadAcceptByKind[uploadKind];
2481
2374
  const resolvedAriaLabel = ariaLabel ?? uploadAriaLabelByKind[uploadKind];
2482
2375
  const resolvedTitle = uploadTitle ?? "Arraste arquivos aqui ou clique para selecionar";
2483
2376
  const resolvedDescription = uploadDescription ?? uploadDescriptionByKind[uploadKind];
2484
- const syncSelectedFiles = React13.useCallback(
2377
+ const syncSelectedFiles = React15.useCallback(
2485
2378
  (files) => {
2486
2379
  const normalizedFiles = resolvedMultiple ? files : files.slice(0, 1);
2487
2380
  setSelectedFiles(normalizedFiles);
@@ -2489,7 +2382,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2489
2382
  },
2490
2383
  [onFilesChange, resolvedMultiple]
2491
2384
  );
2492
- const applyFilesToInput = React13.useCallback((files) => {
2385
+ const applyFilesToInput = React15.useCallback((files) => {
2493
2386
  const inputElement = inputRef.current;
2494
2387
  if (!inputElement || typeof DataTransfer === "undefined") {
2495
2388
  return false;
@@ -2508,7 +2401,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2508
2401
  return false;
2509
2402
  }
2510
2403
  }, []);
2511
- const handleInputChange = React13.useCallback(
2404
+ const handleInputChange = React15.useCallback(
2512
2405
  (event) => {
2513
2406
  const nextFiles = mergeUploadFiles(
2514
2407
  selectedFiles,
@@ -2527,12 +2420,12 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2527
2420
  syncSelectedFiles
2528
2421
  ]
2529
2422
  );
2530
- const openPicker = React13.useCallback(() => {
2423
+ const openPicker = React15.useCallback(() => {
2531
2424
  if (!disabled) {
2532
2425
  inputRef.current?.click();
2533
2426
  }
2534
2427
  }, [disabled]);
2535
- const handleKeyDown = React13.useCallback(
2428
+ const handleKeyDown = React15.useCallback(
2536
2429
  (event) => {
2537
2430
  if (disabled) {
2538
2431
  return;
@@ -2544,7 +2437,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2544
2437
  },
2545
2438
  [disabled, openPicker]
2546
2439
  );
2547
- const handleDragEnter = React13.useCallback(
2440
+ const handleDragEnter = React15.useCallback(
2548
2441
  (event) => {
2549
2442
  event.preventDefault();
2550
2443
  if (!disabled) {
@@ -2553,7 +2446,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2553
2446
  },
2554
2447
  [disabled]
2555
2448
  );
2556
- const handleDragLeave = React13.useCallback(
2449
+ const handleDragLeave = React15.useCallback(
2557
2450
  (event) => {
2558
2451
  if (disabled) {
2559
2452
  return;
@@ -2566,7 +2459,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2566
2459
  },
2567
2460
  [disabled]
2568
2461
  );
2569
- const handleDragOver = React13.useCallback(
2462
+ const handleDragOver = React15.useCallback(
2570
2463
  (event) => {
2571
2464
  event.preventDefault();
2572
2465
  if (disabled) {
@@ -2577,7 +2470,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2577
2470
  },
2578
2471
  [disabled]
2579
2472
  );
2580
- const handleDrop = React13.useCallback(
2473
+ const handleDrop = React15.useCallback(
2581
2474
  (event) => {
2582
2475
  event.preventDefault();
2583
2476
  if (disabled) {
@@ -2610,7 +2503,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2610
2503
  syncSelectedFiles
2611
2504
  ]
2612
2505
  );
2613
- const handleRemoveFile = React13.useCallback(
2506
+ const handleRemoveFile = React15.useCallback(
2614
2507
  (fileIndex) => {
2615
2508
  if (disabled) {
2616
2509
  return;
@@ -2621,8 +2514,8 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2621
2514
  },
2622
2515
  [applyFilesToInput, disabled, selectedFiles, syncSelectedFiles]
2623
2516
  );
2624
- return /* @__PURE__ */ jsxs10("div", { className: "grid w-full gap-4", children: [
2625
- /* @__PURE__ */ jsx15(
2517
+ return /* @__PURE__ */ jsxs9("div", { className: "grid w-full gap-4", children: [
2518
+ /* @__PURE__ */ jsx16(
2626
2519
  "input",
2627
2520
  {
2628
2521
  ...uploadProps,
@@ -2637,7 +2530,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2637
2530
  onChange: handleInputChange
2638
2531
  }
2639
2532
  ),
2640
- /* @__PURE__ */ jsxs10(
2533
+ /* @__PURE__ */ jsxs9(
2641
2534
  "label",
2642
2535
  {
2643
2536
  "aria-disabled": disabled || void 0,
@@ -2657,8 +2550,8 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2657
2550
  onDrop: handleDrop,
2658
2551
  onKeyDown: handleKeyDown,
2659
2552
  children: [
2660
- /* @__PURE__ */ jsx15("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ jsx15(UploadGlyph, { className: "size-[18px]" }) }),
2661
- /* @__PURE__ */ jsx15("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
2553
+ /* @__PURE__ */ jsx16("span", { className: "flex size-10 items-center justify-center rounded-[6px] p-2 text-[color:var(--sofya-text-default)]", children: /* @__PURE__ */ jsx16(UploadGlyph, { className: "size-[18px]" }) }),
2554
+ /* @__PURE__ */ jsx16("span", { className: "text-[color:var(--sofya-text-default)]", children: renderTextContent(resolvedTitle, {
2662
2555
  as: "span",
2663
2556
  className: "block text-[color:var(--sofya-text-default)]",
2664
2557
  size: "body",
@@ -2666,7 +2559,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2666
2559
  fontWeight: 500
2667
2560
  }
2668
2561
  }) }),
2669
- resolvedDescription ? /* @__PURE__ */ jsx15("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
2562
+ resolvedDescription ? /* @__PURE__ */ jsx16("span", { className: "text-[color:var(--sofya-text-subtle)]", children: renderTextContent(resolvedDescription, {
2670
2563
  as: "span",
2671
2564
  className: "block text-[color:var(--sofya-text-subtle)]",
2672
2565
  size: "tiny"
@@ -2674,28 +2567,27 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2674
2567
  ]
2675
2568
  }
2676
2569
  ),
2677
- /* @__PURE__ */ jsx15(motion2.div, { layout: true, role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ jsx15(AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
2570
+ /* @__PURE__ */ jsx16("div", { role: "list", className: "grid gap-4 overflow-hidden", children: /* @__PURE__ */ jsx16(AnimatePresence, { initial: false, children: selectedFiles.map((file, index) => {
2678
2571
  const fileKey = resolveUploadFileSignature(file);
2679
- return /* @__PURE__ */ jsx15(
2572
+ return /* @__PURE__ */ jsx16(
2680
2573
  motion2.div,
2681
2574
  {
2682
- layout: true,
2683
2575
  role: "listitem",
2684
2576
  className: "overflow-hidden",
2685
- initial: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: 10, scale: 0.98, height: 0 },
2686
- animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0, scale: 1, height: "auto" },
2687
- exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, scale: 0.98, height: 0 },
2577
+ initial: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: 8 },
2578
+ animate: prefersReducedMotion ? { opacity: 1 } : { opacity: 1, y: 0 },
2579
+ exit: prefersReducedMotion ? { opacity: 0 } : { opacity: 0, y: -6 },
2688
2580
  transition: uploadListItemTransition,
2689
- children: /* @__PURE__ */ jsxs10(Card, { variant: "panel", className: "flex items-center gap-4 p-4", children: [
2690
- /* @__PURE__ */ jsx15("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ jsx15(
2581
+ children: /* @__PURE__ */ jsxs9(Card, { variant: "panel", className: "flex items-center gap-4 p-4", children: [
2582
+ /* @__PURE__ */ jsx16("span", { className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-[color:var(--sofya-surface-hover)] text-primary", children: /* @__PURE__ */ jsx16(
2691
2583
  UploadFileTypeGlyph,
2692
2584
  {
2693
2585
  className: "size-[18px]",
2694
2586
  kind: resolveUploadFileVisualKind(file, uploadKind)
2695
2587
  }
2696
2588
  ) }),
2697
- /* @__PURE__ */ jsxs10("div", { className: "min-w-0 flex-1", children: [
2698
- /* @__PURE__ */ jsx15("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
2589
+ /* @__PURE__ */ jsxs9("div", { className: "min-w-0 flex-1", children: [
2590
+ /* @__PURE__ */ jsx16("p", { className: "truncate text-[color:var(--sofya-text-default)]", children: renderTextContent(file.name, {
2699
2591
  as: "span",
2700
2592
  className: "block truncate text-[color:var(--sofya-text-default)]",
2701
2593
  size: "body",
@@ -2703,7 +2595,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2703
2595
  fontWeight: 500
2704
2596
  }
2705
2597
  }) }),
2706
- /* @__PURE__ */ jsx15("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
2598
+ /* @__PURE__ */ jsx16("p", { className: "mt-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(
2707
2599
  `${resolveUploadFileBadge(
2708
2600
  file
2709
2601
  )} \xB7 ${formatUploadFileSize(file.size)}`,
@@ -2714,7 +2606,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2714
2606
  }
2715
2607
  ) })
2716
2608
  ] }),
2717
- /* @__PURE__ */ jsx15(
2609
+ /* @__PURE__ */ jsx16(
2718
2610
  "button",
2719
2611
  {
2720
2612
  "aria-label": `Remover ${file.name}`,
@@ -2726,7 +2618,7 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2726
2618
  event.stopPropagation();
2727
2619
  handleRemoveFile(index);
2728
2620
  },
2729
- children: /* @__PURE__ */ jsx15(
2621
+ children: /* @__PURE__ */ jsx16(
2730
2622
  Icon,
2731
2623
  {
2732
2624
  "aria-hidden": "true",
@@ -2741,12 +2633,111 @@ var UploadInputControl = React13.forwardRef(function UploadInputControl2({
2741
2633
  },
2742
2634
  fileKey
2743
2635
  );
2744
- }) }) })
2745
- ] });
2636
+ }) }) })
2637
+ ] });
2638
+ });
2639
+ UploadInputControl.displayName = "UploadInputControl";
2640
+
2641
+ // src/components/input-otp.tsx
2642
+ import * as React16 from "react";
2643
+ import {
2644
+ OTPInput,
2645
+ OTPInputContext,
2646
+ REGEXP_ONLY_DIGITS
2647
+ } from "input-otp";
2648
+ import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
2649
+ var InputOTP = React16.forwardRef(({ className, containerClassName, ...props }, ref) => {
2650
+ return /* @__PURE__ */ jsx17(
2651
+ OTPInput,
2652
+ {
2653
+ ref,
2654
+ containerClassName: cn(
2655
+ "flex items-center gap-4 has-[:disabled]:opacity-50",
2656
+ containerClassName
2657
+ ),
2658
+ className: cn("disabled:cursor-not-allowed", className),
2659
+ ...props
2660
+ }
2661
+ );
2662
+ });
2663
+ InputOTP.displayName = "InputOTP";
2664
+ var InputOTPGroup = React16.forwardRef(({ className, ...props }, ref) => {
2665
+ return /* @__PURE__ */ jsx17(
2666
+ "div",
2667
+ {
2668
+ ref,
2669
+ className: cn(
2670
+ "flex overflow-hidden rounded-[12px] border border-[color:var(--sofya-border-hover)] bg-card",
2671
+ className
2672
+ ),
2673
+ ...props
2674
+ }
2675
+ );
2676
+ });
2677
+ InputOTPGroup.displayName = "InputOTPGroup";
2678
+ var InputOTPSlot = React16.forwardRef(
2679
+ ({ className, index, ...props }, ref) => {
2680
+ const otpContext = React16.useContext(OTPInputContext);
2681
+ const slot = otpContext.slots[index];
2682
+ if (!slot) {
2683
+ return /* @__PURE__ */ jsx17(
2684
+ "div",
2685
+ {
2686
+ ref,
2687
+ className: cn(
2688
+ "relative flex h-[92px] w-[96px] items-center justify-center border-r border-[color:var(--sofya-border-strong)] bg-card last:border-r-0",
2689
+ className
2690
+ ),
2691
+ ...props
2692
+ }
2693
+ );
2694
+ }
2695
+ return /* @__PURE__ */ jsxs10(
2696
+ "div",
2697
+ {
2698
+ ref,
2699
+ className: cn(
2700
+ "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",
2701
+ 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)]",
2702
+ className
2703
+ ),
2704
+ ...props,
2705
+ children: [
2706
+ slot.char ?? null,
2707
+ slot.hasFakeCaret ? /* @__PURE__ */ jsx17("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx17("div", { className: "h-10 w-[2px] animate-pulse rounded-full bg-primary shadow-[var(--sofya-shadow-caret-glow)]" }) }) : null
2708
+ ]
2709
+ }
2710
+ );
2711
+ }
2712
+ );
2713
+ InputOTPSlot.displayName = "InputOTPSlot";
2714
+ var InputOTPSeparator = React16.forwardRef(({ className, ...props }, ref) => {
2715
+ return /* @__PURE__ */ jsx17(
2716
+ "div",
2717
+ {
2718
+ ref,
2719
+ role: "separator",
2720
+ className: cn(
2721
+ "flex items-center justify-center px-2 text-[28px] leading-none text-[color:var(--sofya-text-soft)]",
2722
+ className
2723
+ ),
2724
+ ...props,
2725
+ children: /* @__PURE__ */ jsx17("span", { "aria-hidden": "true", children: "." })
2726
+ }
2727
+ );
2746
2728
  });
2747
- UploadInputControl.displayName = "UploadInputControl";
2748
- var Input = React13.forwardRef((props, ref) => {
2749
- const generatedId = React13.useId();
2729
+ InputOTPSeparator.displayName = "InputOTPSeparator";
2730
+
2731
+ // src/components/input.tsx
2732
+ import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
2733
+ var inputVariantOptions = [
2734
+ "default",
2735
+ "search",
2736
+ "otp",
2737
+ "upload"
2738
+ ];
2739
+ var Input = React17.forwardRef((props, ref) => {
2740
+ const generatedId = React17.useId();
2750
2741
  const resolvedId = props.id ?? generatedId;
2751
2742
  const variant = props.variant ?? "default";
2752
2743
  if (variant === "otp") {
@@ -2774,7 +2765,7 @@ var Input = React13.forwardRef((props, ref) => {
2774
2765
  );
2775
2766
  const hasTrailingGroup = resolvedSplitIndex < resolvedLength;
2776
2767
  const otpAriaLabel = otpProps["aria-label"] ?? "Verification code";
2777
- const otpControl = /* @__PURE__ */ jsxs10(
2768
+ const otpControl = /* @__PURE__ */ jsxs11(
2778
2769
  InputOTP,
2779
2770
  {
2780
2771
  ref,
@@ -2787,7 +2778,7 @@ var Input = React13.forwardRef((props, ref) => {
2787
2778
  containerClassName: className2,
2788
2779
  ...otpProps,
2789
2780
  children: [
2790
- /* @__PURE__ */ jsx15(InputOTPGroup, { className: otpGroupClassName, children: Array.from({ length: resolvedSplitIndex }, (_, index) => /* @__PURE__ */ jsx15(
2781
+ /* @__PURE__ */ jsx18(InputOTPGroup, { className: otpGroupClassName, children: Array.from({ length: resolvedSplitIndex }, (_, index) => /* @__PURE__ */ jsx18(
2791
2782
  InputOTPSlot,
2792
2783
  {
2793
2784
  className: otpSlotClassName,
@@ -2795,10 +2786,10 @@ var Input = React13.forwardRef((props, ref) => {
2795
2786
  },
2796
2787
  `otp-leading-${index}`
2797
2788
  )) }),
2798
- hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ jsx15(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
2799
- hasTrailingGroup ? /* @__PURE__ */ jsx15(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
2789
+ hasTrailingGroup ? otpSeparator ?? /* @__PURE__ */ jsx18(InputOTPSeparator, { className: otpSeparatorClassName }) : null,
2790
+ hasTrailingGroup ? /* @__PURE__ */ jsx18(InputOTPGroup, { className: otpGroupClassName, children: Array.from(
2800
2791
  { length: resolvedLength - resolvedSplitIndex },
2801
- (_, index) => /* @__PURE__ */ jsx15(
2792
+ (_, index) => /* @__PURE__ */ jsx18(
2802
2793
  InputOTPSlot,
2803
2794
  {
2804
2795
  className: otpSlotClassName,
@@ -2810,12 +2801,12 @@ var Input = React13.forwardRef((props, ref) => {
2810
2801
  ]
2811
2802
  }
2812
2803
  );
2813
- return /* @__PURE__ */ jsx15(
2814
- InputShell,
2804
+ return /* @__PURE__ */ jsx18(
2805
+ FieldShell,
2815
2806
  {
2816
2807
  containerClassName: containerClassName2,
2817
2808
  control: otpControl,
2818
- resolvedId
2809
+ labelHtmlFor: resolvedId
2819
2810
  }
2820
2811
  );
2821
2812
  }
@@ -2829,7 +2820,7 @@ var Input = React13.forwardRef((props, ref) => {
2829
2820
  variant: _variant2,
2830
2821
  ...uploadProps
2831
2822
  } = props;
2832
- const uploadControl = /* @__PURE__ */ jsx15(
2823
+ const uploadControl = /* @__PURE__ */ jsx18(
2833
2824
  UploadInputControl,
2834
2825
  {
2835
2826
  ...uploadProps,
@@ -2837,14 +2828,28 @@ var Input = React13.forwardRef((props, ref) => {
2837
2828
  resolvedId
2838
2829
  }
2839
2830
  );
2840
- return /* @__PURE__ */ jsx15(
2841
- UploadInputShell,
2831
+ const uploadLabel = label2 || uploadOptionalLabel ? /* @__PURE__ */ jsxs11(Fragment4, { children: [
2832
+ renderTextContent(label2, {
2833
+ as: "span",
2834
+ className: "text-[color:var(--sofya-text-default)]",
2835
+ size: "body",
2836
+ style: {
2837
+ fontWeight: 700
2838
+ }
2839
+ }),
2840
+ uploadOptionalLabel ? /* @__PURE__ */ jsx18("span", { className: "ml-2 text-[color:var(--sofya-text-subtle)]", children: renderTextContent(uploadOptionalLabel, {
2841
+ as: "span",
2842
+ className: "text-[color:var(--sofya-text-subtle)]",
2843
+ size: "tiny"
2844
+ }) }) : null
2845
+ ] }) : void 0;
2846
+ return /* @__PURE__ */ jsx18(
2847
+ FieldShell,
2842
2848
  {
2843
2849
  containerClassName: containerClassName2,
2844
2850
  control: uploadControl,
2845
- label: label2,
2846
- labelClassName: labelClassName2,
2847
- optionalLabel: uploadOptionalLabel
2851
+ label: uploadLabel,
2852
+ labelClassName: labelClassName2
2848
2853
  }
2849
2854
  );
2850
2855
  }
@@ -2861,8 +2866,8 @@ var Input = React13.forwardRef((props, ref) => {
2861
2866
  const isSearch = variant === "search";
2862
2867
  const resolvedType = type ?? (isSearch ? "search" : void 0);
2863
2868
  const ariaLabel = nativeProps["aria-label"] ?? (typeof label === "string" ? label : isSearch ? "Search" : void 0);
2864
- const nativeControl = isSearch ? /* @__PURE__ */ jsxs10("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: [
2865
- /* @__PURE__ */ jsx15(
2869
+ const nativeControl = isSearch ? /* @__PURE__ */ jsxs11("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: [
2870
+ /* @__PURE__ */ jsx18(
2866
2871
  Icon,
2867
2872
  {
2868
2873
  "aria-hidden": "true",
@@ -2871,7 +2876,7 @@ var Input = React13.forwardRef((props, ref) => {
2871
2876
  size: 32
2872
2877
  }
2873
2878
  ),
2874
- /* @__PURE__ */ jsx15(
2879
+ /* @__PURE__ */ jsx18(
2875
2880
  "input",
2876
2881
  {
2877
2882
  id: resolvedId,
@@ -2887,7 +2892,7 @@ var Input = React13.forwardRef((props, ref) => {
2887
2892
  placeholder: nativeProps.placeholder ?? "Search"
2888
2893
  }
2889
2894
  )
2890
- ] }) : /* @__PURE__ */ jsx15(
2895
+ ] }) : /* @__PURE__ */ jsx18(
2891
2896
  "input",
2892
2897
  {
2893
2898
  id: resolvedId,
@@ -2901,25 +2906,25 @@ var Input = React13.forwardRef((props, ref) => {
2901
2906
  "aria-label": ariaLabel
2902
2907
  }
2903
2908
  );
2904
- return /* @__PURE__ */ jsx15(
2905
- InputShell,
2909
+ return /* @__PURE__ */ jsx18(
2910
+ FieldShell,
2906
2911
  {
2907
2912
  containerClassName,
2908
2913
  control: nativeControl,
2909
2914
  label: isSearch ? void 0 : label,
2910
2915
  labelClassName: isSearch ? void 0 : labelClassName,
2911
- resolvedId
2916
+ labelHtmlFor: isSearch ? void 0 : resolvedId
2912
2917
  }
2913
2918
  );
2914
2919
  });
2915
2920
  Input.displayName = "Input";
2916
2921
 
2917
2922
  // src/components/label.tsx
2918
- import * as React14 from "react";
2919
- import { jsx as jsx16 } from "react/jsx-runtime";
2920
- var Label = React14.forwardRef(
2923
+ import * as React18 from "react";
2924
+ import { jsx as jsx19 } from "react/jsx-runtime";
2925
+ var Label = React18.forwardRef(
2921
2926
  ({ children, className, ...props }, ref) => {
2922
- return /* @__PURE__ */ jsx16(
2927
+ return /* @__PURE__ */ jsx19(
2923
2928
  "label",
2924
2929
  {
2925
2930
  ref,
@@ -2943,10 +2948,10 @@ var Label = React14.forwardRef(
2943
2948
  Label.displayName = "Label";
2944
2949
 
2945
2950
  // src/components/link.tsx
2946
- import * as React15 from "react";
2951
+ import * as React19 from "react";
2947
2952
  import { Slot as Slot3 } from "@radix-ui/react-slot";
2948
2953
  import { cva as cva6 } from "class-variance-authority";
2949
- import { jsx as jsx17 } from "react/jsx-runtime";
2954
+ import { jsx as jsx20 } from "react/jsx-runtime";
2950
2955
  var linkVariants = cva6(
2951
2956
  "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",
2952
2957
  {
@@ -2961,9 +2966,9 @@ var linkVariants = cva6(
2961
2966
  }
2962
2967
  }
2963
2968
  );
2964
- var Link = React15.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
2969
+ var Link = React19.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
2965
2970
  const Component = asChild ? Slot3 : "a";
2966
- return /* @__PURE__ */ jsx17(
2971
+ return /* @__PURE__ */ jsx20(
2967
2972
  Component,
2968
2973
  {
2969
2974
  ref,
@@ -2981,7 +2986,7 @@ var Link = React15.forwardRef(function Link2({ asChild = false, children, classN
2981
2986
  Link.displayName = "Link";
2982
2987
 
2983
2988
  // src/components/logo.tsx
2984
- import * as React16 from "react";
2989
+ import * as React20 from "react";
2985
2990
 
2986
2991
  // src/components/logo-data.ts
2987
2992
  var logoAssets = {
@@ -3078,7 +3083,7 @@ var logoAssets = {
3078
3083
  };
3079
3084
 
3080
3085
  // src/components/logo.tsx
3081
- import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
3086
+ import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
3082
3087
  var logoVariants = ["mono", "default", "text", "full"];
3083
3088
  var logoSizeOptions = ["sm", "md", "lg", "xl", "2xl"];
3084
3089
  var logoSizeScale = {
@@ -3114,7 +3119,7 @@ function resolveLogoDimensions(variant, size, width, height) {
3114
3119
  height: resolvedHeight
3115
3120
  };
3116
3121
  }
3117
- var Logo = React16.forwardRef(function Logo2({
3122
+ var Logo = React20.forwardRef(function Logo2({
3118
3123
  variant = "full",
3119
3124
  size = "lg",
3120
3125
  width,
@@ -3125,10 +3130,10 @@ var Logo = React16.forwardRef(function Logo2({
3125
3130
  ...props
3126
3131
  }, ref) {
3127
3132
  const asset = logoAssets[variant];
3128
- const titleId = React16.useId();
3133
+ const titleId = React20.useId();
3129
3134
  const dimensions = resolveLogoDimensions(variant, size, width, height);
3130
3135
  const monoFill = variant === "mono" ? monoColor ?? "currentColor" : void 0;
3131
- return /* @__PURE__ */ jsxs11(
3136
+ return /* @__PURE__ */ jsxs12(
3132
3137
  "svg",
3133
3138
  {
3134
3139
  ref,
@@ -3143,8 +3148,8 @@ var Logo = React16.forwardRef(function Logo2({
3143
3148
  focusable: "false",
3144
3149
  ...props,
3145
3150
  children: [
3146
- title ? /* @__PURE__ */ jsx18("title", { id: titleId, children: title }) : null,
3147
- asset.paths.map((path, index) => /* @__PURE__ */ jsx18(
3151
+ title ? /* @__PURE__ */ jsx21("title", { id: titleId, children: title }) : null,
3152
+ asset.paths.map((path, index) => /* @__PURE__ */ jsx21(
3148
3153
  "path",
3149
3154
  {
3150
3155
  d: path.d,
@@ -3161,10 +3166,12 @@ var Logo = React16.forwardRef(function Logo2({
3161
3166
  Logo.displayName = "Logo";
3162
3167
 
3163
3168
  // src/components/pagination.tsx
3169
+ import { IconChevronLeft, IconChevronRight } from "@tabler/icons-react";
3164
3170
  import { Slot as Slot4 } from "@radix-ui/react-slot";
3165
3171
  import { cva as cva7 } from "class-variance-authority";
3166
- import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
3167
- var inheritTypographyStyle = {
3172
+
3173
+ // src/lib/inherited-typography.ts
3174
+ var inheritedTypographyStyle = {
3168
3175
  color: "inherit",
3169
3176
  fontFamily: "inherit",
3170
3177
  fontSize: "inherit",
@@ -3172,6 +3179,9 @@ var inheritTypographyStyle = {
3172
3179
  letterSpacing: "inherit",
3173
3180
  lineHeight: "inherit"
3174
3181
  };
3182
+
3183
+ // src/components/pagination.tsx
3184
+ import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
3175
3185
  var paginationLinkVariants = cva7(
3176
3186
  "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",
3177
3187
  {
@@ -3192,7 +3202,7 @@ var paginationLinkVariants = cva7(
3192
3202
  }
3193
3203
  );
3194
3204
  function Pagination({ className, ...props }) {
3195
- return /* @__PURE__ */ jsx19(
3205
+ return /* @__PURE__ */ jsx22(
3196
3206
  "nav",
3197
3207
  {
3198
3208
  "aria-label": "Pagination",
@@ -3205,7 +3215,7 @@ function PaginationContent({
3205
3215
  className,
3206
3216
  ...props
3207
3217
  }) {
3208
- return /* @__PURE__ */ jsx19(
3218
+ return /* @__PURE__ */ jsx22(
3209
3219
  "ul",
3210
3220
  {
3211
3221
  className: cn(
@@ -3217,7 +3227,7 @@ function PaginationContent({
3217
3227
  );
3218
3228
  }
3219
3229
  function PaginationItem({ className, ...props }) {
3220
- return /* @__PURE__ */ jsx19("li", { className: cn("list-none", className), ...props });
3230
+ return /* @__PURE__ */ jsx22("li", { className: cn("list-none", className), ...props });
3221
3231
  }
3222
3232
  function PaginationLink({
3223
3233
  asChild = false,
@@ -3227,7 +3237,7 @@ function PaginationLink({
3227
3237
  ...props
3228
3238
  }) {
3229
3239
  const Component = asChild ? Slot4 : "a";
3230
- return /* @__PURE__ */ jsx19(
3240
+ return /* @__PURE__ */ jsx22(
3231
3241
  Component,
3232
3242
  {
3233
3243
  "aria-current": isActive ? "page" : void 0,
@@ -3237,67 +3247,29 @@ function PaginationLink({
3237
3247
  );
3238
3248
  }
3239
3249
  function PaginationChevronLeft() {
3240
- return /* @__PURE__ */ jsx19(
3241
- "svg",
3242
- {
3243
- "aria-hidden": "true",
3244
- className: "h-4 w-4",
3245
- viewBox: "0 0 16 16",
3246
- fill: "none",
3247
- xmlns: "http://www.w3.org/2000/svg",
3248
- children: /* @__PURE__ */ jsx19(
3249
- "path",
3250
- {
3251
- d: "M9.5 3.5L5 8L9.5 12.5",
3252
- stroke: "currentColor",
3253
- strokeWidth: "1.75",
3254
- strokeLinecap: "round",
3255
- strokeLinejoin: "round"
3256
- }
3257
- )
3258
- }
3259
- );
3250
+ return /* @__PURE__ */ jsx22(IconChevronLeft, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
3260
3251
  }
3261
3252
  function PaginationChevronRight() {
3262
- return /* @__PURE__ */ jsx19(
3263
- "svg",
3264
- {
3265
- "aria-hidden": "true",
3266
- className: "h-4 w-4",
3267
- viewBox: "0 0 16 16",
3268
- fill: "none",
3269
- xmlns: "http://www.w3.org/2000/svg",
3270
- children: /* @__PURE__ */ jsx19(
3271
- "path",
3272
- {
3273
- d: "M6.5 3.5L11 8L6.5 12.5",
3274
- stroke: "currentColor",
3275
- strokeWidth: "1.75",
3276
- strokeLinecap: "round",
3277
- strokeLinejoin: "round"
3278
- }
3279
- )
3280
- }
3281
- );
3253
+ return /* @__PURE__ */ jsx22(IconChevronRight, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
3282
3254
  }
3283
3255
  function PaginationPrevious({
3284
3256
  className,
3285
3257
  text = "Previous",
3286
3258
  ...props
3287
3259
  }) {
3288
- return /* @__PURE__ */ jsxs12(
3260
+ return /* @__PURE__ */ jsxs13(
3289
3261
  PaginationLink,
3290
3262
  {
3291
3263
  "aria-label": "Go to previous page",
3292
3264
  className: cn("gap-2 px-4", className),
3293
3265
  ...props,
3294
3266
  children: [
3295
- /* @__PURE__ */ jsx19(PaginationChevronLeft, {}),
3296
- /* @__PURE__ */ jsx19("span", { className: "hidden sm:block", children: renderTextContent(text, {
3267
+ /* @__PURE__ */ jsx22(PaginationChevronLeft, {}),
3268
+ /* @__PURE__ */ jsx22("span", { className: "hidden sm:block", children: renderTextContent(text, {
3297
3269
  as: "span",
3298
3270
  className: "block text-inherit",
3299
3271
  size: "body",
3300
- style: inheritTypographyStyle
3272
+ style: inheritedTypographyStyle
3301
3273
  }) })
3302
3274
  ]
3303
3275
  }
@@ -3308,20 +3280,20 @@ function PaginationNext({
3308
3280
  text = "Next",
3309
3281
  ...props
3310
3282
  }) {
3311
- return /* @__PURE__ */ jsxs12(
3283
+ return /* @__PURE__ */ jsxs13(
3312
3284
  PaginationLink,
3313
3285
  {
3314
3286
  "aria-label": "Go to next page",
3315
3287
  className: cn("gap-2 px-4", className),
3316
3288
  ...props,
3317
3289
  children: [
3318
- /* @__PURE__ */ jsx19("span", { className: "hidden sm:block", children: renderTextContent(text, {
3290
+ /* @__PURE__ */ jsx22("span", { className: "hidden sm:block", children: renderTextContent(text, {
3319
3291
  as: "span",
3320
3292
  className: "block text-inherit",
3321
3293
  size: "body",
3322
- style: inheritTypographyStyle
3294
+ style: inheritedTypographyStyle
3323
3295
  }) }),
3324
- /* @__PURE__ */ jsx19(PaginationChevronRight, {})
3296
+ /* @__PURE__ */ jsx22(PaginationChevronRight, {})
3325
3297
  ]
3326
3298
  }
3327
3299
  );
@@ -3330,7 +3302,7 @@ function PaginationEllipsis({
3330
3302
  className,
3331
3303
  ...props
3332
3304
  }) {
3333
- return /* @__PURE__ */ jsxs12(
3305
+ return /* @__PURE__ */ jsxs13(
3334
3306
  "span",
3335
3307
  {
3336
3308
  "aria-hidden": "true",
@@ -3340,35 +3312,35 @@ function PaginationEllipsis({
3340
3312
  ),
3341
3313
  ...props,
3342
3314
  children: [
3343
- /* @__PURE__ */ jsx19("span", { children: renderTextContent("...", {
3315
+ /* @__PURE__ */ jsx22("span", { children: renderTextContent("...", {
3344
3316
  as: "span",
3345
3317
  className: "block text-inherit",
3346
3318
  size: "h5",
3347
- style: inheritTypographyStyle
3319
+ style: inheritedTypographyStyle
3348
3320
  }) }),
3349
- /* @__PURE__ */ jsx19("span", { className: "sr-only", children: "More pages" })
3321
+ /* @__PURE__ */ jsx22("span", { className: "sr-only", children: "More pages" })
3350
3322
  ]
3351
3323
  }
3352
3324
  );
3353
3325
  }
3354
3326
 
3355
3327
  // src/components/popover.tsx
3356
- import * as React17 from "react";
3328
+ import * as React21 from "react";
3357
3329
  import * as PopoverPrimitive from "@radix-ui/react-popover";
3358
- import { jsx as jsx20 } from "react/jsx-runtime";
3330
+ import { jsx as jsx23 } from "react/jsx-runtime";
3359
3331
  var Popover = PopoverPrimitive.Root;
3360
3332
  var PopoverTrigger = PopoverPrimitive.Trigger;
3361
3333
  var PopoverAnchor = PopoverPrimitive.Anchor;
3362
3334
  var PopoverPortal = PopoverPrimitive.Portal;
3363
3335
  var PopoverClose = PopoverPrimitive.Close;
3364
- var PopoverContent = React17.forwardRef(function PopoverContent2({
3336
+ var PopoverContent = React21.forwardRef(function PopoverContent2({
3365
3337
  align = "center",
3366
3338
  className,
3367
3339
  collisionPadding = 8,
3368
3340
  sideOffset = 8,
3369
3341
  ...props
3370
3342
  }, ref) {
3371
- return /* @__PURE__ */ jsx20(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx20(
3343
+ return /* @__PURE__ */ jsx23(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx23(
3372
3344
  PopoverPrimitive.Content,
3373
3345
  {
3374
3346
  ref,
@@ -3385,8 +3357,8 @@ var PopoverContent = React17.forwardRef(function PopoverContent2({
3385
3357
  ) });
3386
3358
  });
3387
3359
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
3388
- var PopoverTitle = React17.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
3389
- return /* @__PURE__ */ jsx20(
3360
+ var PopoverTitle = React21.forwardRef(function PopoverTitle2({ children, className, ...props }, ref) {
3361
+ return /* @__PURE__ */ jsx23(
3390
3362
  "h4",
3391
3363
  {
3392
3364
  ref,
@@ -3402,8 +3374,8 @@ var PopoverTitle = React17.forwardRef(function PopoverTitle2({ children, classNa
3402
3374
  );
3403
3375
  });
3404
3376
  PopoverTitle.displayName = "PopoverTitle";
3405
- var PopoverDescription = React17.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
3406
- return /* @__PURE__ */ jsx20(
3377
+ var PopoverDescription = React21.forwardRef(function PopoverDescription2({ children, className, ...props }, ref) {
3378
+ return /* @__PURE__ */ jsx23(
3407
3379
  "p",
3408
3380
  {
3409
3381
  ref,
@@ -3421,9 +3393,9 @@ var PopoverDescription = React17.forwardRef(function PopoverDescription2({ child
3421
3393
  PopoverDescription.displayName = "PopoverDescription";
3422
3394
 
3423
3395
  // src/components/progress.tsx
3424
- import * as React18 from "react";
3396
+ import * as React22 from "react";
3425
3397
  import * as ProgressPrimitive from "@radix-ui/react-progress";
3426
- import { jsx as jsx21 } from "react/jsx-runtime";
3398
+ import { jsx as jsx24 } from "react/jsx-runtime";
3427
3399
  var progressSizeOptions = ["sm", "default", "lg"];
3428
3400
  function clampProgressValue(value, max) {
3429
3401
  if (Number.isNaN(value)) {
@@ -3431,7 +3403,7 @@ function clampProgressValue(value, max) {
3431
3403
  }
3432
3404
  return Math.min(Math.max(value, 0), max);
3433
3405
  }
3434
- var Progress = React18.forwardRef(function Progress2({
3406
+ var Progress = React22.forwardRef(function Progress2({
3435
3407
  className,
3436
3408
  indicatorClassName,
3437
3409
  max = 100,
@@ -3442,7 +3414,7 @@ var Progress = React18.forwardRef(function Progress2({
3442
3414
  const safeMax = max > 0 ? max : 100;
3443
3415
  const resolvedValue = typeof value === "number" ? clampProgressValue(value, safeMax) : null;
3444
3416
  const progressScale = resolvedValue === null ? void 0 : Number((resolvedValue / safeMax).toFixed(4));
3445
- return /* @__PURE__ */ jsx21(
3417
+ return /* @__PURE__ */ jsx24(
3446
3418
  ProgressPrimitive.Root,
3447
3419
  {
3448
3420
  ref,
@@ -3455,7 +3427,7 @@ var Progress = React18.forwardRef(function Progress2({
3455
3427
  className
3456
3428
  ),
3457
3429
  ...props,
3458
- children: /* @__PURE__ */ jsx21(
3430
+ children: /* @__PURE__ */ jsx24(
3459
3431
  ProgressPrimitive.Indicator,
3460
3432
  {
3461
3433
  "data-slot": "progress-indicator",
@@ -3472,12 +3444,12 @@ var Progress = React18.forwardRef(function Progress2({
3472
3444
  Progress.displayName = ProgressPrimitive.Root.displayName;
3473
3445
 
3474
3446
  // src/components/radio-group.tsx
3475
- import * as React19 from "react";
3447
+ import * as React23 from "react";
3476
3448
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3477
- import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
3449
+ import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
3478
3450
  var radioGroupOrientationOptions = ["horizontal", "vertical"];
3479
- var RadioGroup2 = React19.forwardRef(function RadioGroup3({ className, ...props }, ref) {
3480
- return /* @__PURE__ */ jsx22(
3451
+ var RadioGroup2 = React23.forwardRef(function RadioGroup3({ className, ...props }, ref) {
3452
+ return /* @__PURE__ */ jsx25(
3481
3453
  RadioGroupPrimitive.Root,
3482
3454
  {
3483
3455
  ref,
@@ -3491,7 +3463,7 @@ var RadioGroup2 = React19.forwardRef(function RadioGroup3({ className, ...props
3491
3463
  );
3492
3464
  });
3493
3465
  RadioGroup2.displayName = RadioGroupPrimitive.Root.displayName;
3494
- var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3466
+ var RadioGroupItem = React23.forwardRef(function RadioGroupItem2({
3495
3467
  className,
3496
3468
  controlClassName,
3497
3469
  description,
@@ -3503,22 +3475,21 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3503
3475
  labelClassName,
3504
3476
  ...props
3505
3477
  }, ref) {
3506
- const generatedId = React19.useId();
3478
+ const generatedId = React23.useId();
3507
3479
  const resolvedId = id ?? generatedId;
3508
3480
  const labelId = label ? `${resolvedId}-label` : void 0;
3509
3481
  const descriptionId = description ? `${resolvedId}-description` : void 0;
3510
3482
  const alignClassName = description ? "items-start" : "items-center";
3511
- return /* @__PURE__ */ jsxs13(
3483
+ return /* @__PURE__ */ jsxs14(
3512
3484
  "label",
3513
3485
  {
3514
- className: cn(
3515
- "flex w-fit gap-4",
3486
+ className: selectionControlContainerClasses({
3516
3487
  alignClassName,
3517
- disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
3518
- className
3519
- ),
3488
+ className,
3489
+ disabled
3490
+ }),
3520
3491
  children: [
3521
- /* @__PURE__ */ jsx22(
3492
+ /* @__PURE__ */ jsx25(
3522
3493
  RadioGroupPrimitive.Item,
3523
3494
  {
3524
3495
  ref,
@@ -3528,11 +3499,13 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3528
3499
  "aria-describedby": descriptionId,
3529
3500
  "data-slot": "radio-group-item",
3530
3501
  className: cn(
3531
- "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",
3502
+ "peer mt-0 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-primary-foreground outline-none",
3503
+ selectionControlControlBaseClasses,
3504
+ "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",
3532
3505
  controlClassName
3533
3506
  ),
3534
3507
  ...props,
3535
- children: /* @__PURE__ */ jsx22(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ jsx22(
3508
+ children: /* @__PURE__ */ jsx25(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ jsx25(
3536
3509
  "span",
3537
3510
  {
3538
3511
  "data-slot": "radio-group-indicator",
@@ -3544,13 +3517,13 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3544
3517
  ) })
3545
3518
  }
3546
3519
  ),
3547
- label || description ? /* @__PURE__ */ jsxs13("span", { className: "grid gap-2", children: [
3548
- label ? /* @__PURE__ */ jsx22(
3520
+ label || description ? /* @__PURE__ */ jsxs14("span", { className: selectionControlContentBaseClasses, children: [
3521
+ label ? /* @__PURE__ */ jsx25(
3549
3522
  "span",
3550
3523
  {
3551
3524
  id: labelId,
3552
3525
  className: cn(
3553
- "text-[color:var(--sofya-text-default)]",
3526
+ selectionControlLabelTextBaseClasses,
3554
3527
  labelClassName
3555
3528
  ),
3556
3529
  children: renderTextContent(label, {
@@ -3560,11 +3533,14 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3560
3533
  })
3561
3534
  }
3562
3535
  ) : null,
3563
- description ? /* @__PURE__ */ jsx22(
3536
+ description ? /* @__PURE__ */ jsx25(
3564
3537
  "span",
3565
3538
  {
3566
3539
  id: descriptionId,
3567
- className: cn("text-muted-foreground", descriptionClassName),
3540
+ className: cn(
3541
+ selectionControlDescriptionTextBaseClasses,
3542
+ descriptionClassName
3543
+ ),
3568
3544
  children: renderTextContent(description, {
3569
3545
  as: "span",
3570
3546
  className: "text-muted-foreground",
@@ -3580,12 +3556,12 @@ var RadioGroupItem = React19.forwardRef(function RadioGroupItem2({
3580
3556
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
3581
3557
 
3582
3558
  // src/components/scroll-area.tsx
3583
- import * as React20 from "react";
3559
+ import * as React24 from "react";
3584
3560
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3585
- import { jsx as jsx23 } from "react/jsx-runtime";
3561
+ import { jsx as jsx26 } from "react/jsx-runtime";
3586
3562
  var scrollAreaOrientationOptions = ["horizontal", "vertical"];
3587
- var ScrollArea = React20.forwardRef(function ScrollArea2({ className, ...props }, ref) {
3588
- return /* @__PURE__ */ jsx23(
3563
+ var ScrollArea = React24.forwardRef(function ScrollArea2({ className, ...props }, ref) {
3564
+ return /* @__PURE__ */ jsx26(
3589
3565
  ScrollAreaPrimitive.Root,
3590
3566
  {
3591
3567
  ref,
@@ -3596,8 +3572,8 @@ var ScrollArea = React20.forwardRef(function ScrollArea2({ className, ...props }
3596
3572
  );
3597
3573
  });
3598
3574
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3599
- var ScrollAreaViewport = React20.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
3600
- return /* @__PURE__ */ jsx23(
3575
+ var ScrollAreaViewport = React24.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
3576
+ return /* @__PURE__ */ jsx26(
3601
3577
  ScrollAreaPrimitive.Viewport,
3602
3578
  {
3603
3579
  ref,
@@ -3611,8 +3587,8 @@ var ScrollAreaViewport = React20.forwardRef(function ScrollAreaViewport2({ class
3611
3587
  );
3612
3588
  });
3613
3589
  ScrollAreaViewport.displayName = ScrollAreaPrimitive.Viewport.displayName;
3614
- var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
3615
- return /* @__PURE__ */ jsx23(
3590
+ var ScrollAreaScrollbar = React24.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
3591
+ return /* @__PURE__ */ jsx26(
3616
3592
  ScrollAreaPrimitive.Scrollbar,
3617
3593
  {
3618
3594
  ref,
@@ -3623,7 +3599,7 @@ var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ cla
3623
3599
  className
3624
3600
  ),
3625
3601
  ...props,
3626
- children: /* @__PURE__ */ jsx23(
3602
+ children: /* @__PURE__ */ jsx26(
3627
3603
  ScrollAreaPrimitive.Thumb,
3628
3604
  {
3629
3605
  "data-slot": "scroll-area-thumb",
@@ -3637,8 +3613,8 @@ var ScrollAreaScrollbar = React20.forwardRef(function ScrollAreaScrollbar2({ cla
3637
3613
  );
3638
3614
  });
3639
3615
  ScrollAreaScrollbar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
3640
- var ScrollAreaCorner = React20.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
3641
- return /* @__PURE__ */ jsx23(
3616
+ var ScrollAreaCorner = React24.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
3617
+ return /* @__PURE__ */ jsx26(
3642
3618
  ScrollAreaPrimitive.Corner,
3643
3619
  {
3644
3620
  ref,
@@ -3651,22 +3627,19 @@ var ScrollAreaCorner = React20.forwardRef(function ScrollAreaCorner2({ className
3651
3627
  ScrollAreaCorner.displayName = ScrollAreaPrimitive.Corner.displayName;
3652
3628
 
3653
3629
  // src/components/select.tsx
3654
- import * as React21 from "react";
3630
+ import * as React25 from "react";
3655
3631
  import * as SelectPrimitive from "@radix-ui/react-select";
3656
- import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
3657
- var inheritTypographyStyle2 = {
3658
- color: "inherit",
3659
- fontFamily: "inherit",
3660
- fontSize: "inherit",
3661
- fontWeight: "inherit",
3662
- letterSpacing: "inherit",
3663
- lineHeight: "inherit"
3664
- };
3632
+
3633
+ // src/lib/form-control-classes.ts
3634
+ 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)]";
3635
+
3636
+ // src/components/select.tsx
3637
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
3665
3638
  var selectSizeOptions = ["default", "sm"];
3666
3639
  var Select = SelectPrimitive.Root;
3667
3640
  var SelectGroup = SelectPrimitive.Group;
3668
- var SelectValue = React21.forwardRef(function SelectValue2({ className, ...props }, ref) {
3669
- return /* @__PURE__ */ jsx24(
3641
+ var SelectValue = React25.forwardRef(function SelectValue2({ className, ...props }, ref) {
3642
+ return /* @__PURE__ */ jsx27(
3670
3643
  Text,
3671
3644
  {
3672
3645
  ref,
@@ -3674,34 +3647,28 @@ var SelectValue = React21.forwardRef(function SelectValue2({ className, ...props
3674
3647
  "data-slot": "select-value",
3675
3648
  className: cn("block truncate text-inherit", className),
3676
3649
  size: "body",
3677
- style: {
3678
- fontFamily: "inherit",
3679
- fontSize: "inherit",
3680
- fontWeight: "inherit",
3681
- lineHeight: "inherit",
3682
- letterSpacing: "inherit",
3683
- color: "inherit"
3684
- },
3685
- children: /* @__PURE__ */ jsx24(SelectPrimitive.Value, { className: "block truncate", ...props })
3650
+ style: inheritedTypographyStyle,
3651
+ children: /* @__PURE__ */ jsx27(SelectPrimitive.Value, { className: "block truncate", ...props })
3686
3652
  }
3687
3653
  );
3688
3654
  });
3689
3655
  SelectValue.displayName = SelectPrimitive.Value.displayName;
3690
- var SelectTrigger = React21.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
3691
- return /* @__PURE__ */ jsxs14(
3656
+ var SelectTrigger = React25.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
3657
+ return /* @__PURE__ */ jsxs15(
3692
3658
  SelectPrimitive.Trigger,
3693
3659
  {
3694
3660
  ref,
3695
3661
  "data-slot": "select-trigger",
3696
3662
  "data-size": size,
3697
3663
  className: cn(
3698
- "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",
3664
+ formControlBaseClasses,
3665
+ "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",
3699
3666
  className
3700
3667
  ),
3701
3668
  ...props,
3702
3669
  children: [
3703
3670
  children,
3704
- /* @__PURE__ */ jsx24(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx24(
3671
+ /* @__PURE__ */ jsx27(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx27(
3705
3672
  Icon,
3706
3673
  {
3707
3674
  name: "caret-down",
@@ -3714,8 +3681,8 @@ var SelectTrigger = React21.forwardRef(function SelectTrigger2({ className, chil
3714
3681
  );
3715
3682
  });
3716
3683
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
3717
- var SelectScrollUpButton = React21.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
3718
- return /* @__PURE__ */ jsx24(
3684
+ var SelectScrollUpButton = React25.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
3685
+ return /* @__PURE__ */ jsx27(
3719
3686
  SelectPrimitive.ScrollUpButton,
3720
3687
  {
3721
3688
  ref,
@@ -3725,13 +3692,13 @@ var SelectScrollUpButton = React21.forwardRef(function SelectScrollUpButton2({ c
3725
3692
  className
3726
3693
  ),
3727
3694
  ...props,
3728
- children: /* @__PURE__ */ jsx24(Icon, { name: "caret-up", size: 12 })
3695
+ children: /* @__PURE__ */ jsx27(Icon, { name: "caret-up", size: 12 })
3729
3696
  }
3730
3697
  );
3731
3698
  });
3732
3699
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
3733
- var SelectScrollDownButton = React21.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
3734
- return /* @__PURE__ */ jsx24(
3700
+ var SelectScrollDownButton = React25.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
3701
+ return /* @__PURE__ */ jsx27(
3735
3702
  SelectPrimitive.ScrollDownButton,
3736
3703
  {
3737
3704
  ref,
@@ -3741,13 +3708,13 @@ var SelectScrollDownButton = React21.forwardRef(function SelectScrollDownButton2
3741
3708
  className
3742
3709
  ),
3743
3710
  ...props,
3744
- children: /* @__PURE__ */ jsx24(Icon, { name: "caret-down", size: 12 })
3711
+ children: /* @__PURE__ */ jsx27(Icon, { name: "caret-down", size: 12 })
3745
3712
  }
3746
3713
  );
3747
3714
  });
3748
3715
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
3749
- var SelectContent = React21.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
3750
- return /* @__PURE__ */ jsx24(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs14(
3716
+ var SelectContent = React25.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
3717
+ return /* @__PURE__ */ jsx27(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs15(
3751
3718
  SelectPrimitive.Content,
3752
3719
  {
3753
3720
  ref,
@@ -3760,8 +3727,8 @@ var SelectContent = React21.forwardRef(function SelectContent2({ className, chil
3760
3727
  ),
3761
3728
  ...props,
3762
3729
  children: [
3763
- /* @__PURE__ */ jsx24(SelectScrollUpButton, {}),
3764
- /* @__PURE__ */ jsx24(
3730
+ /* @__PURE__ */ jsx27(SelectScrollUpButton, {}),
3731
+ /* @__PURE__ */ jsx27(
3765
3732
  SelectPrimitive.Viewport,
3766
3733
  {
3767
3734
  "data-slot": "select-viewport",
@@ -3769,14 +3736,14 @@ var SelectContent = React21.forwardRef(function SelectContent2({ className, chil
3769
3736
  children
3770
3737
  }
3771
3738
  ),
3772
- /* @__PURE__ */ jsx24(SelectScrollDownButton, {})
3739
+ /* @__PURE__ */ jsx27(SelectScrollDownButton, {})
3773
3740
  ]
3774
3741
  }
3775
3742
  ) });
3776
3743
  });
3777
3744
  SelectContent.displayName = SelectPrimitive.Content.displayName;
3778
- var SelectLabel = React21.forwardRef(function SelectLabel2({ className, ...props }, ref) {
3779
- return /* @__PURE__ */ jsx24(
3745
+ var SelectLabel = React25.forwardRef(function SelectLabel2({ className, ...props }, ref) {
3746
+ return /* @__PURE__ */ jsx27(
3780
3747
  SelectPrimitive.Label,
3781
3748
  {
3782
3749
  ref,
@@ -3798,8 +3765,8 @@ var SelectLabel = React21.forwardRef(function SelectLabel2({ className, ...props
3798
3765
  );
3799
3766
  });
3800
3767
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
3801
- var SelectItem = React21.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
3802
- return /* @__PURE__ */ jsxs14(
3768
+ var SelectItem = React25.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
3769
+ return /* @__PURE__ */ jsxs15(
3803
3770
  SelectPrimitive.Item,
3804
3771
  {
3805
3772
  ref,
@@ -3810,20 +3777,20 @@ var SelectItem = React21.forwardRef(function SelectItem2({ className, children,
3810
3777
  ),
3811
3778
  ...props,
3812
3779
  children: [
3813
- /* @__PURE__ */ jsx24(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
3780
+ /* @__PURE__ */ jsx27(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
3814
3781
  as: "span",
3815
3782
  className: "block truncate text-[color:var(--sofya-text-default)]",
3816
3783
  size: "body",
3817
- style: inheritTypographyStyle2
3784
+ style: inheritedTypographyStyle
3818
3785
  }) }),
3819
- /* @__PURE__ */ jsx24(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ jsx24("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ jsx24(Icon, { name: "check", size: 14 }) }) })
3786
+ /* @__PURE__ */ jsx27(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ jsx27("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ jsx27(Icon, { name: "check", size: 14 }) }) })
3820
3787
  ]
3821
3788
  }
3822
3789
  );
3823
3790
  });
3824
3791
  SelectItem.displayName = SelectPrimitive.Item.displayName;
3825
- var SelectSeparator = React21.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
3826
- return /* @__PURE__ */ jsx24(
3792
+ var SelectSeparator = React25.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
3793
+ return /* @__PURE__ */ jsx27(
3827
3794
  SelectPrimitive.Separator,
3828
3795
  {
3829
3796
  ref,
@@ -3836,11 +3803,11 @@ var SelectSeparator = React21.forwardRef(function SelectSeparator2({ className,
3836
3803
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
3837
3804
 
3838
3805
  // src/components/separator.tsx
3839
- import * as React22 from "react";
3806
+ import * as React26 from "react";
3840
3807
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
3841
- import { jsx as jsx25 } from "react/jsx-runtime";
3842
- var Separator2 = React22.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
3843
- return /* @__PURE__ */ jsx25(
3808
+ import { jsx as jsx28 } from "react/jsx-runtime";
3809
+ var Separator2 = React26.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
3810
+ return /* @__PURE__ */ jsx28(
3844
3811
  SeparatorPrimitive.Root,
3845
3812
  {
3846
3813
  ref,
@@ -3859,8 +3826,8 @@ var Separator2 = React22.forwardRef(function Separator3({ className, decorative
3859
3826
  Separator2.displayName = SeparatorPrimitive.Root.displayName;
3860
3827
 
3861
3828
  // src/components/slider.tsx
3862
- import * as React23 from "react";
3863
- import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
3829
+ import * as React27 from "react";
3830
+ import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
3864
3831
  function clampSliderValue(value, min, max) {
3865
3832
  if (Number.isNaN(value)) {
3866
3833
  return min;
@@ -3885,7 +3852,7 @@ function resolveSliderMeasurement(value, fallback) {
3885
3852
  function isTextValue(value) {
3886
3853
  return typeof value === "string" || typeof value === "number";
3887
3854
  }
3888
- var Slider = React23.forwardRef(function Slider2({
3855
+ var Slider = React27.forwardRef(function Slider2({
3889
3856
  className,
3890
3857
  defaultValue,
3891
3858
  formatValue,
@@ -3908,23 +3875,28 @@ var Slider = React23.forwardRef(function Slider2({
3908
3875
  valueClassName,
3909
3876
  ...props
3910
3877
  }, ref) {
3911
- const resolvedId = React23.useId();
3878
+ const resolvedId = React27.useId();
3912
3879
  const inputId = id ?? resolvedId;
3913
3880
  const safeMin = min;
3914
3881
  const safeMax = resolveSliderMax(safeMin, max);
3915
- const isControlled = value !== void 0;
3916
- const [internalValue, setInternalValue] = React23.useState(
3917
- () => clampSliderValue(defaultValue ?? safeMin, safeMin, safeMax)
3918
- );
3919
- React23.useEffect(() => {
3920
- if (isControlled) {
3882
+ const [controllableValue, setControllableValue, setUncontrolledValue] = useControllableState({
3883
+ defaultValue: clampSliderValue(defaultValue ?? safeMin, safeMin, safeMax),
3884
+ onChange: onValueChange,
3885
+ value
3886
+ });
3887
+ React27.useEffect(() => {
3888
+ if (value !== void 0) {
3921
3889
  return;
3922
3890
  }
3923
- setInternalValue(
3924
- (currentValue2) => clampSliderValue(currentValue2, safeMin, safeMax)
3891
+ setUncontrolledValue(
3892
+ (currentValue2) => clampSliderValue(currentValue2 ?? safeMin, safeMin, safeMax)
3925
3893
  );
3926
- }, [isControlled, safeMax, safeMin]);
3927
- const currentValue = isControlled ? clampSliderValue(value ?? safeMin, safeMin, safeMax) : internalValue;
3894
+ }, [safeMax, safeMin, setUncontrolledValue, value]);
3895
+ const currentValue = clampSliderValue(
3896
+ controllableValue ?? safeMin,
3897
+ safeMin,
3898
+ safeMax
3899
+ );
3928
3900
  const valueRatio = safeMax === safeMin ? 0 : (currentValue - safeMin) / (safeMax - safeMin);
3929
3901
  const valuePercentage = valueRatio * 100;
3930
3902
  const formattedValue = formatValue?.(currentValue) ?? currentValue.toString();
@@ -3956,38 +3928,29 @@ var Slider = React23.forwardRef(function Slider2({
3956
3928
  safeMin,
3957
3929
  safeMax
3958
3930
  );
3959
- if (!isControlled) {
3960
- setInternalValue(nextValue);
3961
- }
3931
+ setControllableValue(nextValue);
3962
3932
  onChange?.(event);
3963
- onValueChange?.(nextValue);
3964
3933
  };
3965
- return /* @__PURE__ */ jsxs15(
3934
+ return /* @__PURE__ */ jsxs16(
3966
3935
  "div",
3967
3936
  {
3968
3937
  "data-slot": "slider",
3969
3938
  className: cn("grid w-full gap-2", className),
3970
3939
  children: [
3971
- label || showValue ? /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between gap-4", children: [
3972
- label ? /* @__PURE__ */ jsx26(
3973
- "label",
3940
+ label || showValue ? /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between gap-4", children: [
3941
+ label ? /* @__PURE__ */ jsx29(
3942
+ FieldLabel,
3974
3943
  {
3975
3944
  htmlFor: inputId,
3976
3945
  className: cn(
3977
- "min-w-0 text-[color:var(--sofya-text-default)]",
3946
+ "min-w-0",
3978
3947
  labelClassName
3979
3948
  ),
3980
- children: renderTextContent(label, {
3981
- as: "span",
3982
- className: "block text-[color:var(--sofya-text-default)]",
3983
- size: "body",
3984
- style: {
3985
- fontWeight: 500
3986
- }
3987
- })
3949
+ textClassName: "block min-w-0 text-[color:var(--sofya-text-default)]",
3950
+ children: label
3988
3951
  }
3989
- ) : /* @__PURE__ */ jsx26("span", {}),
3990
- showValue ? /* @__PURE__ */ jsx26(
3952
+ ) : /* @__PURE__ */ jsx29("span", {}),
3953
+ showValue ? /* @__PURE__ */ jsx29(
3991
3954
  "div",
3992
3955
  {
3993
3956
  className: cn(
@@ -4005,7 +3968,7 @@ var Slider = React23.forwardRef(function Slider2({
4005
3968
  }
4006
3969
  ) : null
4007
3970
  ] }) : null,
4008
- /* @__PURE__ */ jsxs15(
3971
+ /* @__PURE__ */ jsxs16(
4009
3972
  "div",
4010
3973
  {
4011
3974
  "data-slot": "slider-control",
@@ -4015,7 +3978,7 @@ var Slider = React23.forwardRef(function Slider2({
4015
3978
  ),
4016
3979
  style: controlStyle,
4017
3980
  children: [
4018
- /* @__PURE__ */ jsx26(
3981
+ /* @__PURE__ */ jsx29(
4019
3982
  "input",
4020
3983
  {
4021
3984
  ...props,
@@ -4032,7 +3995,7 @@ var Slider = React23.forwardRef(function Slider2({
4032
3995
  style: inputBoundsStyle
4033
3996
  }
4034
3997
  ),
4035
- /* @__PURE__ */ jsx26(
3998
+ /* @__PURE__ */ jsx29(
4036
3999
  "div",
4037
4000
  {
4038
4001
  "data-slot": "slider-track",
@@ -4043,7 +4006,7 @@ var Slider = React23.forwardRef(function Slider2({
4043
4006
  style: trackBoundsStyle
4044
4007
  }
4045
4008
  ),
4046
- /* @__PURE__ */ jsx26(
4009
+ /* @__PURE__ */ jsx29(
4047
4010
  "div",
4048
4011
  {
4049
4012
  "data-slot": "slider-range",
@@ -4054,7 +4017,7 @@ var Slider = React23.forwardRef(function Slider2({
4054
4017
  style: rangeStyle
4055
4018
  }
4056
4019
  ),
4057
- /* @__PURE__ */ jsx26(
4020
+ /* @__PURE__ */ jsx29(
4058
4021
  "div",
4059
4022
  {
4060
4023
  "data-slot": "slider-thumb",
@@ -4075,10 +4038,10 @@ var Slider = React23.forwardRef(function Slider2({
4075
4038
  Slider.displayName = "Slider";
4076
4039
 
4077
4040
  // src/components/skeleton.tsx
4078
- import * as React24 from "react";
4079
- import { jsx as jsx27 } from "react/jsx-runtime";
4080
- var Skeleton = React24.forwardRef(function Skeleton2({ className, ...props }, ref) {
4081
- return /* @__PURE__ */ jsx27(
4041
+ import * as React28 from "react";
4042
+ import { jsx as jsx30 } from "react/jsx-runtime";
4043
+ var Skeleton = React28.forwardRef(function Skeleton2({ className, ...props }, ref) {
4044
+ return /* @__PURE__ */ jsx30(
4082
4045
  "div",
4083
4046
  {
4084
4047
  ref,
@@ -4093,18 +4056,18 @@ var Skeleton = React24.forwardRef(function Skeleton2({ className, ...props }, re
4093
4056
  Skeleton.displayName = "Skeleton";
4094
4057
 
4095
4058
  // src/components/sonner.tsx
4096
- import * as React25 from "react";
4059
+ import * as React29 from "react";
4097
4060
  import {
4098
4061
  Toaster as SonnerToaster,
4099
4062
  toast
4100
4063
  } from "sonner";
4101
- import { jsx as jsx28 } from "react/jsx-runtime";
4064
+ import { jsx as jsx31 } from "react/jsx-runtime";
4102
4065
  var notificationVariantOptions = ["default", "success", "error", "warning"];
4103
4066
  function ToastStatusIcon({
4104
4067
  iconName,
4105
4068
  className
4106
4069
  }) {
4107
- return /* @__PURE__ */ jsx28(
4070
+ return /* @__PURE__ */ jsx31(
4108
4071
  "span",
4109
4072
  {
4110
4073
  "aria-hidden": "true",
@@ -4112,7 +4075,7 @@ function ToastStatusIcon({
4112
4075
  "inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full border shadow-sofya-sm",
4113
4076
  className
4114
4077
  ),
4115
- children: /* @__PURE__ */ jsx28(Icon, { name: iconName, size: 16 })
4078
+ children: /* @__PURE__ */ jsx31(Icon, { name: iconName, size: 16 })
4116
4079
  }
4117
4080
  );
4118
4081
  }
@@ -4133,35 +4096,35 @@ var defaultToastClassNames = {
4133
4096
  loading: "border-border bg-card text-foreground"
4134
4097
  };
4135
4098
  var defaultToastIcons = {
4136
- success: /* @__PURE__ */ jsx28(
4099
+ success: /* @__PURE__ */ jsx31(
4137
4100
  ToastStatusIcon,
4138
4101
  {
4139
4102
  iconName: "check",
4140
4103
  className: "border-success/15 bg-success/12 text-success"
4141
4104
  }
4142
4105
  ),
4143
- error: /* @__PURE__ */ jsx28(
4106
+ error: /* @__PURE__ */ jsx31(
4144
4107
  ToastStatusIcon,
4145
4108
  {
4146
4109
  iconName: "x",
4147
4110
  className: "border-destructive/15 bg-destructive/12 text-destructive"
4148
4111
  }
4149
4112
  ),
4150
- warning: /* @__PURE__ */ jsx28(
4113
+ warning: /* @__PURE__ */ jsx31(
4151
4114
  ToastStatusIcon,
4152
4115
  {
4153
4116
  iconName: "question",
4154
4117
  className: "border-warning/20 bg-warning/15 text-foreground"
4155
4118
  }
4156
4119
  ),
4157
- info: /* @__PURE__ */ jsx28(
4120
+ info: /* @__PURE__ */ jsx31(
4158
4121
  ToastStatusIcon,
4159
4122
  {
4160
4123
  iconName: "question",
4161
4124
  className: "border-primary/15 bg-primary/10 text-primary"
4162
4125
  }
4163
4126
  ),
4164
- close: /* @__PURE__ */ jsx28(Icon, { name: "x", size: 12 })
4127
+ close: /* @__PURE__ */ jsx31(Icon, { name: "x", size: 12 })
4165
4128
  };
4166
4129
  function mergeToastClassNames(overrides) {
4167
4130
  return {
@@ -4169,7 +4132,7 @@ function mergeToastClassNames(overrides) {
4169
4132
  ...overrides
4170
4133
  };
4171
4134
  }
4172
- var Toaster = React25.forwardRef(
4135
+ var Toaster = React29.forwardRef(
4173
4136
  function Toaster2({
4174
4137
  className,
4175
4138
  closeButton = true,
@@ -4181,7 +4144,7 @@ var Toaster = React25.forwardRef(
4181
4144
  visibleToasts = 5,
4182
4145
  ...props
4183
4146
  }, ref) {
4184
- return /* @__PURE__ */ jsx28(
4147
+ return /* @__PURE__ */ jsx31(
4185
4148
  SonnerToaster,
4186
4149
  {
4187
4150
  ref,
@@ -4211,10 +4174,11 @@ var Toaster = React25.forwardRef(
4211
4174
  Toaster.displayName = "Toaster";
4212
4175
 
4213
4176
  // src/components/spinner.tsx
4214
- import * as React26 from "react";
4215
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
4177
+ import * as React30 from "react";
4178
+ import { IconLoader2 as IconLoader22 } from "@tabler/icons-react";
4179
+ import { jsx as jsx32 } from "react/jsx-runtime";
4216
4180
  var spinnerSizeOptions = ["sm", "default", "lg"];
4217
- var Spinner = React26.forwardRef(function Spinner2({
4181
+ var Spinner = React30.forwardRef(function Spinner2({
4218
4182
  "aria-label": ariaLabelProp,
4219
4183
  "aria-labelledby": ariaLabelledby,
4220
4184
  className,
@@ -4223,15 +4187,12 @@ var Spinner = React26.forwardRef(function Spinner2({
4223
4187
  ...props
4224
4188
  }, ref) {
4225
4189
  const ariaLabel = ariaLabelProp ?? (ariaLabelledby ? void 0 : "Loading");
4226
- return /* @__PURE__ */ jsxs16(
4227
- "svg",
4190
+ return /* @__PURE__ */ jsx32(
4191
+ IconLoader22,
4228
4192
  {
4229
4193
  ref,
4230
4194
  "data-size": size,
4231
4195
  "data-slot": "spinner",
4232
- viewBox: "0 0 24 24",
4233
- fill: "none",
4234
- xmlns: "http://www.w3.org/2000/svg",
4235
4196
  role,
4236
4197
  "aria-label": ariaLabel,
4237
4198
  "aria-labelledby": ariaLabelledby,
@@ -4239,30 +4200,18 @@ var Spinner = React26.forwardRef(function Spinner2({
4239
4200
  "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",
4240
4201
  className
4241
4202
  ),
4242
- ...props,
4243
- children: [
4244
- /* @__PURE__ */ jsx29("circle", { cx: "12", cy: "12", r: "9", className: "opacity-20", stroke: "currentColor", strokeWidth: "3" }),
4245
- /* @__PURE__ */ jsx29(
4246
- "path",
4247
- {
4248
- d: "M21 12A9 9 0 0 0 12 3",
4249
- stroke: "currentColor",
4250
- strokeWidth: "3",
4251
- strokeLinecap: "round"
4252
- }
4253
- )
4254
- ]
4203
+ ...props
4255
4204
  }
4256
4205
  );
4257
4206
  });
4258
4207
  Spinner.displayName = "Spinner";
4259
4208
 
4260
4209
  // src/components/switch.tsx
4261
- import * as React27 from "react";
4210
+ import * as React31 from "react";
4262
4211
  import * as SwitchPrimitives from "@radix-ui/react-switch";
4263
- import { jsx as jsx30 } from "react/jsx-runtime";
4264
- var Switch = React27.forwardRef(({ className, ...props }, ref) => {
4265
- return /* @__PURE__ */ jsx30(
4212
+ import { jsx as jsx33 } from "react/jsx-runtime";
4213
+ var Switch = React31.forwardRef(({ className, ...props }, ref) => {
4214
+ return /* @__PURE__ */ jsx33(
4266
4215
  SwitchPrimitives.Root,
4267
4216
  {
4268
4217
  className: cn(
@@ -4271,7 +4220,7 @@ var Switch = React27.forwardRef(({ className, ...props }, ref) => {
4271
4220
  ),
4272
4221
  ...props,
4273
4222
  ref,
4274
- children: /* @__PURE__ */ jsx30(
4223
+ children: /* @__PURE__ */ jsx33(
4275
4224
  SwitchPrimitives.Thumb,
4276
4225
  {
4277
4226
  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"
@@ -4284,8 +4233,8 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
4284
4233
 
4285
4234
  // src/components/table.tsx
4286
4235
  import { cva as cva8 } from "class-variance-authority";
4287
- import * as React28 from "react";
4288
- import { jsx as jsx31 } from "react/jsx-runtime";
4236
+ import * as React32 from "react";
4237
+ import { jsx as jsx34 } from "react/jsx-runtime";
4289
4238
  var tableCellVariantOptions = ["default", "primary", "muted"];
4290
4239
  var tableStatusToneOptions = [
4291
4240
  "active",
@@ -4335,21 +4284,13 @@ var tableActionButtonVariants = cva8(
4335
4284
  }
4336
4285
  }
4337
4286
  );
4338
- var inheritedTextStyle = {
4339
- fontFamily: "inherit",
4340
- fontSize: "inherit",
4341
- fontWeight: "inherit",
4342
- lineHeight: "inherit",
4343
- letterSpacing: "inherit",
4344
- color: "inherit"
4345
- };
4346
- var Table = React28.forwardRef(function Table2({ className, ...props }, ref) {
4347
- return /* @__PURE__ */ jsx31(
4287
+ var Table = React32.forwardRef(function Table2({ className, ...props }, ref) {
4288
+ return /* @__PURE__ */ jsx34(
4348
4289
  "div",
4349
4290
  {
4350
4291
  "data-slot": "table-container",
4351
4292
  className: "relative w-full overflow-x-auto",
4352
- children: /* @__PURE__ */ jsx31(
4293
+ children: /* @__PURE__ */ jsx34(
4353
4294
  "table",
4354
4295
  {
4355
4296
  "data-slot": "table",
@@ -4364,8 +4305,8 @@ var Table = React28.forwardRef(function Table2({ className, ...props }, ref) {
4364
4305
  }
4365
4306
  );
4366
4307
  });
4367
- var TableHeader = React28.forwardRef(function TableHeader2({ className, ...props }, ref) {
4368
- return /* @__PURE__ */ jsx31(
4308
+ var TableHeader = React32.forwardRef(function TableHeader2({ className, ...props }, ref) {
4309
+ return /* @__PURE__ */ jsx34(
4369
4310
  "thead",
4370
4311
  {
4371
4312
  "data-slot": "table-header",
@@ -4378,8 +4319,8 @@ var TableHeader = React28.forwardRef(function TableHeader2({ className, ...props
4378
4319
  }
4379
4320
  );
4380
4321
  });
4381
- var TableBody = React28.forwardRef(function TableBody2({ className, ...props }, ref) {
4382
- return /* @__PURE__ */ jsx31(
4322
+ var TableBody = React32.forwardRef(function TableBody2({ className, ...props }, ref) {
4323
+ return /* @__PURE__ */ jsx34(
4383
4324
  "tbody",
4384
4325
  {
4385
4326
  "data-slot": "table-body",
@@ -4389,8 +4330,8 @@ var TableBody = React28.forwardRef(function TableBody2({ className, ...props },
4389
4330
  }
4390
4331
  );
4391
4332
  });
4392
- var TableFooter = React28.forwardRef(function TableFooter2({ className, ...props }, ref) {
4393
- return /* @__PURE__ */ jsx31(
4333
+ var TableFooter = React32.forwardRef(function TableFooter2({ className, ...props }, ref) {
4334
+ return /* @__PURE__ */ jsx34(
4394
4335
  "tfoot",
4395
4336
  {
4396
4337
  "data-slot": "table-footer",
@@ -4403,8 +4344,8 @@ var TableFooter = React28.forwardRef(function TableFooter2({ className, ...props
4403
4344
  }
4404
4345
  );
4405
4346
  });
4406
- var TableRow = React28.forwardRef(function TableRow2({ className, ...props }, ref) {
4407
- return /* @__PURE__ */ jsx31(
4347
+ var TableRow = React32.forwardRef(function TableRow2({ className, ...props }, ref) {
4348
+ return /* @__PURE__ */ jsx34(
4408
4349
  "tr",
4409
4350
  {
4410
4351
  "data-slot": "table-row",
@@ -4417,8 +4358,8 @@ var TableRow = React28.forwardRef(function TableRow2({ className, ...props }, re
4417
4358
  }
4418
4359
  );
4419
4360
  });
4420
- var TableHead = React28.forwardRef(function TableHead2({ className, children, ...props }, ref) {
4421
- return /* @__PURE__ */ jsx31(
4361
+ var TableHead = React32.forwardRef(function TableHead2({ className, children, ...props }, ref) {
4362
+ return /* @__PURE__ */ jsx34(
4422
4363
  "th",
4423
4364
  {
4424
4365
  "data-slot": "table-head",
@@ -4432,14 +4373,14 @@ var TableHead = React28.forwardRef(function TableHead2({ className, children, ..
4432
4373
  as: "span",
4433
4374
  className: "inline-flex items-center gap-2 text-inherit",
4434
4375
  size: "tiny",
4435
- style: inheritedTextStyle
4376
+ style: inheritedTypographyStyle
4436
4377
  })
4437
4378
  }
4438
4379
  );
4439
4380
  });
4440
- var TableCell = React28.forwardRef(
4381
+ var TableCell = React32.forwardRef(
4441
4382
  function TableCell2({ className, variant, children, ...props }, ref) {
4442
- return /* @__PURE__ */ jsx31(
4383
+ return /* @__PURE__ */ jsx34(
4443
4384
  "td",
4444
4385
  {
4445
4386
  "data-slot": "table-cell",
@@ -4450,14 +4391,14 @@ var TableCell = React28.forwardRef(
4450
4391
  as: "span",
4451
4392
  className: "block text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
4452
4393
  size: "body",
4453
- style: inheritedTextStyle
4394
+ style: inheritedTypographyStyle
4454
4395
  })
4455
4396
  }
4456
4397
  );
4457
4398
  }
4458
4399
  );
4459
- var TableCaption = React28.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
4460
- return /* @__PURE__ */ jsx31(
4400
+ var TableCaption = React32.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
4401
+ return /* @__PURE__ */ jsx34(
4461
4402
  "caption",
4462
4403
  {
4463
4404
  "data-slot": "table-caption",
@@ -4471,7 +4412,7 @@ var TableCaption = React28.forwardRef(function TableCaption2({ className, childr
4471
4412
  as: "span",
4472
4413
  className: "block text-inherit",
4473
4414
  size: "body",
4474
- style: inheritedTextStyle
4415
+ style: inheritedTypographyStyle
4475
4416
  })
4476
4417
  }
4477
4418
  );
@@ -4482,7 +4423,7 @@ function TableStatusBadge({
4482
4423
  children,
4483
4424
  ...props
4484
4425
  }) {
4485
- return /* @__PURE__ */ jsx31(
4426
+ return /* @__PURE__ */ jsx34(
4486
4427
  Badge,
4487
4428
  {
4488
4429
  variant: "pill",
@@ -4492,13 +4433,13 @@ function TableStatusBadge({
4492
4433
  as: "span",
4493
4434
  className: "inline-flex items-center gap-2 text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
4494
4435
  size: "tiny",
4495
- style: inheritedTextStyle
4436
+ style: inheritedTypographyStyle
4496
4437
  })
4497
4438
  }
4498
4439
  );
4499
4440
  }
4500
- var TableActionButton = React28.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
4501
- return /* @__PURE__ */ jsx31(
4441
+ var TableActionButton = React32.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
4442
+ return /* @__PURE__ */ jsx34(
4502
4443
  Button,
4503
4444
  {
4504
4445
  ref,
@@ -4511,13 +4452,13 @@ var TableActionButton = React28.forwardRef(function TableActionButton2({ classNa
4511
4452
  as: "span",
4512
4453
  className: "inline-flex items-center justify-center text-inherit [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
4513
4454
  size: "body",
4514
- style: inheritedTextStyle
4455
+ style: inheritedTypographyStyle
4515
4456
  })
4516
4457
  }
4517
4458
  );
4518
4459
  });
4519
- var TableActions = React28.forwardRef(function TableActions2({ className, ...props }, ref) {
4520
- return /* @__PURE__ */ jsx31(
4460
+ var TableActions = React32.forwardRef(function TableActions2({ className, ...props }, ref) {
4461
+ return /* @__PURE__ */ jsx34(
4521
4462
  "div",
4522
4463
  {
4523
4464
  ref,
@@ -4538,10 +4479,10 @@ TableActionButton.displayName = "TableActionButton";
4538
4479
  TableActions.displayName = "TableActions";
4539
4480
 
4540
4481
  // src/components/tabs.tsx
4541
- import * as React29 from "react";
4482
+ import * as React33 from "react";
4542
4483
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4543
4484
  import { motion as motion3 } from "motion/react";
4544
- import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
4485
+ import { jsx as jsx35, jsxs as jsxs17 } from "react/jsx-runtime";
4545
4486
  function resolveDefaultValue(items, defaultValue) {
4546
4487
  if (defaultValue) {
4547
4488
  return defaultValue;
@@ -4560,33 +4501,26 @@ function Tabs({
4560
4501
  ...props
4561
4502
  }) {
4562
4503
  const resolvedDefaultValue = resolveDefaultValue(items, defaultValue);
4563
- const isControlled = value !== void 0;
4564
- const [selectedValue, setSelectedValue] = React29.useState(resolvedDefaultValue);
4565
- const indicatorLayoutId = React29.useId();
4566
- const currentValue = isControlled ? value : selectedValue;
4567
- React29.useEffect(() => {
4568
- if (!isControlled) {
4569
- setSelectedValue(resolvedDefaultValue);
4504
+ const [currentValue, setCurrentValue, setUncontrolledCurrentValue] = useControllableState({
4505
+ defaultValue: resolvedDefaultValue,
4506
+ onChange: onValueChange,
4507
+ value
4508
+ });
4509
+ const indicatorLayoutId = React33.useId();
4510
+ React33.useEffect(() => {
4511
+ if (value === void 0) {
4512
+ setUncontrolledCurrentValue(resolvedDefaultValue);
4570
4513
  }
4571
- }, [isControlled, resolvedDefaultValue]);
4572
- const handleValueChange = React29.useCallback(
4573
- (nextValue) => {
4574
- if (!isControlled) {
4575
- setSelectedValue(nextValue);
4576
- }
4577
- onValueChange?.(nextValue);
4578
- },
4579
- [isControlled, onValueChange]
4580
- );
4514
+ }, [resolvedDefaultValue, setUncontrolledCurrentValue, value]);
4581
4515
  return /* @__PURE__ */ jsxs17(
4582
4516
  TabsPrimitive.Root,
4583
4517
  {
4584
4518
  className: cn("w-full", className),
4585
- onValueChange: handleValueChange,
4519
+ onValueChange: setCurrentValue,
4586
4520
  value: currentValue,
4587
4521
  ...props,
4588
4522
  children: [
4589
- /* @__PURE__ */ jsx32(
4523
+ /* @__PURE__ */ jsx35(
4590
4524
  TabsPrimitive.List,
4591
4525
  {
4592
4526
  "aria-label": "Subtelas navegaveis",
@@ -4609,7 +4543,7 @@ function Tabs({
4609
4543
  item.triggerClassName
4610
4544
  ),
4611
4545
  children: [
4612
- isActive ? /* @__PURE__ */ jsx32(
4546
+ isActive ? /* @__PURE__ */ jsx35(
4613
4547
  motion3.span,
4614
4548
  {
4615
4549
  "aria-hidden": "true",
@@ -4620,14 +4554,14 @@ function Tabs({
4620
4554
  }
4621
4555
  ) : null,
4622
4556
  /* @__PURE__ */ jsxs17("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
4623
- item.loading ? /* @__PURE__ */ jsx32(
4557
+ item.loading ? /* @__PURE__ */ jsx35(
4624
4558
  "span",
4625
4559
  {
4626
4560
  "aria-hidden": "true",
4627
4561
  className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent"
4628
4562
  }
4629
4563
  ) : null,
4630
- /* @__PURE__ */ jsx32("span", { children: renderTextContent(item.label, {
4564
+ /* @__PURE__ */ jsx35("span", { children: renderTextContent(item.label, {
4631
4565
  as: "span",
4632
4566
  className: "block text-inherit",
4633
4567
  size: "h5"
@@ -4641,7 +4575,7 @@ function Tabs({
4641
4575
  }
4642
4576
  ),
4643
4577
  items.map(
4644
- (item) => item.content !== void 0 ? /* @__PURE__ */ jsx32(
4578
+ (item) => item.content !== void 0 ? /* @__PURE__ */ jsx35(
4645
4579
  TabsPrimitive.Content,
4646
4580
  {
4647
4581
  value: item.value,
@@ -4664,9 +4598,9 @@ function Tabs({
4664
4598
  Tabs.displayName = "Tabs";
4665
4599
 
4666
4600
  // src/components/textarea.tsx
4667
- import * as React30 from "react";
4668
- import { jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
4669
- var Textarea = React30.forwardRef(
4601
+ import * as React34 from "react";
4602
+ import { jsx as jsx36 } from "react/jsx-runtime";
4603
+ var Textarea = React34.forwardRef(
4670
4604
  ({
4671
4605
  className,
4672
4606
  containerClassName,
@@ -4676,10 +4610,10 @@ var Textarea = React30.forwardRef(
4676
4610
  rows = 5,
4677
4611
  ...props
4678
4612
  }, ref) => {
4679
- const generatedId = React30.useId();
4613
+ const generatedId = React34.useId();
4680
4614
  const resolvedId = id ?? generatedId;
4681
4615
  const ariaLabel = props["aria-label"] ?? (typeof label === "string" ? label : void 0);
4682
- const control = /* @__PURE__ */ jsx33(
4616
+ const control = /* @__PURE__ */ jsx36(
4683
4617
  "textarea",
4684
4618
  {
4685
4619
  className: cn(
@@ -4693,43 +4627,29 @@ var Textarea = React30.forwardRef(
4693
4627
  "aria-label": ariaLabel
4694
4628
  }
4695
4629
  );
4696
- if (!label && !containerClassName) {
4697
- return control;
4698
- }
4699
- return /* @__PURE__ */ jsxs18("div", { className: cn("grid w-full gap-2", containerClassName), children: [
4700
- label ? /* @__PURE__ */ jsx33(
4701
- "label",
4702
- {
4703
- className: cn(
4704
- "text-[color:var(--sofya-text-default)]",
4705
- labelClassName
4706
- ),
4707
- htmlFor: resolvedId,
4708
- children: renderTextContent(label, {
4709
- as: "span",
4710
- className: "block text-[color:var(--sofya-text-default)]",
4711
- size: "body",
4712
- style: {
4713
- fontWeight: 500
4714
- }
4715
- })
4716
- }
4717
- ) : null,
4718
- control
4719
- ] });
4630
+ return /* @__PURE__ */ jsx36(
4631
+ FieldShell,
4632
+ {
4633
+ control,
4634
+ containerClassName,
4635
+ label,
4636
+ labelClassName,
4637
+ labelHtmlFor: resolvedId
4638
+ }
4639
+ );
4720
4640
  }
4721
4641
  );
4722
4642
  Textarea.displayName = "Textarea";
4723
4643
 
4724
4644
  // src/components/tooltip.tsx
4725
- import * as React31 from "react";
4645
+ import * as React35 from "react";
4726
4646
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4727
- import { jsx as jsx34 } from "react/jsx-runtime";
4647
+ import { jsx as jsx37 } from "react/jsx-runtime";
4728
4648
  var TooltipProvider = TooltipPrimitive.Provider;
4729
4649
  var Tooltip = TooltipPrimitive.Root;
4730
4650
  var TooltipTrigger = TooltipPrimitive.Trigger;
4731
- var TooltipContent = React31.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
4732
- return /* @__PURE__ */ jsx34(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx34(
4651
+ var TooltipContent = React35.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
4652
+ return /* @__PURE__ */ jsx37(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx37(
4733
4653
  TooltipPrimitive.Content,
4734
4654
  {
4735
4655
  ref,
@@ -4753,13 +4673,13 @@ var TooltipContent = React31.forwardRef(function TooltipContent2({ className, si
4753
4673
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
4754
4674
 
4755
4675
  // src/theme/provider.tsx
4756
- import * as React32 from "react";
4676
+ import * as React36 from "react";
4757
4677
  import {
4758
4678
  createWhitelabelTheme,
4759
4679
  defaultTheme,
4760
4680
  themeToCssVariables
4761
4681
  } from "@sofya-ds/tokens";
4762
- import { jsx as jsx35 } from "react/jsx-runtime";
4682
+ import { jsx as jsx38 } from "react/jsx-runtime";
4763
4683
  var SOFYA_FONT_LINKS = [
4764
4684
  {
4765
4685
  id: "preconnect-googleapis",
@@ -4779,7 +4699,7 @@ var SOFYA_FONT_LINKS = [
4779
4699
  }
4780
4700
  ];
4781
4701
  function useSofyaFontLinks() {
4782
- React32.useEffect(() => {
4702
+ React36.useEffect(() => {
4783
4703
  if (typeof document === "undefined") {
4784
4704
  return;
4785
4705
  }
@@ -4812,7 +4732,7 @@ function SofyaProvider({
4812
4732
  useSofyaFontLinks();
4813
4733
  const theme = createWhitelabelTheme(overrides ?? {}, preset);
4814
4734
  const cssVariables = themeToCssVariables(theme);
4815
- return /* @__PURE__ */ jsx35(
4735
+ return /* @__PURE__ */ jsx38(
4816
4736
  "div",
4817
4737
  {
4818
4738
  "data-sofya-theme": theme.name,
@@ -4973,6 +4893,7 @@ export {
4973
4893
  hexToHslChannels,
4974
4894
  iconColorOptions,
4975
4895
  iconNames,
4896
+ iconSizeMap,
4976
4897
  iconSizeOptions,
4977
4898
  inputVariantOptions,
4978
4899
  isTextContent,