@handijit/ui 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +485 -571
  2. package/build/base.css +1 -1
  3. package/build/charts.cjs +1 -1
  4. package/build/charts.cjs.map +1 -1
  5. package/build/charts.css +1 -1
  6. package/build/charts.js +350 -349
  7. package/build/charts.js.map +1 -1
  8. package/build/chat.cjs +3 -3
  9. package/build/chat.cjs.map +1 -1
  10. package/build/chat.css +1 -1
  11. package/build/chat.js +344 -343
  12. package/build/chat.js.map +1 -1
  13. package/build/components/Accordion/style.css +1 -1
  14. package/build/components/Alert/style.css +1 -1
  15. package/build/components/Avatar/style.css +1 -1
  16. package/build/components/Badge/index.cjs +1 -1
  17. package/build/components/Badge/index.cjs.map +1 -1
  18. package/build/components/Badge/index.d.ts +8 -13
  19. package/build/components/Badge/index.js +1 -1
  20. package/build/components/Badge/index.js.map +1 -1
  21. package/build/components/Badge/style.css +1 -1
  22. package/build/components/BottomSheet/style.css +1 -1
  23. package/build/components/Breadcrumb/style.css +1 -1
  24. package/build/components/Button/index.cjs +1 -1
  25. package/build/components/Button/index.cjs.map +1 -1
  26. package/build/components/Button/index.js +2 -2
  27. package/build/components/Button/index.js.map +1 -1
  28. package/build/components/Button/style.css +1 -1
  29. package/build/components/Card/style.css +1 -1
  30. package/build/components/Carousel/style.css +1 -1
  31. package/build/components/Checkbox/style.css +1 -1
  32. package/build/components/Chip/style.css +1 -1
  33. package/build/components/ChipGroup/style.css +1 -1
  34. package/build/components/CodeBadge/style.css +1 -1
  35. package/build/components/Combobox/index.cjs +1 -1
  36. package/build/components/Combobox/index.cjs.map +1 -1
  37. package/build/components/Combobox/index.js +51 -51
  38. package/build/components/Combobox/index.js.map +1 -1
  39. package/build/components/Combobox/style.css +1 -1
  40. package/build/components/CommandPalette/style.css +1 -1
  41. package/build/components/CopyField/style.css +1 -1
  42. package/build/components/DataTable/style.css +1 -1
  43. package/build/components/DateField/index.d.ts +1 -1
  44. package/build/components/DateField/style.css +1 -1
  45. package/build/components/Directory/style.css +1 -1
  46. package/build/components/Disclosure/style.css +1 -1
  47. package/build/components/Divider/style.css +1 -1
  48. package/build/components/Drawer/style.css +1 -1
  49. package/build/components/EmptyState/style.css +1 -1
  50. package/build/components/Field/style.css +1 -1
  51. package/build/components/FileUpload/style.css +1 -1
  52. package/build/components/FilterBar/style.css +1 -1
  53. package/build/components/IconButton/index.cjs +1 -1
  54. package/build/components/IconButton/index.cjs.map +1 -1
  55. package/build/components/IconButton/index.d.ts +2 -2
  56. package/build/components/IconButton/index.js +1 -1
  57. package/build/components/IconButton/index.js.map +1 -1
  58. package/build/components/IconButton/style.css +1 -1
  59. package/build/components/Input/index.d.ts +1 -1
  60. package/build/components/Input/style.css +1 -1
  61. package/build/components/Kbd/style.css +1 -1
  62. package/build/components/Menu/style.css +1 -1
  63. package/build/components/Modal/style.css +1 -1
  64. package/build/components/PageHeader/style.css +1 -1
  65. package/build/components/Pagination/style.css +1 -1
  66. package/build/components/Panel/style.css +1 -1
  67. package/build/components/PasswordInput/style.css +1 -1
  68. package/build/components/Popover/style.css +1 -1
  69. package/build/components/Price/style.css +1 -1
  70. package/build/components/Progress/style.css +1 -1
  71. package/build/components/PromptDialog/style.css +1 -1
  72. package/build/components/QuantityStepper/style.css +1 -1
  73. package/build/components/Radio/style.css +1 -1
  74. package/build/components/RadioCard/style.css +1 -1
  75. package/build/components/RangeSlider/style.css +1 -1
  76. package/build/components/Rating/style.css +1 -1
  77. package/build/components/RatingInput/style.css +1 -1
  78. package/build/components/ScrollArea/style.css +1 -1
  79. package/build/components/SectionHeader/style.css +1 -1
  80. package/build/components/SegmentedControl/style.css +1 -1
  81. package/build/components/Select/index.cjs +1 -1
  82. package/build/components/Select/index.cjs.map +1 -1
  83. package/build/components/Select/index.js +28 -28
  84. package/build/components/Select/index.js.map +1 -1
  85. package/build/components/Select/style.css +1 -1
  86. package/build/components/Skeleton/style.css +1 -1
  87. package/build/components/Spinner/style.css +1 -1
  88. package/build/components/Stat/style.css +1 -1
  89. package/build/components/StatusDot/style.css +1 -1
  90. package/build/components/Steps/style.css +1 -1
  91. package/build/components/SummaryCard/style.css +1 -1
  92. package/build/components/Switch/index.d.ts +1 -1
  93. package/build/components/Switch/style.css +1 -1
  94. package/build/components/Table/style.css +1 -1
  95. package/build/components/TableCheckbox/style.css +1 -1
  96. package/build/components/Tabs/style.css +1 -1
  97. package/build/components/TagInput/style.css +1 -1
  98. package/build/components/TextLink/style.css +1 -1
  99. package/build/components/Textarea/style.css +1 -1
  100. package/build/components/Tile/style.css +1 -1
  101. package/build/components/Timeline/style.css +1 -1
  102. package/build/components/Toast/style.css +1 -1
  103. package/build/components/Tooltip/style.css +1 -1
  104. package/build/constants/breakpoint.constants.cjs +1 -1
  105. package/build/constants/breakpoint.constants.cjs.map +1 -1
  106. package/build/constants/breakpoint.constants.d.ts +13 -8
  107. package/build/constants/breakpoint.constants.js +7 -5
  108. package/build/constants/breakpoint.constants.js.map +1 -1
  109. package/build/enums/ui-size.enum.cjs.map +1 -1
  110. package/build/enums/ui-size.enum.d.ts +5 -2
  111. package/build/enums/ui-size.enum.js.map +1 -1
  112. package/build/enums/ui-variant.enum.cjs +1 -1
  113. package/build/enums/ui-variant.enum.cjs.map +1 -1
  114. package/build/enums/ui-variant.enum.d.ts +13 -13
  115. package/build/enums/ui-variant.enum.js +1 -1
  116. package/build/enums/ui-variant.enum.js.map +1 -1
  117. package/build/helpers/theme.helper.cjs +1 -23
  118. package/build/helpers/theme.helper.cjs.map +1 -1
  119. package/build/helpers/theme.helper.d.ts +13 -44
  120. package/build/helpers/theme.helper.js +31 -69
  121. package/build/helpers/theme.helper.js.map +1 -1
  122. package/build/hooks/useUiTheme.cjs +1 -1
  123. package/build/hooks/useUiTheme.cjs.map +1 -1
  124. package/build/hooks/useUiTheme.d.ts +4 -1
  125. package/build/hooks/useUiTheme.js +34 -28
  126. package/build/hooks/useUiTheme.js.map +1 -1
  127. package/build/hooks/useUiTokens.cjs +1 -1
  128. package/build/hooks/useUiTokens.cjs.map +1 -1
  129. package/build/hooks/useUiTokens.d.ts +8 -8
  130. package/build/hooks/useUiTokens.js +24 -27
  131. package/build/hooks/useUiTokens.js.map +1 -1
  132. package/build/index.cjs +1 -1
  133. package/build/index.d.ts +3 -5
  134. package/build/index.js +194 -202
  135. package/build/index.js.map +1 -1
  136. package/build/scss/_index.scss +4 -3
  137. package/build/scss/_mixins.scss +264 -146
  138. package/build/scss/_variables.scss +216 -24
  139. package/build/styles.css +67 -67
  140. package/build/theme/UiProvider.cjs +1 -1
  141. package/build/theme/UiProvider.cjs.map +1 -1
  142. package/build/theme/UiProvider.d.ts +10 -9
  143. package/build/theme/UiProvider.js +7 -25
  144. package/build/theme/UiProvider.js.map +1 -1
  145. package/build/theme/UiThemeScript.cjs +1 -1
  146. package/build/theme/UiThemeScript.cjs.map +1 -1
  147. package/build/theme/UiThemeScript.d.ts +13 -10
  148. package/build/theme/UiThemeScript.js +2 -2
  149. package/build/theme/UiThemeScript.js.map +1 -1
  150. package/build/theme/context.js +2 -2
  151. package/build/types/charts/core/palette.d.ts +6 -8
  152. package/build/types/chat/Legend/index.d.ts +3 -2
  153. package/build/types/theme.type.d.ts +6 -48
  154. package/build/types/types/theme.type.d.ts +6 -48
  155. package/package.json +10 -10
  156. package/build/scss/_colors.generated.scss +0 -119
  157. package/build/scss/_metrics.generated.scss +0 -49
  158. package/build/theme/initUi.cjs +0 -2
  159. package/build/theme/initUi.cjs.map +0 -1
  160. package/build/theme/initUi.d.ts +0 -7
  161. package/build/theme/initUi.js +0 -10
  162. package/build/theme/initUi.js.map +0 -1
  163. package/build/theme/palette.cjs +0 -2
  164. package/build/theme/palette.cjs.map +0 -1
  165. package/build/theme/palette.d.ts +0 -219
  166. package/build/theme/palette.js +0 -148
  167. package/build/theme/palette.js.map +0 -1
  168. package/build/theme/tokens.cjs +0 -2
  169. package/build/theme/tokens.cjs.map +0 -1
  170. package/build/theme/tokens.d.ts +0 -225
  171. package/build/theme/tokens.js +0 -384
  172. package/build/theme/tokens.js.map +0 -1
  173. package/build/types/theme/palette.d.ts +0 -219
  174. package/build/types/theme/tokens.d.ts +0 -225
@@ -1 +1 @@
1
- @layer ui{.ui-radioCard-sndiC{display:flex;align-items:center;gap:var(--ui-space-3);min-height:44px;padding:var(--ui-space-3) var(--ui-space-4);background-color:var(--ui-surface);border:1px solid var(--ui-radio-card-line, var(--ui-border));border-radius:var(--ui-radio-card-radius, var(--ui-radius-md));cursor:pointer;transition:border-color var(--ui-duration-fast) var(--ui-ease-out),background-color var(--ui-duration-fast) var(--ui-ease-out)}.ui-radioCard-sndiC:hover{border-color:var(--ui-border-strong)}.ui-radioCard-sndiC:has(.ui-radioCard__input-6vuoD:focus-visible){outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px)}.ui-radioCard--selected-Mi7ee{border-color:var(--ui-selected-line);background-color:var(--ui-selected-tint);box-shadow:inset 0 0 0 1px var(--ui-selected-line)}.ui-radioCard--selected-Mi7ee:hover,.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT{border-color:var(--ui-selected)}.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT:after{background-color:var(--ui-selected)}.ui-radioCard--disabled-YlYee{background-color:var(--ui-surface-2);border-color:var(--ui-border);cursor:not-allowed;color:var(--ui-text-3)}@media (forced-colors: active){.ui-radioCard--disabled-YlYee{color:GrayText;border-color:GrayText}}.ui-radioCard--disabled-YlYee{box-shadow:none}.ui-radioCard--disabled-YlYee:hover{border-color:var(--ui-border)}.ui-radioCard--disabled-YlYee .ui-radioCard__indicator--x9LT{background-color:var(--ui-surface-2);border-color:var(--ui-border)}.ui-radioCard--disabled-YlYee.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT{border-color:var(--ui-text-3)}.ui-radioCard--disabled-YlYee.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT:after{background-color:var(--ui-text-3)}.ui-radioCard__input-6vuoD{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-radioCard__indicator--x9LT{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;background-color:var(--ui-surface);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius-pill);transition:border-color var(--ui-duration-fast) var(--ui-ease-out)}.ui-radioCard__indicator--x9LT:after{content:"";width:8px;height:8px;border-radius:var(--ui-radius-pill);background-color:transparent;transition:background-color var(--ui-duration-fast) var(--ui-ease-out)}.ui-radioCard__body-CFqoi{display:flex;align-items:center;justify-content:space-between;gap:var(--ui-space-3);flex:1;min-width:0}@media (prefers-reduced-motion: reduce){.ui-radioCard-sndiC{transition:none}.ui-radioCard-sndiC .ui-radioCard__indicator--x9LT,.ui-radioCard-sndiC .ui-radioCard__indicator--x9LT:after{transition:none}}}
1
+ @layer ui{.ui-radioCard-sndiC{display:flex;align-items:center;gap:var(--hd-space-3);min-height:44px;padding:var(--hd-space-3) var(--hd-space-4);background-color:var(--hd-bg-surface);border:1px solid var(--ui-radio-card-line, var(--hd-border));border-radius:var(--ui-radio-card-radius, var(--hd-radius-sm));cursor:pointer;transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-radioCard-sndiC:hover{border-color:var(--hd-border-strong)}.ui-radioCard-sndiC:has(.ui-radioCard__input-6vuoD:focus-visible){outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}.ui-radioCard--selected-Mi7ee{border-color:var(--hd-primary-line);background-color:var(--hd-primary-soft);box-shadow:inset 0 0 0 1px var(--hd-primary-line)}.ui-radioCard--selected-Mi7ee:hover,.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT{border-color:var(--hd-primary)}.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT:after{background-color:var(--hd-primary)}.ui-radioCard--disabled-YlYee{background-color:var(--hd-bg-raised);border-color:var(--hd-border);cursor:not-allowed;color:var(--hd-text-3)}@media (forced-colors: active){.ui-radioCard--disabled-YlYee{color:GrayText;border-color:GrayText}}.ui-radioCard--disabled-YlYee{box-shadow:none}.ui-radioCard--disabled-YlYee:hover{border-color:var(--hd-border)}.ui-radioCard--disabled-YlYee .ui-radioCard__indicator--x9LT{background-color:var(--hd-bg-raised);border-color:var(--hd-border)}.ui-radioCard--disabled-YlYee.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT{border-color:var(--hd-text-3)}.ui-radioCard--disabled-YlYee.ui-radioCard--selected-Mi7ee .ui-radioCard__indicator--x9LT:after{background-color:var(--hd-text-3)}.ui-radioCard__input-6vuoD{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-radioCard__indicator--x9LT{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;background-color:var(--hd-bg-surface);border:1px solid var(--hd-border-strong);border-radius:var(--hd-radius-pill);transition:border-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-radioCard__indicator--x9LT:after{content:"";width:8px;height:8px;border-radius:var(--hd-radius-pill);background-color:transparent;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-radioCard__body-CFqoi{display:flex;align-items:center;justify-content:space-between;gap:var(--hd-space-3);flex:1;min-width:0}@media (prefers-reduced-motion: reduce){.ui-radioCard-sndiC{transition:none}.ui-radioCard-sndiC .ui-radioCard__indicator--x9LT,.ui-radioCard-sndiC .ui-radioCard__indicator--x9LT:after{transition:none}}}
@@ -1 +1 @@
1
- @layer ui{.ui-range-RpDPh{display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-range--disabled-13hlc{pointer-events:none}.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:var(--ui-text-3)}@media (forced-colors: active){.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:GrayText}}.ui-range--disabled-13hlc .ui-range__fill-VXMCE{background-color:var(--ui-action-soft)}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-webkit-slider-thumb{background-color:var(--ui-surface-2);border-color:var(--ui-action-soft);box-shadow:none}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-moz-range-thumb{background-color:var(--ui-surface-2);border-color:var(--ui-action-soft);box-shadow:none}.ui-range__readout-itDMd{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:center;font-family:var(--ui-font-heading);font-size:var(--ui-font-size-sm);font-weight:600;color:var(--ui-text);font-variant-numeric:tabular-nums}.ui-range__separator-u-ZJX{color:var(--ui-text-3);font-weight:400}.ui-range__track-bCh5Y{position:relative;height:32px;display:flex;align-items:center}.ui-range__track-bCh5Y:before{content:"";position:absolute;inset-inline:0;height:4px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface-3)}.ui-range__fill-VXMCE{position:absolute;height:4px;border-radius:var(--ui-radius-pill);background-color:var(--ui-selected)}.ui-range__input-TAN2I{position:absolute;inset-inline-start:0;width:100%;height:32px;margin:0;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:none}.ui-range__input-TAN2I::-webkit-slider-runnable-track{height:4px;background:transparent}.ui-range__input-TAN2I::-moz-range-track{height:4px;background:transparent}.ui-range__input-TAN2I::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:auto;width:20px;height:20px;margin-top:-8px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface);border:2px solid var(--ui-selected);box-shadow:var(--ui-shadow-sm);cursor:grab;transition:transform var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-range__input-TAN2I::-moz-range-thumb{pointer-events:auto;width:20px;height:20px;border-radius:var(--ui-radius-pill);background-color:var(--ui-surface);border:2px solid var(--ui-selected);box-shadow:var(--ui-shadow-sm);cursor:grab;transition:transform var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-range__input-TAN2I:hover::-webkit-slider-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:hover::-moz-range-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:active::-webkit-slider-thumb{cursor:grabbing;box-shadow:var(--ui-ring)}.ui-range__input-TAN2I:active::-moz-range-thumb{cursor:grabbing;box-shadow:var(--ui-ring)}.ui-range__input-TAN2I:focus{outline:none}.ui-range__input-TAN2I:focus-visible::-webkit-slider-thumb{box-shadow:var(--ui-ring);border-color:var(--ui-selected-active)}.ui-range__input-TAN2I:focus-visible::-moz-range-thumb{box-shadow:var(--ui-ring);border-color:var(--ui-selected-active)}@media (prefers-reduced-motion: reduce){.ui-range__input-TAN2I::-webkit-slider-thumb,.ui-range__input-TAN2I::-moz-range-thumb{transition:none}}.ui-range__bounds-GIhFd{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:space-between;font-size:var(--ui-font-size-2xs);color:var(--ui-text-3);font-variant-numeric:tabular-nums}}
1
+ @layer ui{.ui-range-RpDPh{display:flex;flex-direction:column;gap:var(--hd-space-2)}.ui-range--disabled-13hlc{pointer-events:none}.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:var(--hd-text-3)}@media (forced-colors: active){.ui-range--disabled-13hlc .ui-range__readout-itDMd{color:GrayText}}.ui-range--disabled-13hlc .ui-range__fill-VXMCE{background-color:var(--hd-bg-disabled)}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-webkit-slider-thumb{background-color:var(--hd-bg-raised);border-color:var(--hd-bg-disabled);box-shadow:none}.ui-range--disabled-13hlc .ui-range__input-TAN2I::-moz-range-thumb{background-color:var(--hd-bg-raised);border-color:var(--hd-bg-disabled);box-shadow:none}.ui-range__readout-itDMd{display:flex;align-items:center;gap:var(--hd-space-2);justify-content:center;font-family:var(--hd-font-display);font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-semibold);color:var(--hd-text);font-variant-numeric:tabular-nums}.ui-range__separator-u-ZJX{color:var(--hd-text-3);font-weight:var(--hd-font-weight-regular)}.ui-range__track-bCh5Y{position:relative;height:32px;display:flex;align-items:center}.ui-range__track-bCh5Y:before{content:"";position:absolute;inset-inline:0;height:4px;border-radius:var(--hd-radius-pill);background-color:var(--hd-border-strong)}.ui-range__fill-VXMCE{position:absolute;height:4px;border-radius:var(--hd-radius-pill);background-color:var(--hd-primary)}.ui-range__input-TAN2I{position:absolute;inset-inline-start:0;width:100%;height:32px;margin:0;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:none}.ui-range__input-TAN2I::-webkit-slider-runnable-track{height:4px;background:transparent}.ui-range__input-TAN2I::-moz-range-track{height:4px;background:transparent}.ui-range__input-TAN2I::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;pointer-events:auto;width:20px;height:20px;margin-top:-8px;border-radius:var(--hd-radius-pill);background-color:var(--hd-bg-surface);border:2px solid var(--hd-primary);box-shadow:var(--hd-shadow-1);cursor:grab;transition:transform var(--hd-duration-fast) var(--hd-ease-standard),box-shadow var(--hd-duration-fast) var(--hd-ease-standard)}.ui-range__input-TAN2I::-moz-range-thumb{pointer-events:auto;width:20px;height:20px;border-radius:var(--hd-radius-pill);background-color:var(--hd-bg-surface);border:2px solid var(--hd-primary);box-shadow:var(--hd-shadow-1);cursor:grab;transition:transform var(--hd-duration-fast) var(--hd-ease-standard),box-shadow var(--hd-duration-fast) var(--hd-ease-standard)}.ui-range__input-TAN2I:hover::-webkit-slider-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:hover::-moz-range-thumb{transform:scale(1.1)}.ui-range__input-TAN2I:active::-webkit-slider-thumb{cursor:grabbing;box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent)}.ui-range__input-TAN2I:active::-moz-range-thumb{cursor:grabbing;box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent)}.ui-range__input-TAN2I:focus{outline:none}.ui-range__input-TAN2I:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent);border-color:var(--hd-primary-active)}.ui-range__input-TAN2I:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent);border-color:var(--hd-primary-active)}@media (prefers-reduced-motion: reduce){.ui-range__input-TAN2I::-webkit-slider-thumb,.ui-range__input-TAN2I::-moz-range-thumb{transition:none}}.ui-range__bounds-GIhFd{display:flex;align-items:center;gap:var(--hd-space-2);justify-content:space-between;font-size:var(--hd-type-caption-size);color:var(--hd-text-3);font-variant-numeric:tabular-nums}}
@@ -1 +1 @@
1
- @layer ui{.ui-rating-94dke{display:inline-flex;align-items:center;gap:var(--ui-space-2)}.ui-rating__stars-QkpVU{display:inline-flex;gap:1px;color:var(--ui-star)}.ui-rating__empty-Wf6-K{color:var(--ui-border-strong)}.ui-rating__count-pIoEs{font-size:var(--ui-font-size-xs);color:var(--ui-text-2);font-variant-numeric:tabular-nums}.ui-rating__srOnly-E9h0d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating--sm-AtY7U .ui-rating__stars-QkpVU{font-size:var(--ui-icon-sm)}.ui-rating--md-Q0nxN .ui-rating__stars-QkpVU{font-size:var(--ui-icon-md)}}
1
+ @layer ui{.ui-rating-94dke{display:inline-flex;align-items:center;gap:var(--hd-space-2)}.ui-rating__stars-QkpVU{display:inline-flex;gap:1px;color:var(--hd-warning-solid)}.ui-rating__empty-Wf6-K{color:var(--hd-border-strong)}.ui-rating__count-pIoEs{font-size:var(--hd-type-caption-size);color:var(--hd-text-2);font-variant-numeric:tabular-nums}.ui-rating__srOnly-E9h0d{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating--sm-AtY7U .ui-rating__stars-QkpVU{font-size:16px}.ui-rating--md-Q0nxN .ui-rating__stars-QkpVU{font-size:18px}}
@@ -1 +1 @@
1
- @layer ui{.ui-rating-neNnF{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:var(--ui-text-3)}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{cursor:not-allowed}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ:hover{transform:none}.ui-rating__legend-uYvFS{padding:0;font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text-2)}.ui-rating__stars-vJFLk{display:flex;gap:var(--ui-space-1)}.ui-rating__star-BANFJ{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-size:var(--ui-icon-xl);color:var(--ui-border);cursor:pointer;transition:color var(--ui-duration-fast) var(--ui-ease-out),transform var(--ui-duration-fast) var(--ui-ease-out)}.ui-rating__star-BANFJ:hover{transform:scale(1.1)}.ui-rating__star--filled-L3AkT{color:var(--ui-star)}.ui-rating__star-BANFJ:focus-within{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px);border-radius:var(--ui-radius-sm)}@media (prefers-reduced-motion: reduce){.ui-rating__star-BANFJ{transition:none}.ui-rating__star-BANFJ:hover{transform:none}}.ui-rating__input-s2iiO,.ui-rating__srOnly-iSCoz{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating__caption-13KFX{font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text);min-height:1.4em}}
1
+ @layer ui{.ui-rating-neNnF{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--hd-space-2)}.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:var(--hd-text-3)}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__legend-uYvFS,.ui-rating--disabled-ZKjHa .ui-rating__caption-13KFX,.ui-rating--disabled-ZKjHa .ui-rating__star--filled-L3AkT{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{cursor:not-allowed}@media (forced-colors: active){.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ{color:GrayText}}.ui-rating--disabled-ZKjHa .ui-rating__star-BANFJ:hover{transform:none}.ui-rating__legend-uYvFS{padding:0;font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2)}.ui-rating__stars-vJFLk{display:flex;gap:var(--hd-space-1)}.ui-rating__star-BANFJ{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-size:24px;color:var(--hd-border);cursor:pointer;transition:color var(--hd-duration-fast) var(--hd-ease-standard),transform var(--hd-duration-fast) var(--hd-ease-standard)}.ui-rating__star-BANFJ:hover{transform:scale(1.1)}.ui-rating__star--filled-L3AkT{color:var(--hd-warning-solid)}.ui-rating__star-BANFJ:focus-within{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px);border-radius:var(--hd-radius-xs)}@media (prefers-reduced-motion: reduce){.ui-rating__star-BANFJ{transition:none}.ui-rating__star-BANFJ:hover{transform:none}}.ui-rating__input-s2iiO,.ui-rating__srOnly-iSCoz{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-rating__caption-13KFX{font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-medium);color:var(--hd-text);min-height:1.4em}}
@@ -1 +1 @@
1
- @layer ui{.ui-scrollArea-Ly-yT{scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar{width:8px;height:8px}.ui-scrollArea-Ly-yT::-webkit-scrollbar-track{background:transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-scrollArea-Ly-yT{position:relative;overscroll-behavior:contain}.ui-scrollArea--vertical-2ujC7{overflow-y:auto;overflow-x:hidden}.ui-scrollArea--horizontal-e9pu-{overflow-x:auto;overflow-y:hidden}.ui-scrollArea--both-lv-8W{overflow:auto}.ui-scrollArea-Ly-yT:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -2px)}.ui-scrollArea--fade-01Bbm{--ui-scroll-fade-start: 0px;--ui-scroll-fade-end: 0px}.ui-scrollArea--fade-01Bbm[data-fade-start]{--ui-scroll-fade-start: var(--ui-space-4)}.ui-scrollArea--fade-01Bbm[data-fade-end]{--ui-scroll-fade-end: var(--ui-space-4)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--vertical-2ujC7{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--horizontal-e9pu-{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}}
1
+ @layer ui{.ui-scrollArea-Ly-yT{scrollbar-width:thin;scrollbar-color:var(--hd-border-strong) transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar{width:8px;height:8px}.ui-scrollArea-Ly-yT::-webkit-scrollbar-track{background:transparent}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb{background-color:var(--hd-border-strong);border-radius:var(--hd-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-scrollArea-Ly-yT::-webkit-scrollbar-thumb:hover{background-color:var(--hd-text-3)}.ui-scrollArea-Ly-yT{position:relative;overscroll-behavior:contain}.ui-scrollArea--vertical-2ujC7{overflow-y:auto;overflow-x:hidden}.ui-scrollArea--horizontal-e9pu-{overflow-x:auto;overflow-y:hidden}.ui-scrollArea--both-lv-8W{overflow:auto}.ui-scrollArea-Ly-yT:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, -2px)}.ui-scrollArea--fade-01Bbm{--ui-scroll-fade-start: 0px;--ui-scroll-fade-end: 0px}.ui-scrollArea--fade-01Bbm[data-fade-start]{--ui-scroll-fade-start: var(--hd-space-4)}.ui-scrollArea--fade-01Bbm[data-fade-end]{--ui-scroll-fade-end: var(--hd-space-4)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--vertical-2ujC7{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}.ui-scrollArea--fade-01Bbm.ui-scrollArea--horizontal-e9pu-{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 var(--ui-scroll-fade-start),#000 calc(100% - var(--ui-scroll-fade-end)),transparent 100%)}}
@@ -1 +1 @@
1
- @layer ui{.ui-header-a08Jh{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--ui-space-4);flex-wrap:wrap}.ui-header__text-ArJkA{display:flex;flex-direction:column;gap:var(--ui-space-1);min-width:0}.ui-header__overline-X5Epo{font-family:var(--ui-font-body);font-size:var(--ui-font-size-2xs);font-weight:600;letter-spacing:.045em;text-transform:uppercase;color:var(--ui-text-2)}.ui-header__title-nQQQJ{font-size:var(--ui-font-size-xl);font-weight:600;line-height:var(--ui-leading-tight);color:var(--ui-text);font-family:var(--ui-font-heading);letter-spacing:-.011em;margin:0}.ui-header__description-08oCr{font-size:var(--ui-font-size-sm);color:var(--ui-text-2);line-height:var(--ui-leading-normal);max-width:68ch;margin:0}.ui-header__action-xsxQF{flex-shrink:0}.ui-header--sm-mIJWZ .ui-header__title-nQQQJ{font-size:var(--ui-font-size-lg)}.ui-header--lg-QBLIz .ui-header__title-nQQQJ{font-size:var(--ui-font-size-2xl)}}
1
+ @layer ui{.ui-header-a08Jh{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--hd-space-4);flex-wrap:wrap}.ui-header__text-ArJkA{display:flex;flex-direction:column;gap:var(--hd-space-1);min-width:0}.ui-header__overline-X5Epo{font-family:var(--hd-font-body);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);letter-spacing:.045em;text-transform:uppercase;color:var(--hd-text-2)}.ui-header__title-nQQQJ{font-family:var(--hd-font-display);font-size:var(--hd-type-h3-size);font-weight:var(--hd-type-h3-weight);font-stretch:var(--hd-type-h3-stretch);line-height:var(--hd-type-h3-line-height);letter-spacing:var(--hd-type-h3-letter-spacing);color:var(--hd-text);margin:0}.ui-header__description-08oCr{font-size:var(--hd-type-small-size);color:var(--hd-text-2);line-height:var(--hd-type-body-line-height);max-width:68ch;margin:0}.ui-header__action-xsxQF{flex-shrink:0}.ui-header--sm-mIJWZ .ui-header__title-nQQQJ{font-size:var(--hd-type-h4-size)}.ui-header--lg-QBLIz .ui-header__title-nQQQJ{font-size:var(--hd-type-h2-size)}}
@@ -1 +1 @@
1
- @layer ui{.ui-segmented-qo2Bw{display:inline-flex;padding:3px;border-radius:var(--ui-radius-md);background-color:var(--ui-surface-2);border:1px solid var(--ui-border)}.ui-segmented--sm-7tUry{font-size:var(--ui-font-size-xs)}.ui-segmented--md-PiSqt{font-size:var(--ui-font-size-sm)}.ui-segmented__item-mqRNZ{display:flex;align-items:center;gap:var(--ui-space-2);position:relative}.ui-segmented__item-mqRNZ:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-segmented__item-mqRNZ{justify-content:center;min-width:0;padding:var(--ui-space-2) var(--ui-space-3);border:none;border-radius:calc(var(--ui-radius-md) - 3px);background:none;cursor:pointer;font-family:var(--ui-font-body);font-size:inherit;font-weight:500;color:var(--ui-text-2);white-space:nowrap;transition:background-color var(--ui-duration-fast) var(--ui-ease-out),color var(--ui-duration-fast) var(--ui-ease-out)}.ui-segmented--sm-7tUry .ui-segmented__item-mqRNZ{padding:var(--ui-space-1) var(--ui-space-2)}.ui-segmented__item-mqRNZ:hover:not(:disabled):not(.ui-segmented__item--selected-r7CLj){color:var(--ui-text)}.ui-segmented__item-mqRNZ:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -1px)}.ui-segmented__item--selected-r7CLj{background-color:var(--ui-surface);color:var(--ui-text);box-shadow:var(--ui-shadow-xs)}.ui-segmented__item-mqRNZ:disabled{color:var(--ui-text-3);cursor:not-allowed}@media (prefers-reduced-motion: reduce){.ui-segmented__item-mqRNZ{transition:none}}.ui-segmented__icon-C9CT-{display:inline-flex;flex-shrink:0;font-size:var(--ui-icon-sm)}.ui-segmented__label-NVXBv{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}}
1
+ @layer ui{.ui-segmented-qo2Bw{display:inline-flex;padding:3px;border-radius:var(--hd-radius-sm);background-color:var(--hd-bg-raised);border:1px solid var(--hd-border)}.ui-segmented--sm-7tUry{font-size:var(--hd-type-caption-size)}.ui-segmented--md-PiSqt{font-size:var(--hd-type-small-size)}.ui-segmented__item-mqRNZ{display:flex;align-items:center;gap:var(--hd-space-2);position:relative}.ui-segmented__item-mqRNZ:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-segmented__item-mqRNZ{justify-content:center;min-width:0;padding:var(--hd-space-2) var(--hd-space-3);border:none;border-radius:calc(var(--hd-radius-sm) - 3px);background:none;cursor:pointer;font-family:var(--hd-font-body);font-size:inherit;font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2);white-space:nowrap;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard),color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-segmented--sm-7tUry .ui-segmented__item-mqRNZ{padding:var(--hd-space-1) var(--hd-space-2)}.ui-segmented__item-mqRNZ:hover:not(:disabled):not(.ui-segmented__item--selected-r7CLj){color:var(--hd-text)}.ui-segmented__item-mqRNZ:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, -1px)}.ui-segmented__item--selected-r7CLj{background-color:var(--hd-bg-surface);color:var(--hd-text);box-shadow:var(--hd-shadow-1)}.ui-segmented__item-mqRNZ:disabled{color:var(--hd-text-3);cursor:not-allowed}@media (prefers-reduced-motion: reduce){.ui-segmented__item-mqRNZ{transition:none}}.ui-segmented__icon-C9CT-{display:inline-flex;flex-shrink:0;font-size:16px}.ui-segmented__label-NVXBv{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}}
@@ -1,2 +1,2 @@
1
- "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("react"),X=require("react-dom"),A=require("react-bootstrap-icons"),Z=require("../../hooks/useListboxNavigation.cjs"),ee=require("../../hooks/usePortalSurface.cjs"),te=require("../../hooks/usePositioning.cjs"),re=require("../../constants/breakpoint.constants.cjs"),m=require("../../helpers/class-name.helper.cjs"),ne=require("../../helpers/label.helper.cjs"),ae=require("../../theme/context.cjs"),se=require("../BottomSheet/index.cjs"),t={default:{"select":"ui-select-tiiPL","trigger":"ui-trigger-rHQJz","trigger--empty":"ui-trigger--empty-cuinb","trigger--open":"ui-trigger--open-1nsvu","trigger--invalid":"ui-trigger--invalid-NtP0W","trigger--sm":"ui-trigger--sm-Xnu1C","trigger__icon":"ui-trigger__icon-apCcx","trigger__srName":"ui-trigger__srName-XLCxt","trigger__value":"ui-trigger__value-ioH7K","trigger__chevron":"ui-trigger__chevron-FtsIZ","trigger__chevron--open":"ui-trigger__chevron--open-1P2P-","panel":"ui-panel-rGOOd","list":"ui-list-SOKf8","list--sheet":"ui-list--sheet-BIjCb","option":"ui-option-ZDPef","option--active":"ui-option--active-R4lLF","option--selected":"ui-option--selected-glQMj","option--disabled":"ui-option--disabled-h4rdd","option__label":"ui-option__label-SsoYB","option__check":"ui-option__check-8CPSG"}},ie=({options:l,value:w,onChange:S,label:_,placeholder:B,closeLabel:K,icon:I,size:U="md",align:T="start",isDisabled:y,id:W,className:F,testId:Q,required:V,"aria-describedby":Y,"aria-invalid":E})=>{const{labels:d}=ae.useUi(),z=ne.resolveLabel("Select.placeholder",B,d==null?void 0:d.selectPlaceholder),G=n.useId(),o=W??G,R=`${o}-listbox`,j=e=>`${o}-option-${e}`,D=n.useRef(null),h=n.useRef(null),g=n.useRef(null),[s,$]=n.useState(null),q=te.default(h,g,{side:"bottom",align:T,isOpen:s==="popover"}),x=ee.default(s==="popover",h,g),i=s!==null,b=l.findIndex(e=>e.value===w),p=b>=0?l[b]:null,u=n.useCallback(()=>$(null),[]),C=n.useCallback(()=>{y||l.length===0||$(window.matchMedia(re.ABOVE_MOBILE_MEDIA_QUERY).matches?"popover":"sheet")},[y,l.length]),k=e=>{e.isDisabled||(S(e.value),u())},L=n.useRef(!1);n.useEffect(()=>{var e;L.current&&!i&&((e=h.current)==null||e.focus()),L.current=i},[i]),n.useEffect(()=>{if(s!=="popover")return;const e=a=>{var f,P;const c=a.target;(f=D.current)!=null&&f.contains(c)||(P=g.current)!=null&&P.contains(c)||u()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s,u]);const{activeIndex:v,setActiveIndex:H,listRef:N,handleKeyDown:J}=Z.default({count:l.length,isOpen:i,initialIndex:b>=0?b:0,onSelect:e=>{const a=l[e];a&&k(a)},onClose:u});n.useEffect(()=>{var e;s==="sheet"&&((e=N.current)==null||e.focus({preventScroll:!0}))},[s,N]);const M=e=>{if(!i){["ArrowDown","ArrowUp","Enter"," "].includes(e.key)&&(e.preventDefault(),C());return}J(e)},O=e=>r.jsx("ul",{ref:N,id:R,role:"listbox","aria-label":_,"aria-activedescendant":e&&l[v]?j(v):void 0,tabIndex:e?0:-1,className:m.cx(t.default.list,e&&t.default["list--sheet"]),onKeyDown:e?M:void 0,children:l.map((a,c)=>{const f=a.value===w;return r.jsxs("li",{id:j(c),role:"option","data-index":c,"aria-selected":f,"aria-disabled":a.isDisabled,className:m.cx(t.default.option,c===v&&t.default["option--active"],f&&t.default["option--selected"],a.isDisabled&&t.default["option--disabled"]),onMouseEnter:()=>H(c),onClick:()=>k(a),children:[r.jsx("span",{className:t.default.option__label,children:a.label}),f&&r.jsx(A.CheckLg,{"aria-hidden":!0,className:t.default.option__check})]},a.value)})});return r.jsxs("span",{ref:D,className:m.cx(t.default.select,F),"data-testid":Q,children:[r.jsxs("button",{ref:h,id:o,type:"button",role:"combobox",className:m.cx(t.default.trigger,t.default[`trigger--${U}`],!p&&t.default["trigger--empty"],i&&t.default["trigger--open"],E&&t.default["trigger--invalid"]),disabled:y,"aria-haspopup":"listbox","aria-expanded":i,"aria-controls":i?R:void 0,"aria-activedescendant":s==="popover"&&l[v]?j(v):void 0,"aria-labelledby":p?`${o}-name ${o}-value`:`${o}-name`,"aria-describedby":Y,"aria-invalid":E,"aria-required":V||void 0,onClick:()=>i?u():C(),onKeyDown:M,children:[I&&r.jsx("span",{className:t.default.trigger__icon,"aria-hidden":!0,children:I}),r.jsx("span",{id:`${o}-name`,className:t.default.trigger__srName,children:_}),r.jsx("span",{id:`${o}-value`,className:t.default.trigger__value,children:(p==null?void 0:p.label)??z}),r.jsx(A.CaretDownFill,{"aria-hidden":!0,className:m.cx(t.default.trigger__chevron,i&&t.default["trigger__chevron--open"])})]}),s==="popover"&&x.container&&X.createPortal(r.jsx("div",{ref:g,className:t.default.panel,...x.attributes,style:{...q.style,...x.style,minWidth:q.anchorWidth||void 0,visibility:q.isPositioned?void 0:"hidden"},children:O(!1)}),x.container),s==="sheet"&&r.jsx(se.default,{title:_,closeLabel:K??(d==null?void 0:d.close),onClose:u,children:O(!0)})]})},le=n.memo(ie);exports.default=le;
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("react"),X=require("react-dom"),O=require("react-bootstrap-icons"),Z=require("../../hooks/useListboxNavigation.cjs"),ee=require("../../hooks/usePortalSurface.cjs"),te=require("../../hooks/usePositioning.cjs"),re=require("../../constants/breakpoint.constants.cjs"),m=require("../../helpers/class-name.helper.cjs"),ne=require("../../helpers/label.helper.cjs"),ae=require("../../theme/context.cjs"),se=require("../BottomSheet/index.cjs"),t={default:{"select":"ui-select-tiiPL","trigger":"ui-trigger-rHQJz","trigger--empty":"ui-trigger--empty-cuinb","trigger--open":"ui-trigger--open-1nsvu","trigger--invalid":"ui-trigger--invalid-NtP0W","trigger--sm":"ui-trigger--sm-Xnu1C","trigger__icon":"ui-trigger__icon-apCcx","trigger__srName":"ui-trigger__srName-XLCxt","trigger__value":"ui-trigger__value-ioH7K","trigger__chevron":"ui-trigger__chevron-FtsIZ","trigger__chevron--open":"ui-trigger__chevron--open-1P2P-","panel":"ui-panel-rGOOd","list":"ui-list-SOKf8","list--sheet":"ui-list--sheet-BIjCb","option":"ui-option-ZDPef","option--active":"ui-option--active-R4lLF","option--selected":"ui-option--selected-glQMj","option--disabled":"ui-option--disabled-h4rdd","option__label":"ui-option__label-SsoYB","option__check":"ui-option__check-8CPSG"}},ie=({options:l,value:w,onChange:A,label:_,placeholder:K,closeLabel:T,icon:I,size:U="md",align:W="start",isDisabled:y,id:B,className:F,testId:H,required:Q,"aria-describedby":Y,"aria-invalid":E})=>{const{labels:d}=ae.useUi(),z=ne.resolveLabel("Select.placeholder",K,d==null?void 0:d.selectPlaceholder),G=n.useId(),o=B??G,R=`${o}-listbox`,j=e=>`${o}-option-${e}`,D=n.useRef(null),h=n.useRef(null),g=n.useRef(null),[s,$]=n.useState(null),q=te.default(h,g,{side:"bottom",align:W,isOpen:s==="popover"}),x=ee.default(s==="popover",h,g),i=s!==null,b=l.findIndex(e=>e.value===w),p=b>=0?l[b]:null,u=n.useCallback(()=>$(null),[]),C=n.useCallback(()=>{y||l.length===0||$(window.matchMedia(re.SHEET_MEDIA_QUERY).matches?"sheet":"popover")},[y,l.length]),k=e=>{e.isDisabled||(A(e.value),u())},L=n.useRef(!1);n.useEffect(()=>{var e;L.current&&!i&&((e=h.current)==null||e.focus()),L.current=i},[i]),n.useEffect(()=>{if(s!=="popover")return;const e=a=>{var f,S;const c=a.target;(f=D.current)!=null&&f.contains(c)||(S=g.current)!=null&&S.contains(c)||u()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[s,u]);const{activeIndex:v,setActiveIndex:J,listRef:N,handleKeyDown:V}=Z.default({count:l.length,isOpen:i,initialIndex:b>=0?b:0,onSelect:e=>{const a=l[e];a&&k(a)},onClose:u});n.useEffect(()=>{var e;s==="sheet"&&((e=N.current)==null||e.focus({preventScroll:!0}))},[s,N]);const M=e=>{if(!i){["ArrowDown","ArrowUp","Enter"," "].includes(e.key)&&(e.preventDefault(),C());return}V(e)},P=e=>r.jsx("ul",{ref:N,id:R,role:"listbox","aria-label":_,"aria-activedescendant":e&&l[v]?j(v):void 0,tabIndex:e?0:-1,className:m.cx(t.default.list,e&&t.default["list--sheet"]),onKeyDown:e?M:void 0,children:l.map((a,c)=>{const f=a.value===w;return r.jsxs("li",{id:j(c),role:"option","data-index":c,"aria-selected":f,"aria-disabled":a.isDisabled,className:m.cx(t.default.option,c===v&&t.default["option--active"],f&&t.default["option--selected"],a.isDisabled&&t.default["option--disabled"]),onMouseEnter:()=>J(c),onClick:()=>k(a),children:[r.jsx("span",{className:t.default.option__label,children:a.label}),f&&r.jsx(O.CheckLg,{"aria-hidden":!0,className:t.default.option__check})]},a.value)})});return r.jsxs("span",{ref:D,className:m.cx(t.default.select,F),"data-testid":H,children:[r.jsxs("button",{ref:h,id:o,type:"button",role:"combobox",className:m.cx(t.default.trigger,t.default[`trigger--${U}`],!p&&t.default["trigger--empty"],i&&t.default["trigger--open"],E&&t.default["trigger--invalid"]),disabled:y,"aria-haspopup":"listbox","aria-expanded":i,"aria-controls":i?R:void 0,"aria-activedescendant":s==="popover"&&l[v]?j(v):void 0,"aria-labelledby":p?`${o}-name ${o}-value`:`${o}-name`,"aria-describedby":Y,"aria-invalid":E,"aria-required":Q||void 0,onClick:()=>i?u():C(),onKeyDown:M,children:[I&&r.jsx("span",{className:t.default.trigger__icon,"aria-hidden":!0,children:I}),r.jsx("span",{id:`${o}-name`,className:t.default.trigger__srName,children:_}),r.jsx("span",{id:`${o}-value`,className:t.default.trigger__value,children:(p==null?void 0:p.label)??z}),r.jsx(O.CaretDownFill,{"aria-hidden":!0,className:m.cx(t.default.trigger__chevron,i&&t.default["trigger__chevron--open"])})]}),s==="popover"&&x.container&&X.createPortal(r.jsx("div",{ref:g,className:t.default.panel,...x.attributes,style:{...q.style,...x.style,minWidth:q.anchorWidth||void 0,visibility:q.isPositioned?void 0:"hidden"},children:P(!1)}),x.container),s==="sheet"&&r.jsx(se.default,{title:_,closeLabel:T??(d==null?void 0:d.close),onClose:u,children:P(!0)})]})},le=n.memo(ie);exports.default=le;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { CaretDownFill, CheckLg } from 'react-bootstrap-icons';\n\nimport useListboxNavigation from '../../hooks/useListboxNavigation';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport { ABOVE_MOBILE_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport BottomSheet from '../BottomSheet';\n\nimport styles from './index.module.scss';\n\nexport type SelectOption<T extends string = string> = {\n value: T;\n label: string;\n isDisabled?: boolean;\n};\n\n/** Seçenek listesinin nerede açıldığı. */\ntype OpenMode = 'popover' | 'sheet';\n\ntype Props<T extends string> = {\n options: SelectOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Alanın adı. */\n label: string;\n /** Seçim yokken tetikleyicide görünen metin. */\n placeholder?: string;\n /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n /** Tetikleyicinin solundaki ikon. */\n icon?: ReactNode;\n /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n /** Panelin hangi kenardan hizalanacağı. */\n align?: 'start' | 'end';\n isDisabled?: boolean;\n id?: string;\n /**\n * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.\n * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.\n * `required` bir dönem tam olarak öyleydi: `<Field…\n */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Seçim kutusu. */\nconst Select = <T extends string>({\n options,\n value,\n onChange,\n label,\n placeholder,\n closeLabel,\n icon,\n size = 'md',\n align = 'start',\n isDisabled,\n id,\n className,\n testId,\n required,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props<T>) => {\n const { labels } = useUi();\n const emptyText = resolveLabel('Select.placeholder', placeholder, labels?.selectPlaceholder);\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const listboxId = `${baseId}-listbox`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [openMode, setOpenMode] = useState<OpenMode | null>(null);\n\n /* PANEL SABIT KONUMLU, MUTLAK DEGIL — gerekce SCSS'te (`.panel`). */\n const positioning = usePositioning(triggerRef, panelRef, {\n side: 'bottom',\n align,\n isOpen: openMode === 'popover',\n });\n\n /*\n * Panel BODY'e (ya da icinde bulundugu acik `<dialog>`a) portallanir; gerekce\n * `hooks/usePortalSurface.ts`.\n */\n const portal = usePortalSurface(openMode === 'popover', triggerRef, panelRef);\n\n const isOpen = openMode !== null;\n const selectedIndex = options.findIndex(option => option.value === value);\n const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : null;\n\n const close = useCallback(() => setOpenMode(null), []);\n\n const open = useCallback(() => {\n if (isDisabled || options.length === 0) return;\n\n /*\n * Etkin secenek SECILI olandan baslar (kancanin `initialIndex`i); kullanici listeyi bastan\n * taramaz.\n */\n setOpenMode(window.matchMedia(ABOVE_MOBILE_MEDIA_QUERY).matches ? 'popover' : 'sheet');\n }, [isDisabled, options.length]);\n\n const selectOption = (option: SelectOption<T>) => {\n if (option.isDisabled) return;\n onChange(option.value);\n close();\n };\n\n /* Kapaninca odak TETIKLEYICIYE doner. */\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (wasOpenRef.current && !isOpen) triggerRef.current?.focus();\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n /*\n * Disari tiklamada panel kapanir.\n * ⚠ PANEL ARTIK KOKUN ICINDE DEGIL — portallandi. `rootRef` tek basina bakilsaydi panelin ICINE\n * yapilan `mousedown` \"disari\" sayilir ve panel…\n */\n useEffect(() => {\n if (openMode !== 'popover') return;\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n close();\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n return () => document.removeEventListener('mousedown', handlePointerDown);\n }, [openMode, close]);\n\n /* KLAVYE MODELI `useListboxNavigation`da — `Combobox`la AYNI kanca. */\n const { activeIndex, setActiveIndex, listRef, handleKeyDown } =\n useListboxNavigation<HTMLUListElement>({\n count: options.length,\n isOpen,\n initialIndex: selectedIndex >= 0 ? selectedIndex : 0,\n onSelect: index => {\n const option = options[index];\n if (option) selectOption(option);\n },\n onClose: close,\n });\n\n /* Alt sayfada odak listenin kendisine gecer: ok tuslari orada isler. */\n useEffect(() => {\n if (openMode === 'sheet') listRef.current?.focus({ preventScroll: true });\n /* `listRef` kancadan geliyor ve `useRef` kimligi SABIT; bagimlilikta\n olmasi etkiyi yeniden calistirmaz, denetci ise kancadan gelen bir\n degerin referans oldugunu kanitlayamiyor. */\n }, [openMode, listRef]);\n\n /* KAPALIYKEN ok/Enter/Space paneli ACAR. */\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!isOpen) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n open();\n }\n return;\n }\n\n handleKeyDown(event);\n };\n\n const renderList = (isSheet: boolean) => (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n /*\n * Alt sayfada baslik `BottomSheet`in icinde ve kimligi bize kapali; listenin adi dogrudan\n * yazilir.\n */\n aria-label={label}\n /*\n * Odak alt sayfada listede, panelde tetikleyicide: etkin seçeneği bildiren öznitelik odağın\n * olduğu öğede durmak zorunda.\n */\n aria-activedescendant={isSheet && options[activeIndex] ? optionId(activeIndex) : undefined}\n tabIndex={isSheet ? 0 : -1}\n className={cx(styles.list, isSheet && styles['list--sheet'])}\n onKeyDown={isSheet ? onKeyDown : undefined}\n >\n {options.map((option, index) => {\n const isChosen = option.value === value;\n\n return (\n <li\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n data-index={index}\n aria-selected={isChosen}\n aria-disabled={option.isDisabled}\n className={cx(\n styles.option,\n index === activeIndex && styles['option--active'],\n isChosen && styles['option--selected'],\n option.isDisabled && styles['option--disabled'],\n )}\n // Fare imleci seçeneğin üstündeyken etkin seçenek de oraya taşınır; iki ayrı vurgu\n // kullanıcıyı şaşırtıyordu.\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n >\n <span className={styles.option__label}>{option.label}</span>\n {isChosen && <CheckLg aria-hidden className={styles.option__check} />}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <span ref={rootRef} className={cx(styles.select, className)} data-testid={testId}>\n <button\n ref={triggerRef}\n id={baseId}\n type=\"button\"\n role=\"combobox\"\n className={cx(\n styles.trigger,\n styles[`trigger--${size}`],\n !selectedOption && styles['trigger--empty'],\n isOpen && styles['trigger--open'],\n isInvalid && styles['trigger--invalid'],\n )}\n disabled={isDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={\n openMode === 'popover' && options[activeIndex] ? optionId(activeIndex) : undefined\n }\n /* ⚠ `aria-label` KULLANILMAZ — SECILI DEGERI MASKELIYORDU. */\n aria-labelledby={selectedOption ? `${baseId}-name ${baseId}-value` : `${baseId}-name`}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /* Tetikleyici bir `<button>`; yerel `required` yok, karsiligi bu. */\n aria-required={required || undefined}\n onClick={() => (isOpen ? close() : open())}\n onKeyDown={onKeyDown}\n >\n {icon && (\n <span className={styles.trigger__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n {/* Kontrolün adı — yalnızca erişilebilirlik ağacında. */}\n <span id={`${baseId}-name`} className={styles.trigger__srName}>\n {label}\n </span>\n\n <span id={`${baseId}-value`} className={styles.trigger__value}>\n {selectedOption?.label ?? emptyText}\n </span>\n\n {/*\n * Ok DOLU CARET: ince chevron, kutunun sag ucunda `$text-2` tonunda\n * iki hairline cizgiye iniyor ve kutunun acilir oldugu uzaktan\n * okunmuyordu. Acikken 180° donuyor — yon hâlâ durumu bildiriyor.\n */}\n <CaretDownFill\n aria-hidden\n className={cx(styles.trigger__chevron, isOpen && styles['trigger__chevron--open'])}\n />\n </button>\n\n {openMode === 'popover' &&\n portal.container &&\n createPortal(\n <div\n ref={panelRef}\n className={styles.panel}\n {...portal.attributes}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Panel tetikleyiciyle EN AZ ayni genislikte. */\n minWidth: positioning.anchorWidth || undefined,\n /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */\n visibility: positioning.isPositioned ? undefined : 'hidden',\n }}\n >\n {renderList(false)}\n </div>,\n portal.container,\n )}\n\n {/* Dar ekranda liste alt sayfada acilir; panel klavye acilinca sikisiyor\n ve alt ucu ekranin disinda kaliyordu (bkz. `BottomSheet`). */}\n {openMode === 'sheet' && (\n <BottomSheet title={label} closeLabel={closeLabel ?? labels?.close} onClose={close}>\n {renderList(true)}\n </BottomSheet>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Select) as typeof Select;\n"],"names":["Select","options","value","onChange","label","placeholder","closeLabel","icon","size","align","isDisabled","id","className","testId","required","describedBy","isInvalid","labels","useUi","emptyText","resolveLabel","generatedId","useId","baseId","listboxId","optionId","index","rootRef","useRef","triggerRef","panelRef","openMode","setOpenMode","useState","positioning","usePositioning","portal","usePortalSurface","isOpen","selectedIndex","option","selectedOption","close","useCallback","open","ABOVE_MOBILE_MEDIA_QUERY","selectOption","wasOpenRef","useEffect","_a","handlePointerDown","event","target","_b","activeIndex","setActiveIndex","listRef","handleKeyDown","useListboxNavigation","onKeyDown","renderList","isSheet","jsx","cx","styles","isChosen","jsxs","CheckLg","CaretDownFill","createPortal","BottomSheet"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { CaretDownFill, CheckLg } from 'react-bootstrap-icons';\n\nimport useListboxNavigation from '../../hooks/useListboxNavigation';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport { SHEET_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport BottomSheet from '../BottomSheet';\n\nimport styles from './index.module.scss';\n\nexport type SelectOption<T extends string = string> = {\n value: T;\n label: string;\n isDisabled?: boolean;\n};\n\n/** Seçenek listesinin nerede açıldığı. */\ntype OpenMode = 'popover' | 'sheet';\n\ntype Props<T extends string> = {\n options: SelectOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Alanın adı. */\n label: string;\n /** Seçim yokken tetikleyicide görünen metin. */\n placeholder?: string;\n /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n /** Tetikleyicinin solundaki ikon. */\n icon?: ReactNode;\n /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n /** Panelin hangi kenardan hizalanacağı. */\n align?: 'start' | 'end';\n isDisabled?: boolean;\n id?: string;\n /**\n * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.\n * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.\n * `required` bir dönem tam olarak öyleydi: `<Field…\n */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Seçim kutusu. */\nconst Select = <T extends string>({\n options,\n value,\n onChange,\n label,\n placeholder,\n closeLabel,\n icon,\n size = 'md',\n align = 'start',\n isDisabled,\n id,\n className,\n testId,\n required,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props<T>) => {\n const { labels } = useUi();\n const emptyText = resolveLabel('Select.placeholder', placeholder, labels?.selectPlaceholder);\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const listboxId = `${baseId}-listbox`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [openMode, setOpenMode] = useState<OpenMode | null>(null);\n\n /* PANEL SABIT KONUMLU, MUTLAK DEGIL — gerekce SCSS'te (`.panel`). */\n const positioning = usePositioning(triggerRef, panelRef, {\n side: 'bottom',\n align,\n isOpen: openMode === 'popover',\n });\n\n /*\n * Panel BODY'e (ya da icinde bulundugu acik `<dialog>`a) portallanir; gerekce\n * `hooks/usePortalSurface.ts`.\n */\n const portal = usePortalSurface(openMode === 'popover', triggerRef, panelRef);\n\n const isOpen = openMode !== null;\n const selectedIndex = options.findIndex(option => option.value === value);\n const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : null;\n\n const close = useCallback(() => setOpenMode(null), []);\n\n const open = useCallback(() => {\n if (isDisabled || options.length === 0) return;\n\n /*\n * Etkin secenek SECILI olandan baslar (kancanin `initialIndex`i); kullanici listeyi bastan\n * taramaz.\n */\n /* A sheet only on a narrow TOUCH screen; a desktop window gets the dropdown at any width. */\n setOpenMode(window.matchMedia(SHEET_MEDIA_QUERY).matches ? 'sheet' : 'popover');\n }, [isDisabled, options.length]);\n\n const selectOption = (option: SelectOption<T>) => {\n if (option.isDisabled) return;\n onChange(option.value);\n close();\n };\n\n /* Kapaninca odak TETIKLEYICIYE doner. */\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (wasOpenRef.current && !isOpen) triggerRef.current?.focus();\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n /*\n * Disari tiklamada panel kapanir.\n * ⚠ PANEL ARTIK KOKUN ICINDE DEGIL — portallandi. `rootRef` tek basina bakilsaydi panelin ICINE\n * yapilan `mousedown` \"disari\" sayilir ve panel…\n */\n useEffect(() => {\n if (openMode !== 'popover') return;\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n close();\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n return () => document.removeEventListener('mousedown', handlePointerDown);\n }, [openMode, close]);\n\n /* KLAVYE MODELI `useListboxNavigation`da — `Combobox`la AYNI kanca. */\n const { activeIndex, setActiveIndex, listRef, handleKeyDown } =\n useListboxNavigation<HTMLUListElement>({\n count: options.length,\n isOpen,\n initialIndex: selectedIndex >= 0 ? selectedIndex : 0,\n onSelect: index => {\n const option = options[index];\n if (option) selectOption(option);\n },\n onClose: close,\n });\n\n /* Alt sayfada odak listenin kendisine gecer: ok tuslari orada isler. */\n useEffect(() => {\n if (openMode === 'sheet') listRef.current?.focus({ preventScroll: true });\n /* `listRef` kancadan geliyor ve `useRef` kimligi SABIT; bagimlilikta\n olmasi etkiyi yeniden calistirmaz, denetci ise kancadan gelen bir\n degerin referans oldugunu kanitlayamiyor. */\n }, [openMode, listRef]);\n\n /* KAPALIYKEN ok/Enter/Space paneli ACAR. */\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!isOpen) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n open();\n }\n return;\n }\n\n handleKeyDown(event);\n };\n\n const renderList = (isSheet: boolean) => (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n /*\n * Alt sayfada baslik `BottomSheet`in icinde ve kimligi bize kapali; listenin adi dogrudan\n * yazilir.\n */\n aria-label={label}\n /*\n * Odak alt sayfada listede, panelde tetikleyicide: etkin seçeneği bildiren öznitelik odağın\n * olduğu öğede durmak zorunda.\n */\n aria-activedescendant={isSheet && options[activeIndex] ? optionId(activeIndex) : undefined}\n tabIndex={isSheet ? 0 : -1}\n className={cx(styles.list, isSheet && styles['list--sheet'])}\n onKeyDown={isSheet ? onKeyDown : undefined}\n >\n {options.map((option, index) => {\n const isChosen = option.value === value;\n\n return (\n <li\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n data-index={index}\n aria-selected={isChosen}\n aria-disabled={option.isDisabled}\n className={cx(\n styles.option,\n index === activeIndex && styles['option--active'],\n isChosen && styles['option--selected'],\n option.isDisabled && styles['option--disabled'],\n )}\n // Fare imleci seçeneğin üstündeyken etkin seçenek de oraya taşınır; iki ayrı vurgu\n // kullanıcıyı şaşırtıyordu.\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n >\n <span className={styles.option__label}>{option.label}</span>\n {isChosen && <CheckLg aria-hidden className={styles.option__check} />}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <span ref={rootRef} className={cx(styles.select, className)} data-testid={testId}>\n <button\n ref={triggerRef}\n id={baseId}\n type=\"button\"\n role=\"combobox\"\n className={cx(\n styles.trigger,\n styles[`trigger--${size}`],\n !selectedOption && styles['trigger--empty'],\n isOpen && styles['trigger--open'],\n isInvalid && styles['trigger--invalid'],\n )}\n disabled={isDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={\n openMode === 'popover' && options[activeIndex] ? optionId(activeIndex) : undefined\n }\n /* ⚠ `aria-label` KULLANILMAZ — SECILI DEGERI MASKELIYORDU. */\n aria-labelledby={selectedOption ? `${baseId}-name ${baseId}-value` : `${baseId}-name`}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /* Tetikleyici bir `<button>`; yerel `required` yok, karsiligi bu. */\n aria-required={required || undefined}\n onClick={() => (isOpen ? close() : open())}\n onKeyDown={onKeyDown}\n >\n {icon && (\n <span className={styles.trigger__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n {/* Kontrolün adı — yalnızca erişilebilirlik ağacında. */}\n <span id={`${baseId}-name`} className={styles.trigger__srName}>\n {label}\n </span>\n\n <span id={`${baseId}-value`} className={styles.trigger__value}>\n {selectedOption?.label ?? emptyText}\n </span>\n\n {/*\n * Ok DOLU CARET: ince chevron, kutunun sag ucunda `$text-2` tonunda\n * iki hairline cizgiye iniyor ve kutunun acilir oldugu uzaktan\n * okunmuyordu. Acikken 180° donuyor — yon hâlâ durumu bildiriyor.\n */}\n <CaretDownFill\n aria-hidden\n className={cx(styles.trigger__chevron, isOpen && styles['trigger__chevron--open'])}\n />\n </button>\n\n {openMode === 'popover' &&\n portal.container &&\n createPortal(\n <div\n ref={panelRef}\n className={styles.panel}\n {...portal.attributes}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Panel tetikleyiciyle EN AZ ayni genislikte. */\n minWidth: positioning.anchorWidth || undefined,\n /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */\n visibility: positioning.isPositioned ? undefined : 'hidden',\n }}\n >\n {renderList(false)}\n </div>,\n portal.container,\n )}\n\n {/* Dar ekranda liste alt sayfada acilir; panel klavye acilinca sikisiyor\n ve alt ucu ekranin disinda kaliyordu (bkz. `BottomSheet`). */}\n {openMode === 'sheet' && (\n <BottomSheet title={label} closeLabel={closeLabel ?? labels?.close} onClose={close}>\n {renderList(true)}\n </BottomSheet>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Select) as typeof Select;\n"],"names":["Select","options","value","onChange","label","placeholder","closeLabel","icon","size","align","isDisabled","id","className","testId","required","describedBy","isInvalid","labels","useUi","emptyText","resolveLabel","generatedId","useId","baseId","listboxId","optionId","index","rootRef","useRef","triggerRef","panelRef","openMode","setOpenMode","useState","positioning","usePositioning","portal","usePortalSurface","isOpen","selectedIndex","option","selectedOption","close","useCallback","open","SHEET_MEDIA_QUERY","selectOption","wasOpenRef","useEffect","_a","handlePointerDown","event","target","_b","activeIndex","setActiveIndex","listRef","handleKeyDown","useListboxNavigation","onKeyDown","renderList","isSheet","jsx","cx","styles","isChosen","jsxs","CheckLg","CaretDownFill","createPortal","BottomSheet"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { jsxs as D, jsx as a } from "react/jsx-runtime";
3
- import { memo as ee, useId as te, useRef as x, useState as re, useCallback as U, useEffect as E } from "react";
3
+ import { memo as ee, useId as te, useRef as x, useState as re, useCallback as j, useEffect as E } from "react";
4
4
  import { createPortal as oe } from "react-dom";
5
5
  import { CaretDownFill as ne, CheckLg as ie } from "react-bootstrap-icons";
6
6
  import ae from "../../hooks/useListboxNavigation.js";
7
7
  import se from "../../hooks/usePortalSurface.js";
8
8
  import le from "../../hooks/usePositioning.js";
9
- import { ABOVE_MOBILE_MEDIA_QUERY as ce } from "../../constants/breakpoint.constants.js";
9
+ import { SHEET_MEDIA_QUERY as ce } from "../../constants/breakpoint.constants.js";
10
10
  import { cx as f } from "../../helpers/class-name.helper.js";
11
11
  import { resolveLabel as de } from "../../helpers/label.helper.js";
12
12
  import { useUi as ue } from "../../theme/context.js";
@@ -15,29 +15,29 @@ const t = {"select":"ui-select-tiiPL","trigger":"ui-trigger-rHQJz","trigger--emp
15
15
  const pe = ({
16
16
  options: i,
17
17
  value: $,
18
- onChange: j,
18
+ onChange: T,
19
19
  label: _,
20
20
  placeholder: W,
21
21
  closeLabel: q,
22
22
  icon: C,
23
- size: F = "md",
24
- align: Q = "start",
23
+ size: B = "md",
24
+ align: F = "start",
25
25
  isDisabled: y,
26
- id: T,
27
- className: V,
26
+ id: H,
27
+ className: Q,
28
28
  testId: Y,
29
29
  required: z,
30
30
  "aria-describedby": G,
31
31
  "aria-invalid": L
32
32
  }) => {
33
- const { labels: c } = ue(), H = de("Select.placeholder", W, c == null ? void 0 : c.selectPlaceholder), J = te(), s = T ?? J, R = `${s}-listbox`, w = (e) => `${s}-option-${e}`, k = x(null), v = x(null), h = x(null), [o, M] = re(null), N = le(v, h, {
33
+ const { labels: c } = ue(), J = de("Select.placeholder", W, c == null ? void 0 : c.selectPlaceholder), V = te(), s = H ?? V, R = `${s}-listbox`, w = (e) => `${s}-option-${e}`, k = x(null), v = x(null), h = x(null), [o, P] = re(null), N = le(v, h, {
34
34
  side: "bottom",
35
- align: Q,
35
+ align: F,
36
36
  isOpen: o === "popover"
37
- }), g = se(o === "popover", v, h), n = o !== null, b = i.findIndex((e) => e.value === $), m = b >= 0 ? i[b] : null, d = U(() => M(null), []), O = U(() => {
38
- y || i.length === 0 || M(window.matchMedia(ce).matches ? "popover" : "sheet");
39
- }, [y, i.length]), P = (e) => {
40
- e.isDisabled || (j(e.value), d());
37
+ }), g = se(o === "popover", v, h), n = o !== null, b = i.findIndex((e) => e.value === $), m = b >= 0 ? i[b] : null, d = j(() => P(null), []), M = j(() => {
38
+ y || i.length === 0 || P(window.matchMedia(ce).matches ? "sheet" : "popover");
39
+ }, [y, i.length]), S = (e) => {
40
+ e.isDisabled || (T(e.value), d());
41
41
  }, A = x(!1);
42
42
  E(() => {
43
43
  var e;
@@ -45,9 +45,9 @@ const pe = ({
45
45
  }, [n]), E(() => {
46
46
  if (o !== "popover") return;
47
47
  const e = (r) => {
48
- var u, K;
48
+ var u, U;
49
49
  const l = r.target;
50
- (u = k.current) != null && u.contains(l) || (K = h.current) != null && K.contains(l) || d();
50
+ (u = k.current) != null && u.contains(l) || (U = h.current) != null && U.contains(l) || d();
51
51
  };
52
52
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
53
53
  }, [o, d]);
@@ -57,7 +57,7 @@ const pe = ({
57
57
  initialIndex: b >= 0 ? b : 0,
58
58
  onSelect: (e) => {
59
59
  const r = i[e];
60
- r && P(r);
60
+ r && S(r);
61
61
  },
62
62
  onClose: d
63
63
  });
@@ -65,13 +65,13 @@ const pe = ({
65
65
  var e;
66
66
  o === "sheet" && ((e = I.current) == null || e.focus({ preventScroll: !0 }));
67
67
  }, [o, I]);
68
- const S = (e) => {
68
+ const O = (e) => {
69
69
  if (!n) {
70
- ["ArrowDown", "ArrowUp", "Enter", " "].includes(e.key) && (e.preventDefault(), O());
70
+ ["ArrowDown", "ArrowUp", "Enter", " "].includes(e.key) && (e.preventDefault(), M());
71
71
  return;
72
72
  }
73
73
  Z(e);
74
- }, B = (e) => /* @__PURE__ */ a(
74
+ }, K = (e) => /* @__PURE__ */ a(
75
75
  "ul",
76
76
  {
77
77
  ref: I,
@@ -81,7 +81,7 @@ const pe = ({
81
81
  "aria-activedescendant": e && i[p] ? w(p) : void 0,
82
82
  tabIndex: e ? 0 : -1,
83
83
  className: f(t.list, e && t["list--sheet"]),
84
- onKeyDown: e ? S : void 0,
84
+ onKeyDown: e ? O : void 0,
85
85
  children: i.map((r, l) => {
86
86
  const u = r.value === $;
87
87
  return /* @__PURE__ */ D(
@@ -99,7 +99,7 @@ const pe = ({
99
99
  r.isDisabled && t["option--disabled"]
100
100
  ),
101
101
  onMouseEnter: () => X(l),
102
- onClick: () => P(r),
102
+ onClick: () => S(r),
103
103
  children: [
104
104
  /* @__PURE__ */ a("span", { className: t.option__label, children: r.label }),
105
105
  u && /* @__PURE__ */ a(ie, { "aria-hidden": !0, className: t.option__check })
@@ -110,7 +110,7 @@ const pe = ({
110
110
  })
111
111
  }
112
112
  );
113
- return /* @__PURE__ */ D("span", { ref: k, className: f(t.select, V), "data-testid": Y, children: [
113
+ return /* @__PURE__ */ D("span", { ref: k, className: f(t.select, Q), "data-testid": Y, children: [
114
114
  /* @__PURE__ */ D(
115
115
  "button",
116
116
  {
@@ -120,7 +120,7 @@ const pe = ({
120
120
  role: "combobox",
121
121
  className: f(
122
122
  t.trigger,
123
- t[`trigger--${F}`],
123
+ t[`trigger--${B}`],
124
124
  !m && t["trigger--empty"],
125
125
  n && t["trigger--open"],
126
126
  L && t["trigger--invalid"]
@@ -134,12 +134,12 @@ const pe = ({
134
134
  "aria-describedby": G,
135
135
  "aria-invalid": L,
136
136
  "aria-required": z || void 0,
137
- onClick: () => n ? d() : O(),
138
- onKeyDown: S,
137
+ onClick: () => n ? d() : M(),
138
+ onKeyDown: O,
139
139
  children: [
140
140
  C && /* @__PURE__ */ a("span", { className: t.trigger__icon, "aria-hidden": !0, children: C }),
141
141
  /* @__PURE__ */ a("span", { id: `${s}-name`, className: t.trigger__srName, children: _ }),
142
- /* @__PURE__ */ a("span", { id: `${s}-value`, className: t.trigger__value, children: (m == null ? void 0 : m.label) ?? H }),
142
+ /* @__PURE__ */ a("span", { id: `${s}-value`, className: t.trigger__value, children: (m == null ? void 0 : m.label) ?? J }),
143
143
  /* @__PURE__ */ a(
144
144
  ne,
145
145
  {
@@ -165,12 +165,12 @@ const pe = ({
165
165
  /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */
166
166
  visibility: N.isPositioned ? void 0 : "hidden"
167
167
  },
168
- children: B(!1)
168
+ children: K(!1)
169
169
  }
170
170
  ),
171
171
  g.container
172
172
  ),
173
- o === "sheet" && /* @__PURE__ */ a(me, { title: _, closeLabel: q ?? (c == null ? void 0 : c.close), onClose: d, children: B(!0) })
173
+ o === "sheet" && /* @__PURE__ */ a(me, { title: _, closeLabel: q ?? (c == null ? void 0 : c.close), onClose: d, children: K(!0) })
174
174
  ] });
175
175
  }, $e = /* @__PURE__ */ ee(pe);
176
176
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { CaretDownFill, CheckLg } from 'react-bootstrap-icons';\n\nimport useListboxNavigation from '../../hooks/useListboxNavigation';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport { ABOVE_MOBILE_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport BottomSheet from '../BottomSheet';\n\nimport styles from './index.module.scss';\n\nexport type SelectOption<T extends string = string> = {\n value: T;\n label: string;\n isDisabled?: boolean;\n};\n\n/** Seçenek listesinin nerede açıldığı. */\ntype OpenMode = 'popover' | 'sheet';\n\ntype Props<T extends string> = {\n options: SelectOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Alanın adı. */\n label: string;\n /** Seçim yokken tetikleyicide görünen metin. */\n placeholder?: string;\n /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n /** Tetikleyicinin solundaki ikon. */\n icon?: ReactNode;\n /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n /** Panelin hangi kenardan hizalanacağı. */\n align?: 'start' | 'end';\n isDisabled?: boolean;\n id?: string;\n /**\n * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.\n * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.\n * `required` bir dönem tam olarak öyleydi: `<Field…\n */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Seçim kutusu. */\nconst Select = <T extends string>({\n options,\n value,\n onChange,\n label,\n placeholder,\n closeLabel,\n icon,\n size = 'md',\n align = 'start',\n isDisabled,\n id,\n className,\n testId,\n required,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props<T>) => {\n const { labels } = useUi();\n const emptyText = resolveLabel('Select.placeholder', placeholder, labels?.selectPlaceholder);\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const listboxId = `${baseId}-listbox`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [openMode, setOpenMode] = useState<OpenMode | null>(null);\n\n /* PANEL SABIT KONUMLU, MUTLAK DEGIL — gerekce SCSS'te (`.panel`). */\n const positioning = usePositioning(triggerRef, panelRef, {\n side: 'bottom',\n align,\n isOpen: openMode === 'popover',\n });\n\n /*\n * Panel BODY'e (ya da icinde bulundugu acik `<dialog>`a) portallanir; gerekce\n * `hooks/usePortalSurface.ts`.\n */\n const portal = usePortalSurface(openMode === 'popover', triggerRef, panelRef);\n\n const isOpen = openMode !== null;\n const selectedIndex = options.findIndex(option => option.value === value);\n const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : null;\n\n const close = useCallback(() => setOpenMode(null), []);\n\n const open = useCallback(() => {\n if (isDisabled || options.length === 0) return;\n\n /*\n * Etkin secenek SECILI olandan baslar (kancanin `initialIndex`i); kullanici listeyi bastan\n * taramaz.\n */\n setOpenMode(window.matchMedia(ABOVE_MOBILE_MEDIA_QUERY).matches ? 'popover' : 'sheet');\n }, [isDisabled, options.length]);\n\n const selectOption = (option: SelectOption<T>) => {\n if (option.isDisabled) return;\n onChange(option.value);\n close();\n };\n\n /* Kapaninca odak TETIKLEYICIYE doner. */\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (wasOpenRef.current && !isOpen) triggerRef.current?.focus();\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n /*\n * Disari tiklamada panel kapanir.\n * ⚠ PANEL ARTIK KOKUN ICINDE DEGIL — portallandi. `rootRef` tek basina bakilsaydi panelin ICINE\n * yapilan `mousedown` \"disari\" sayilir ve panel…\n */\n useEffect(() => {\n if (openMode !== 'popover') return;\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n close();\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n return () => document.removeEventListener('mousedown', handlePointerDown);\n }, [openMode, close]);\n\n /* KLAVYE MODELI `useListboxNavigation`da — `Combobox`la AYNI kanca. */\n const { activeIndex, setActiveIndex, listRef, handleKeyDown } =\n useListboxNavigation<HTMLUListElement>({\n count: options.length,\n isOpen,\n initialIndex: selectedIndex >= 0 ? selectedIndex : 0,\n onSelect: index => {\n const option = options[index];\n if (option) selectOption(option);\n },\n onClose: close,\n });\n\n /* Alt sayfada odak listenin kendisine gecer: ok tuslari orada isler. */\n useEffect(() => {\n if (openMode === 'sheet') listRef.current?.focus({ preventScroll: true });\n /* `listRef` kancadan geliyor ve `useRef` kimligi SABIT; bagimlilikta\n olmasi etkiyi yeniden calistirmaz, denetci ise kancadan gelen bir\n degerin referans oldugunu kanitlayamiyor. */\n }, [openMode, listRef]);\n\n /* KAPALIYKEN ok/Enter/Space paneli ACAR. */\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!isOpen) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n open();\n }\n return;\n }\n\n handleKeyDown(event);\n };\n\n const renderList = (isSheet: boolean) => (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n /*\n * Alt sayfada baslik `BottomSheet`in icinde ve kimligi bize kapali; listenin adi dogrudan\n * yazilir.\n */\n aria-label={label}\n /*\n * Odak alt sayfada listede, panelde tetikleyicide: etkin seçeneği bildiren öznitelik odağın\n * olduğu öğede durmak zorunda.\n */\n aria-activedescendant={isSheet && options[activeIndex] ? optionId(activeIndex) : undefined}\n tabIndex={isSheet ? 0 : -1}\n className={cx(styles.list, isSheet && styles['list--sheet'])}\n onKeyDown={isSheet ? onKeyDown : undefined}\n >\n {options.map((option, index) => {\n const isChosen = option.value === value;\n\n return (\n <li\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n data-index={index}\n aria-selected={isChosen}\n aria-disabled={option.isDisabled}\n className={cx(\n styles.option,\n index === activeIndex && styles['option--active'],\n isChosen && styles['option--selected'],\n option.isDisabled && styles['option--disabled'],\n )}\n // Fare imleci seçeneğin üstündeyken etkin seçenek de oraya taşınır; iki ayrı vurgu\n // kullanıcıyı şaşırtıyordu.\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n >\n <span className={styles.option__label}>{option.label}</span>\n {isChosen && <CheckLg aria-hidden className={styles.option__check} />}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <span ref={rootRef} className={cx(styles.select, className)} data-testid={testId}>\n <button\n ref={triggerRef}\n id={baseId}\n type=\"button\"\n role=\"combobox\"\n className={cx(\n styles.trigger,\n styles[`trigger--${size}`],\n !selectedOption && styles['trigger--empty'],\n isOpen && styles['trigger--open'],\n isInvalid && styles['trigger--invalid'],\n )}\n disabled={isDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={\n openMode === 'popover' && options[activeIndex] ? optionId(activeIndex) : undefined\n }\n /* ⚠ `aria-label` KULLANILMAZ — SECILI DEGERI MASKELIYORDU. */\n aria-labelledby={selectedOption ? `${baseId}-name ${baseId}-value` : `${baseId}-name`}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /* Tetikleyici bir `<button>`; yerel `required` yok, karsiligi bu. */\n aria-required={required || undefined}\n onClick={() => (isOpen ? close() : open())}\n onKeyDown={onKeyDown}\n >\n {icon && (\n <span className={styles.trigger__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n {/* Kontrolün adı — yalnızca erişilebilirlik ağacında. */}\n <span id={`${baseId}-name`} className={styles.trigger__srName}>\n {label}\n </span>\n\n <span id={`${baseId}-value`} className={styles.trigger__value}>\n {selectedOption?.label ?? emptyText}\n </span>\n\n {/*\n * Ok DOLU CARET: ince chevron, kutunun sag ucunda `$text-2` tonunda\n * iki hairline cizgiye iniyor ve kutunun acilir oldugu uzaktan\n * okunmuyordu. Acikken 180° donuyor — yon hâlâ durumu bildiriyor.\n */}\n <CaretDownFill\n aria-hidden\n className={cx(styles.trigger__chevron, isOpen && styles['trigger__chevron--open'])}\n />\n </button>\n\n {openMode === 'popover' &&\n portal.container &&\n createPortal(\n <div\n ref={panelRef}\n className={styles.panel}\n {...portal.attributes}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Panel tetikleyiciyle EN AZ ayni genislikte. */\n minWidth: positioning.anchorWidth || undefined,\n /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */\n visibility: positioning.isPositioned ? undefined : 'hidden',\n }}\n >\n {renderList(false)}\n </div>,\n portal.container,\n )}\n\n {/* Dar ekranda liste alt sayfada acilir; panel klavye acilinca sikisiyor\n ve alt ucu ekranin disinda kaliyordu (bkz. `BottomSheet`). */}\n {openMode === 'sheet' && (\n <BottomSheet title={label} closeLabel={closeLabel ?? labels?.close} onClose={close}>\n {renderList(true)}\n </BottomSheet>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Select) as typeof Select;\n"],"names":["Select","options","value","onChange","label","placeholder","closeLabel","icon","size","align","isDisabled","id","className","testId","required","describedBy","isInvalid","labels","useUi","emptyText","resolveLabel","generatedId","useId","baseId","listboxId","optionId","index","rootRef","useRef","triggerRef","panelRef","openMode","setOpenMode","useState","positioning","usePositioning","portal","usePortalSurface","isOpen","selectedIndex","option","selectedOption","close","useCallback","open","ABOVE_MOBILE_MEDIA_QUERY","selectOption","wasOpenRef","useEffect","_a","handlePointerDown","event","target","_b","activeIndex","setActiveIndex","listRef","handleKeyDown","useListboxNavigation","onKeyDown","renderList","isSheet","jsx","cx","styles","isChosen","jsxs","CheckLg","CaretDownFill","createPortal","BottomSheet"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Select/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n type KeyboardEvent,\n memo,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\nimport { CaretDownFill, CheckLg } from 'react-bootstrap-icons';\n\nimport useListboxNavigation from '../../hooks/useListboxNavigation';\nimport usePortalSurface from '../../hooks/usePortalSurface';\nimport usePositioning from '../../hooks/usePositioning';\n\nimport { SHEET_MEDIA_QUERY } from '../../constants/breakpoint.constants';\nimport { cx } from '../../helpers/class-name.helper';\nimport { resolveLabel } from '../../helpers/label.helper';\nimport { useUi } from '../../theme/context';\nimport BottomSheet from '../BottomSheet';\n\nimport styles from './index.module.scss';\n\nexport type SelectOption<T extends string = string> = {\n value: T;\n label: string;\n isDisabled?: boolean;\n};\n\n/** Seçenek listesinin nerede açıldığı. */\ntype OpenMode = 'popover' | 'sheet';\n\ntype Props<T extends string> = {\n options: SelectOption<T>[];\n value: T;\n onChange: (value: T) => void;\n /** Alanın adı. */\n label: string;\n /** Seçim yokken tetikleyicide görünen metin. */\n placeholder?: string;\n /** Alt sayfanın kapatma düğmesinin erişilebilir adı. */\n closeLabel?: string;\n /** Tetikleyicinin solundaki ikon. */\n icon?: ReactNode;\n /** `sm` yoğun şeritler içindir (araç çubuğu); varsayılan form ölçüsü `md`. */\n size?: 'sm' | 'md';\n /** Panelin hangi kenardan hizalanacağı. */\n align?: 'start' | 'end';\n isDisabled?: boolean;\n id?: string;\n /**\n * Zorunluluk — `Field`in `FieldChildProps` sözleşmesinden gelir.\n * ⚠ Bileşen `...rest` YAYMIYOR, yani `Props`ta bildirilmeyen her alan sessizce buharlaşır.\n * `required` bir dönem tam olarak öyleydi: `<Field…\n */\n required?: boolean;\n 'aria-describedby'?: string;\n 'aria-invalid'?: boolean;\n className?: string;\n testId?: string;\n};\n\n/** Seçim kutusu. */\nconst Select = <T extends string>({\n options,\n value,\n onChange,\n label,\n placeholder,\n closeLabel,\n icon,\n size = 'md',\n align = 'start',\n isDisabled,\n id,\n className,\n testId,\n required,\n 'aria-describedby': describedBy,\n 'aria-invalid': isInvalid,\n}: Props<T>) => {\n const { labels } = useUi();\n const emptyText = resolveLabel('Select.placeholder', placeholder, labels?.selectPlaceholder);\n const generatedId = useId();\n const baseId = id ?? generatedId;\n const listboxId = `${baseId}-listbox`;\n const optionId = (index: number) => `${baseId}-option-${index}`;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const [openMode, setOpenMode] = useState<OpenMode | null>(null);\n\n /* PANEL SABIT KONUMLU, MUTLAK DEGIL — gerekce SCSS'te (`.panel`). */\n const positioning = usePositioning(triggerRef, panelRef, {\n side: 'bottom',\n align,\n isOpen: openMode === 'popover',\n });\n\n /*\n * Panel BODY'e (ya da icinde bulundugu acik `<dialog>`a) portallanir; gerekce\n * `hooks/usePortalSurface.ts`.\n */\n const portal = usePortalSurface(openMode === 'popover', triggerRef, panelRef);\n\n const isOpen = openMode !== null;\n const selectedIndex = options.findIndex(option => option.value === value);\n const selectedOption = selectedIndex >= 0 ? options[selectedIndex] : null;\n\n const close = useCallback(() => setOpenMode(null), []);\n\n const open = useCallback(() => {\n if (isDisabled || options.length === 0) return;\n\n /*\n * Etkin secenek SECILI olandan baslar (kancanin `initialIndex`i); kullanici listeyi bastan\n * taramaz.\n */\n /* A sheet only on a narrow TOUCH screen; a desktop window gets the dropdown at any width. */\n setOpenMode(window.matchMedia(SHEET_MEDIA_QUERY).matches ? 'sheet' : 'popover');\n }, [isDisabled, options.length]);\n\n const selectOption = (option: SelectOption<T>) => {\n if (option.isDisabled) return;\n onChange(option.value);\n close();\n };\n\n /* Kapaninca odak TETIKLEYICIYE doner. */\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (wasOpenRef.current && !isOpen) triggerRef.current?.focus();\n wasOpenRef.current = isOpen;\n }, [isOpen]);\n\n /*\n * Disari tiklamada panel kapanir.\n * ⚠ PANEL ARTIK KOKUN ICINDE DEGIL — portallandi. `rootRef` tek basina bakilsaydi panelin ICINE\n * yapilan `mousedown` \"disari\" sayilir ve panel…\n */\n useEffect(() => {\n if (openMode !== 'popover') return;\n\n const handlePointerDown = (event: globalThis.MouseEvent) => {\n const target = event.target as Node;\n if (rootRef.current?.contains(target) || panelRef.current?.contains(target)) return;\n close();\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n return () => document.removeEventListener('mousedown', handlePointerDown);\n }, [openMode, close]);\n\n /* KLAVYE MODELI `useListboxNavigation`da — `Combobox`la AYNI kanca. */\n const { activeIndex, setActiveIndex, listRef, handleKeyDown } =\n useListboxNavigation<HTMLUListElement>({\n count: options.length,\n isOpen,\n initialIndex: selectedIndex >= 0 ? selectedIndex : 0,\n onSelect: index => {\n const option = options[index];\n if (option) selectOption(option);\n },\n onClose: close,\n });\n\n /* Alt sayfada odak listenin kendisine gecer: ok tuslari orada isler. */\n useEffect(() => {\n if (openMode === 'sheet') listRef.current?.focus({ preventScroll: true });\n /* `listRef` kancadan geliyor ve `useRef` kimligi SABIT; bagimlilikta\n olmasi etkiyi yeniden calistirmaz, denetci ise kancadan gelen bir\n degerin referans oldugunu kanitlayamiyor. */\n }, [openMode, listRef]);\n\n /* KAPALIYKEN ok/Enter/Space paneli ACAR. */\n const onKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n if (!isOpen) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n open();\n }\n return;\n }\n\n handleKeyDown(event);\n };\n\n const renderList = (isSheet: boolean) => (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n /*\n * Alt sayfada baslik `BottomSheet`in icinde ve kimligi bize kapali; listenin adi dogrudan\n * yazilir.\n */\n aria-label={label}\n /*\n * Odak alt sayfada listede, panelde tetikleyicide: etkin seçeneği bildiren öznitelik odağın\n * olduğu öğede durmak zorunda.\n */\n aria-activedescendant={isSheet && options[activeIndex] ? optionId(activeIndex) : undefined}\n tabIndex={isSheet ? 0 : -1}\n className={cx(styles.list, isSheet && styles['list--sheet'])}\n onKeyDown={isSheet ? onKeyDown : undefined}\n >\n {options.map((option, index) => {\n const isChosen = option.value === value;\n\n return (\n <li\n key={option.value}\n id={optionId(index)}\n role=\"option\"\n data-index={index}\n aria-selected={isChosen}\n aria-disabled={option.isDisabled}\n className={cx(\n styles.option,\n index === activeIndex && styles['option--active'],\n isChosen && styles['option--selected'],\n option.isDisabled && styles['option--disabled'],\n )}\n // Fare imleci seçeneğin üstündeyken etkin seçenek de oraya taşınır; iki ayrı vurgu\n // kullanıcıyı şaşırtıyordu.\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n >\n <span className={styles.option__label}>{option.label}</span>\n {isChosen && <CheckLg aria-hidden className={styles.option__check} />}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <span ref={rootRef} className={cx(styles.select, className)} data-testid={testId}>\n <button\n ref={triggerRef}\n id={baseId}\n type=\"button\"\n role=\"combobox\"\n className={cx(\n styles.trigger,\n styles[`trigger--${size}`],\n !selectedOption && styles['trigger--empty'],\n isOpen && styles['trigger--open'],\n isInvalid && styles['trigger--invalid'],\n )}\n disabled={isDisabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? listboxId : undefined}\n aria-activedescendant={\n openMode === 'popover' && options[activeIndex] ? optionId(activeIndex) : undefined\n }\n /* ⚠ `aria-label` KULLANILMAZ — SECILI DEGERI MASKELIYORDU. */\n aria-labelledby={selectedOption ? `${baseId}-name ${baseId}-value` : `${baseId}-name`}\n aria-describedby={describedBy}\n aria-invalid={isInvalid}\n /* Tetikleyici bir `<button>`; yerel `required` yok, karsiligi bu. */\n aria-required={required || undefined}\n onClick={() => (isOpen ? close() : open())}\n onKeyDown={onKeyDown}\n >\n {icon && (\n <span className={styles.trigger__icon} aria-hidden>\n {icon}\n </span>\n )}\n\n {/* Kontrolün adı — yalnızca erişilebilirlik ağacında. */}\n <span id={`${baseId}-name`} className={styles.trigger__srName}>\n {label}\n </span>\n\n <span id={`${baseId}-value`} className={styles.trigger__value}>\n {selectedOption?.label ?? emptyText}\n </span>\n\n {/*\n * Ok DOLU CARET: ince chevron, kutunun sag ucunda `$text-2` tonunda\n * iki hairline cizgiye iniyor ve kutunun acilir oldugu uzaktan\n * okunmuyordu. Acikken 180° donuyor — yon hâlâ durumu bildiriyor.\n */}\n <CaretDownFill\n aria-hidden\n className={cx(styles.trigger__chevron, isOpen && styles['trigger__chevron--open'])}\n />\n </button>\n\n {openMode === 'popover' &&\n portal.container &&\n createPortal(\n <div\n ref={panelRef}\n className={styles.panel}\n {...portal.attributes}\n style={{\n ...positioning.style,\n ...portal.style,\n /* Panel tetikleyiciyle EN AZ ayni genislikte. */\n minWidth: positioning.anchorWidth || undefined,\n /* Ilk karede olcu yok; yanlis yerde bir kare parlamasin. */\n visibility: positioning.isPositioned ? undefined : 'hidden',\n }}\n >\n {renderList(false)}\n </div>,\n portal.container,\n )}\n\n {/* Dar ekranda liste alt sayfada acilir; panel klavye acilinca sikisiyor\n ve alt ucu ekranin disinda kaliyordu (bkz. `BottomSheet`). */}\n {openMode === 'sheet' && (\n <BottomSheet title={label} closeLabel={closeLabel ?? labels?.close} onClose={close}>\n {renderList(true)}\n </BottomSheet>\n )}\n </span>\n );\n};\n\nexport default /*#__PURE__*/ memo(Select) as typeof Select;\n"],"names":["Select","options","value","onChange","label","placeholder","closeLabel","icon","size","align","isDisabled","id","className","testId","required","describedBy","isInvalid","labels","useUi","emptyText","resolveLabel","generatedId","useId","baseId","listboxId","optionId","index","rootRef","useRef","triggerRef","panelRef","openMode","setOpenMode","useState","positioning","usePositioning","portal","usePortalSurface","isOpen","selectedIndex","option","selectedOption","close","useCallback","open","SHEET_MEDIA_QUERY","selectOption","wasOpenRef","useEffect","_a","handlePointerDown","event","target","_b","activeIndex","setActiveIndex","listRef","handleKeyDown","useListboxNavigation","onKeyDown","renderList","isSheet","jsx","cx","styles","isChosen","jsxs","CheckLg","CaretDownFill","createPortal","BottomSheet"],"mappings":"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"}
@@ -1 +1 @@
1
- @layer ui{.ui-select-tiiPL{position:relative;display:block;width:100%}.ui-trigger-rHQJz{width:100%;font-family:var(--ui-font-body);font-size:var(--ui-font-size-control);line-height:var(--ui-leading-snug);color:var(--ui-text);background-color:var(--ui-surface);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius-md);padding:var(--ui-space-3) var(--ui-space-4);min-height:44px;transition:border-color var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out)}.ui-trigger-rHQJz::placeholder{color:var(--ui-placeholder, var(--ui-text-3))}.ui-trigger-rHQJz:hover:not(:disabled):not([aria-invalid=true]){border-color:color-mix(in oklab,var(--ui-border-strong),var(--ui-text) 30%)}.ui-trigger-rHQJz:focus{outline:none;border-color:var(--ui-ring-color);box-shadow:var(--ui-ring)}.ui-trigger-rHQJz:disabled{background-color:var(--ui-surface-2);border-color:var(--ui-border);cursor:not-allowed;color:var(--ui-text-3)}@media (forced-colors: active){.ui-trigger-rHQJz:disabled{color:GrayText;border-color:GrayText}}.ui-trigger-rHQJz[aria-invalid=true]{border-color:var(--ui-danger-solid)}.ui-trigger-rHQJz[aria-invalid=true]:focus{box-shadow:var(--ui-ring-danger)}@media (prefers-reduced-motion: reduce){.ui-trigger-rHQJz{transition:none}}.ui-trigger-rHQJz{display:flex;align-items:center;gap:var(--ui-space-2);text-align:start;cursor:pointer}.ui-trigger--empty-cuinb{color:var(--ui-text-3)}.ui-trigger--open-1nsvu{border-color:var(--ui-ring-color);box-shadow:var(--ui-ring)}.ui-trigger--invalid-NtP0W{border-color:var(--ui-danger-solid)}.ui-trigger--sm-Xnu1C{min-height:36px;padding-block:0;padding-inline:var(--ui-space-3);font-size:var(--ui-font-size-sm);position:relative}.ui-trigger--sm-Xnu1C:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-trigger--sm-Xnu1C{font-weight:500}.ui-trigger__icon-apCcx{display:inline-flex;color:var(--ui-text-2);flex-shrink:0;font-size:var(--ui-icon-md)}.ui-trigger__srName-XLCxt{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-trigger__value-ioH7K{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.ui-trigger__chevron-FtsIZ{color:var(--ui-text-2);flex-shrink:0;font-size:var(--ui-icon-xs);transition:transform var(--ui-duration-fast) var(--ui-ease-out)}.ui-trigger__chevron--open-1P2P-{transform:rotate(180deg)}@media (prefers-reduced-motion: reduce){.ui-trigger__chevron-FtsIZ{transition:none}}.ui-panel-rGOOd{position:fixed;z-index:200;min-width:200px;background-color:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-lg);overflow:hidden;animation:var(--ui-anim-fade-in-up) var(--ui-duration-fast) var(--ui-ease-out)}@media (prefers-reduced-motion: reduce){.ui-panel-rGOOd{animation:none}}.ui-list-SOKf8{position:relative;max-height:280px;overflow-y:auto;padding:var(--ui-space-1);margin:0;list-style:none;scrollbar-width:thin;scrollbar-color:var(--ui-border-strong) transparent}.ui-list-SOKf8::-webkit-scrollbar{width:8px;height:8px}.ui-list-SOKf8::-webkit-scrollbar-track{background:transparent}.ui-list-SOKf8::-webkit-scrollbar-thumb{background-color:var(--ui-border-strong);border-radius:var(--ui-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-list-SOKf8::-webkit-scrollbar-thumb:hover{background-color:var(--ui-text-3)}.ui-list-SOKf8:focus{outline:none}.ui-list--sheet-BIjCb{max-height:none;overflow:visible;padding:0}.ui-list--sheet-BIjCb .ui-option-ZDPef{min-height:48px;font-size:var(--ui-font-size-base);border-radius:var(--ui-radius-md)}.ui-option-ZDPef{display:flex;align-items:center;gap:var(--ui-space-2);justify-content:space-between;padding:var(--ui-space-2) var(--ui-space-3);border-radius:var(--ui-radius-sm);font-size:var(--ui-font-size-sm);color:var(--ui-text);cursor:pointer;transition:background-color var(--ui-duration-fast) var(--ui-ease-out)}.ui-option--active-R4lLF{background-color:var(--ui-surface-2)}.ui-option--selected-glQMj{background-color:var(--ui-selected-tint);color:var(--ui-text);font-weight:600}.ui-option--disabled-h4rdd{color:var(--ui-text-3);cursor:not-allowed}.ui-option--disabled-h4rdd:hover{background-color:transparent}.ui-option__label-SsoYB{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ui-option__check-8CPSG{color:var(--ui-text);flex-shrink:0;font-size:var(--ui-icon-md)}@media (prefers-reduced-motion: reduce){.ui-option-ZDPef{transition:none}}}
1
+ @layer ui{.ui-select-tiiPL{position:relative;display:block;width:100%}.ui-trigger-rHQJz{width:100%;font-family:var(--hd-font-body);font-size:var(--hd-type-body-size);line-height:var(--hd-type-h4-line-height);color:var(--hd-text);background-color:var(--hd-bg-surface);border:1px solid var(--hd-border-strong);border-radius:var(--hd-radius-sm);padding:var(--hd-space-2) var(--hd-space-3);min-height:40px}@media (max-width: 640px){.ui-trigger-rHQJz{min-height:44px;font-size:max(16px,var(--hd-type-body-size))}}@media (hover: none) and (pointer: coarse){.ui-trigger-rHQJz{min-height:44px;font-size:max(16px,var(--hd-type-body-size))}}.ui-trigger-rHQJz{transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),box-shadow var(--hd-duration-fast) var(--hd-ease-standard)}.ui-trigger-rHQJz::placeholder{color:var(--ui-placeholder, var(--hd-text-3))}.ui-trigger-rHQJz:hover:not(:disabled):not([aria-invalid=true]){border-color:color-mix(in oklab,var(--hd-border-strong),var(--hd-text) 30%)}.ui-trigger-rHQJz:focus{outline:none;border-color:var(--hd-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent)}.ui-trigger-rHQJz:disabled{background-color:var(--hd-bg-raised);border-color:var(--hd-border);cursor:not-allowed;color:var(--hd-text-3)}@media (forced-colors: active){.ui-trigger-rHQJz:disabled{color:GrayText;border-color:GrayText}}.ui-trigger-rHQJz[aria-invalid=true]{border-color:var(--hd-danger-solid)}.ui-trigger-rHQJz[aria-invalid=true]:focus{box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-danger-solid) 28%,transparent)}@media (prefers-reduced-motion: reduce){.ui-trigger-rHQJz{transition:none}}.ui-trigger-rHQJz{display:flex;align-items:center;gap:var(--hd-space-2);text-align:start;cursor:pointer}.ui-trigger--empty-cuinb{color:var(--hd-text-3)}.ui-trigger--open-1nsvu{border-color:var(--hd-focus);box-shadow:0 0 0 3px color-mix(in srgb,var(--hd-focus) 32%,transparent)}.ui-trigger--invalid-NtP0W{border-color:var(--hd-danger-solid)}.ui-trigger--sm-Xnu1C{min-height:32px;padding-block:0;padding-inline:var(--hd-space-3);font-size:var(--hd-type-small-size)}@media (max-width: 640px){.ui-trigger--sm-Xnu1C{min-height:32px;font-size:var(--hd-type-small-size)}}@media (hover: none) and (pointer: coarse){.ui-trigger--sm-Xnu1C{min-height:32px;font-size:var(--hd-type-small-size)}}.ui-trigger--sm-Xnu1C{position:relative}.ui-trigger--sm-Xnu1C:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:max(100%,44px);height:max(100%,44px)}.ui-trigger--sm-Xnu1C{font-weight:var(--hd-font-weight-medium)}.ui-trigger__icon-apCcx{display:inline-flex;color:var(--hd-text-2);flex-shrink:0;font-size:18px}.ui-trigger__srName-XLCxt{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-trigger__value-ioH7K{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.ui-trigger__chevron-FtsIZ{color:var(--hd-text-2);flex-shrink:0;font-size:14px;transition:transform var(--hd-duration-fast) var(--hd-ease-standard)}.ui-trigger__chevron--open-1P2P-{transform:rotate(180deg)}@media (prefers-reduced-motion: reduce){.ui-trigger__chevron-FtsIZ{transition:none}}.ui-panel-rGOOd{position:fixed;z-index:var(--hd-z-popover);min-width:200px;background-color:var(--hd-bg-overlay);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);box-shadow:var(--hd-shadow-2);overflow:hidden;animation:var(--ui-anim-fade-in-up) var(--hd-duration-fast) var(--hd-ease-standard)}@media (prefers-reduced-motion: reduce){.ui-panel-rGOOd{animation:none}}.ui-list-SOKf8{position:relative;max-height:280px;overflow-y:auto;padding:var(--hd-space-1);margin:0;list-style:none;scrollbar-width:thin;scrollbar-color:var(--hd-border-strong) transparent}.ui-list-SOKf8::-webkit-scrollbar{width:8px;height:8px}.ui-list-SOKf8::-webkit-scrollbar-track{background:transparent}.ui-list-SOKf8::-webkit-scrollbar-thumb{background-color:var(--hd-border-strong);border-radius:var(--hd-radius-pill);border:2px solid transparent;background-clip:content-box}.ui-list-SOKf8::-webkit-scrollbar-thumb:hover{background-color:var(--hd-text-3)}.ui-list-SOKf8:focus{outline:none}.ui-list--sheet-BIjCb{max-height:none;overflow:visible;padding:0}.ui-list--sheet-BIjCb .ui-option-ZDPef{min-height:48px;font-size:var(--hd-type-body-size);border-radius:var(--hd-radius-sm)}.ui-option-ZDPef{display:flex;align-items:center;gap:var(--hd-space-2);justify-content:space-between;padding:var(--hd-space-2) var(--hd-space-3);border-radius:var(--hd-radius-xs);font-size:var(--hd-type-small-size);color:var(--hd-text);cursor:pointer;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard)}.ui-option--active-R4lLF{background-color:color-mix(in srgb,var(--hd-text) 8%,transparent)}.ui-option--selected-glQMj{background-color:var(--hd-primary-soft);color:var(--hd-text);font-weight:var(--hd-font-weight-semibold)}.ui-option--disabled-h4rdd{color:var(--hd-text-3);cursor:not-allowed}.ui-option--disabled-h4rdd:hover{background-color:transparent}.ui-option__label-SsoYB{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.ui-option__check-8CPSG{color:var(--hd-text);flex-shrink:0;font-size:18px}@media (prefers-reduced-motion: reduce){.ui-option-ZDPef{transition:none}}}
@@ -1 +1 @@
1
- @layer ui{.ui-skeleton-n92if{background:linear-gradient(90deg,var(--ui-skeleton-a) 0%,var(--ui-skeleton-b) 50%,var(--ui-skeleton-a) 100%);background-size:200% 100%;animation:var(--ui-anim-shimmer) var(--ui-duration-shimmer) ease-in-out infinite;border-radius:var(--ui-radius-sm)}@media (prefers-reduced-motion: reduce){.ui-skeleton-n92if{animation:none}}.ui-skeleton-n92if{display:block}.ui-skeleton--block-tOZ-a{width:100%;height:100%}.ui-skeleton--text-k-ROi{height:1em;border-radius:var(--ui-radius-xs)}.ui-skeleton--circle-x-mX3{border-radius:var(--ui-radius-pill);aspect-ratio:1}.ui-group-YMfwa{display:flex;flex-direction:column;gap:var(--ui-space-2)}.ui-card-XQs-Q{border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background-color:var(--ui-surface);overflow:hidden}.ui-card__media-YLJDv{aspect-ratio:1.4;width:100%;height:auto;border-radius:0}.ui-card__body-msRvB{display:flex;flex-direction:column;gap:var(--ui-space-2);padding:var(--ui-space-3)}.ui-rows-EZ9Am{display:flex;flex-direction:column;gap:var(--ui-space-3)}.ui-row-se56N{display:flex;align-items:center;gap:var(--ui-space-3)}.ui-row__text-TD4iS{display:flex;flex-direction:column;gap:var(--ui-space-1);flex:1;min-width:0}.ui-table-L328g{display:flex;flex-direction:column;gap:var(--ui-space-3);padding:var(--ui-space-3);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background-color:var(--ui-surface)}.ui-table__row-rSJTK{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--ui-space-3);align-items:center;min-height:40px}}
1
+ @layer ui{.ui-skeleton-n92if{background:linear-gradient(90deg,var(--hd-bg-disabled) 0%,var(--hd-border) 50%,var(--hd-bg-disabled) 100%);background-size:200% 100%;animation:var(--ui-anim-shimmer) 1.4s ease-in-out infinite;border-radius:var(--hd-radius-xs)}@media (prefers-reduced-motion: reduce){.ui-skeleton-n92if{animation:none}}.ui-skeleton-n92if{display:block}.ui-skeleton--block-tOZ-a{width:100%;height:100%}.ui-skeleton--text-k-ROi{height:1em;border-radius:var(--hd-radius-xs)}.ui-skeleton--circle-x-mX3{border-radius:var(--hd-radius-pill);aspect-ratio:1}.ui-group-YMfwa{display:flex;flex-direction:column;gap:var(--hd-space-2)}.ui-card-XQs-Q{border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);background-color:var(--hd-bg-surface);overflow:hidden}.ui-card__media-YLJDv{aspect-ratio:1.4;width:100%;height:auto;border-radius:0}.ui-card__body-msRvB{display:flex;flex-direction:column;gap:var(--hd-space-2);padding:var(--hd-space-3)}.ui-rows-EZ9Am{display:flex;flex-direction:column;gap:var(--hd-space-3)}.ui-row-se56N{display:flex;align-items:center;gap:var(--hd-space-3)}.ui-row__text-TD4iS{display:flex;flex-direction:column;gap:var(--hd-space-1);flex:1;min-width:0}.ui-table-L328g{display:flex;flex-direction:column;gap:var(--hd-space-3);padding:var(--hd-space-3);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);background-color:var(--hd-bg-surface)}.ui-table__row-rSJTK{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--hd-space-3);align-items:center;min-height:40px}}
@@ -1 +1 @@
1
- @layer ui{.ui-spinner-7pXwf{display:inline-block;border-radius:var(--ui-radius-pill);border:2px solid var(--ui-track);border-top-color:var(--ui-selected);animation:var(--ui-anim-spin) var(--ui-duration-spin) linear infinite}.ui-spinner__label-sZvSq{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-spinner--sm-uI0wH{width:14px;height:14px}.ui-spinner--md--VmFK{width:20px;height:20px}.ui-spinner--lg-K9k-Z{width:32px;height:32px;border-width:3px}@media (prefers-reduced-motion: reduce){.ui-spinner-7pXwf{animation:none;border-top-color:var(--ui-selected)}}}
1
+ @layer ui{.ui-spinner-7pXwf{display:inline-block;border-radius:var(--hd-radius-pill);border:2px solid var(--hd-border);border-top-color:var(--hd-primary);animation:var(--ui-anim-spin) .7s linear infinite}.ui-spinner__label-sZvSq{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.ui-spinner--sm-uI0wH{width:14px;height:14px}.ui-spinner--md--VmFK{width:20px;height:20px}.ui-spinner--lg-K9k-Z{width:32px;height:32px;border-width:3px}@media (prefers-reduced-motion: reduce){.ui-spinner-7pXwf{animation:none;border-top-color:var(--hd-primary)}}}
@@ -1 +1 @@
1
- @layer ui{.ui-stat-Xb7wp{display:flex;flex-direction:column;gap:var(--ui-space-1);position:relative;padding:var(--ui-space-4);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg);background-color:var(--ui-surface)}.ui-stat--sm-XnK8p{padding:var(--ui-space-3)}.ui-stat--plain-N-3RC{padding:0;border:0;background:none}.ui-stat--plain-N-3RC .ui-stat__icon-MB8NU{inset-block-start:0;inset-inline-end:0}.ui-stat--inline-IpE0J{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:var(--ui-space-1) var(--ui-space-2);padding:0;border:0;background:none}.ui-stat--inline-IpE0J .ui-stat__icon-MB8NU{position:static;align-self:center;font-size:var(--ui-icon-sm)}.ui-stat--inline-IpE0J .ui-stat__label-kUX2m{padding-inline-end:0}.ui-stat--inline-IpE0J .ui-stat__value--6p13{font-family:var(--ui-font-mono);font-size:var(--ui-font-size-xs);letter-spacing:.02em;font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:normal}.ui-stat--inline-IpE0J .ui-stat__unit-mjHVk{font-size:inherit}.ui-stat__icon-MB8NU{position:absolute;inset-block-start:var(--ui-space-3);inset-inline-end:var(--ui-space-3);display:inline-flex;font-size:var(--ui-icon-lg);color:var(--ui-text-3)}.ui-stat__label-kUX2m{font-family:var(--ui-stat-label-font, inherit);font-size:var(--ui-stat-label-size, var(--ui-font-size-xs));font-weight:var(--ui-stat-label-weight, 500);letter-spacing:var(--ui-stat-label-tracking, normal);text-transform:var(--ui-stat-label-transform, none);color:var(--ui-text-2);padding-inline-end:var(--ui-space-6)}.ui-stat__value--6p13{display:flex;align-items:baseline;gap:var(--ui-space-1);font-family:var(--ui-stat-value-font, var(--ui-font-heading));font-size:var(--ui-font-size-2xl);font-weight:var(--ui-stat-value-weight, 700);line-height:var(--ui-leading-tight);letter-spacing:var(--ui-stat-value-tracking, -.022em);color:var(--ui-text);font-variant-numeric:tabular-nums}.ui-stat--sm-XnK8p .ui-stat__value--6p13{font-size:var(--ui-font-size-xl)}.ui-stat__unit-mjHVk{font-family:var(--ui-stat-unit-font, inherit);font-size:var(--ui-stat-unit-size, var(--ui-font-size-sm));font-weight:500;color:var(--ui-text-2);letter-spacing:var(--ui-stat-unit-tracking, normal);text-transform:var(--ui-stat-unit-transform, none)}.ui-stat__delta-YKpOu{display:flex;align-items:center;gap:2px;align-self:flex-start;font-size:var(--ui-font-size-xs);font-weight:600;font-variant-numeric:tabular-nums;color:var(--ui-text-2)}.ui-stat__delta-YKpOu svg{font-size:var(--ui-icon-sm);flex-shrink:0}.ui-stat__delta--positive-1AUAM{color:var(--ui-ok-fg)}.ui-stat__delta--negative--WWEP{color:var(--ui-bad-fg)}.ui-stat__description-Yvw6J{font-size:var(--ui-font-size-xs);color:var(--ui-text-3)}.ui-stat__srOnly-YKebA{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
1
+ @layer ui{.ui-stat-Xb7wp{display:flex;flex-direction:column;gap:var(--hd-space-1);position:relative;padding:var(--hd-space-4);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md);background-color:var(--hd-bg-surface)}.ui-stat--sm-XnK8p{padding:var(--hd-space-3)}.ui-stat--plain-N-3RC{padding:0;border:0;background:none}.ui-stat--plain-N-3RC .ui-stat__icon-MB8NU{inset-block-start:0;inset-inline-end:0}.ui-stat--inline-IpE0J{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:var(--hd-space-1) var(--hd-space-2);padding:0;border:0;background:none}.ui-stat--inline-IpE0J .ui-stat__icon-MB8NU{position:static;align-self:center;font-size:16px}.ui-stat--inline-IpE0J .ui-stat__label-kUX2m{padding-inline-end:0}.ui-stat--inline-IpE0J .ui-stat__value--6p13{font-family:var(--hd-font-mono);font-size:var(--hd-type-caption-size);letter-spacing:.02em;font-variant-numeric:tabular-nums;font-weight:var(--hd-font-weight-medium);letter-spacing:normal}.ui-stat--inline-IpE0J .ui-stat__unit-mjHVk{font-size:inherit}.ui-stat__icon-MB8NU{position:absolute;inset-block-start:var(--hd-space-3);inset-inline-end:var(--hd-space-3);display:inline-flex;font-size:20px;color:var(--hd-text-3)}.ui-stat__label-kUX2m{font-family:var(--ui-stat-label-font, inherit);font-size:var(--ui-stat-label-size, var(--hd-type-caption-size));font-weight:var(--ui-stat-label-weight, var(--hd-font-weight-medium));letter-spacing:var(--ui-stat-label-tracking, normal);text-transform:var(--ui-stat-label-transform, none);color:var(--hd-text-2);padding-inline-end:var(--hd-space-6)}.ui-stat__value--6p13{display:flex;align-items:baseline;gap:var(--hd-space-1);font-family:var(--ui-stat-value-font, var(--hd-font-display));font-size:var(--hd-type-h2-size);font-weight:var(--ui-stat-value-weight, var(--hd-font-weight-bold));line-height:var(--hd-type-h2-line-height);letter-spacing:var(--ui-stat-value-tracking, var(--hd-type-h2-letter-spacing));color:var(--hd-text);font-variant-numeric:tabular-nums}.ui-stat--sm-XnK8p .ui-stat__value--6p13{font-size:var(--hd-type-h3-size)}.ui-stat__unit-mjHVk{font-family:var(--ui-stat-unit-font, inherit);font-size:var(--ui-stat-unit-size, var(--hd-type-small-size));font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2);letter-spacing:var(--ui-stat-unit-tracking, normal);text-transform:var(--ui-stat-unit-transform, none)}.ui-stat__delta-YKpOu{display:flex;align-items:center;gap:2px;align-self:flex-start;font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);font-variant-numeric:tabular-nums;color:var(--hd-text-2)}.ui-stat__delta-YKpOu svg{font-size:16px;flex-shrink:0}.ui-stat__delta--positive-1AUAM{color:var(--hd-success-fg)}.ui-stat__delta--negative--WWEP{color:var(--hd-danger-fg)}.ui-stat__description-Yvw6J{font-size:var(--hd-type-caption-size);color:var(--hd-text-3)}.ui-stat__srOnly-YKebA{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
@@ -1 +1 @@
1
- @layer ui{.ui-status-EcSH2{display:inline-flex;align-items:center;flex-shrink:0}.ui-status__dot-CeQ59{display:block;width:8px;height:8px;border-radius:var(--ui-radius-pill);background-color:currentColor}.ui-status__dot--neutral-qUw4d{color:var(--ui-text-2)}.ui-status__dot--success-oOq-v{color:var(--ui-ok-fg)}.ui-status__dot--warning-gYCr3{color:var(--ui-warn-fg)}.ui-status__dot--danger-ijrpR{color:var(--ui-bad-fg)}.ui-status__dot--pulsing-l97tj{animation:var(--ui-anim-pulse) var(--ui-duration-pulse) var(--ui-ease-out) infinite}@media (prefers-reduced-motion: reduce){.ui-status__dot--pulsing-l97tj{animation:none}}@media (forced-colors: active){.ui-status__dot-CeQ59{background-color:CanvasText;forced-color-adjust:none}}.ui-status__label-UXRIa{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
1
+ @layer ui{.ui-status-EcSH2{display:inline-flex;align-items:center;flex-shrink:0}.ui-status__dot-CeQ59{display:block;width:8px;height:8px;border-radius:var(--hd-radius-pill);background-color:currentColor}.ui-status__dot--neutral-qUw4d{color:var(--hd-text-2)}.ui-status__dot--success-oOq-v{color:var(--hd-success-fg)}.ui-status__dot--warning-gYCr3{color:var(--hd-warning-fg)}.ui-status__dot--danger-ijrpR{color:var(--hd-danger-fg)}.ui-status__dot--pulsing-l97tj{animation:var(--ui-anim-pulse) 1.6s var(--hd-ease-standard) infinite}@media (prefers-reduced-motion: reduce){.ui-status__dot--pulsing-l97tj{animation:none}}@media (forced-colors: active){.ui-status__dot-CeQ59{background-color:CanvasText;forced-color-adjust:none}}.ui-status__label-UXRIa{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
@@ -1 +1 @@
1
- @layer ui{.ui-steps-ntge1{display:flex;margin:0;padding:0;list-style:none}.ui-steps--horizontal-O-mkx{flex-direction:row;gap:var(--ui-space-2)}@media (max-width: 640px){.ui-steps--horizontal-O-mkx{flex-direction:column;gap:var(--ui-space-1)}}.ui-steps--vertical-agfwo{flex-direction:column;gap:var(--ui-space-1)}.ui-steps--static-t9EED .ui-steps__label-NSeFM{white-space:normal;overflow:visible;text-overflow:clip;color:var(--ui-text)}.ui-steps__item-GrU1x{display:flex;flex:1;min-width:0}.ui-steps--horizontal-O-mkx .ui-steps__item-GrU1x:not(:last-child):after{content:"";align-self:center;flex:1;height:1px;margin-inline:var(--ui-space-2);background-color:var(--ui-border)}@media (max-width: 640px){.ui-steps--horizontal-O-mkx .ui-steps__item-GrU1x:not(:last-child):after{display:none}}.ui-steps__button-XBsnS{display:flex;align-items:center;gap:var(--ui-space-3);flex:0 1 auto;min-width:0;padding:var(--ui-space-2);border:none;border-radius:var(--ui-radius-md);background:none;text-align:start;font-family:var(--ui-font-body);color:inherit}button.ui-steps__button-XBsnS{background-color:transparent;transition:background-color var(--ui-duration-fast) var(--ui-ease-out),translate var(--ui-duration-instant) var(--ui-ease-out)}button.ui-steps__button-XBsnS:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ui-surface-2)}button.ui-steps__button-XBsnS:active:not(:disabled):not([aria-disabled=true]){background-color:var(--ui-surface-3);translate:0 1px}@media (prefers-reduced-motion: reduce){button.ui-steps__button-XBsnS{transition:none}button.ui-steps__button-XBsnS:active:not(:disabled):not([aria-disabled=true]){translate:none}}button.ui-steps__button-XBsnS{cursor:pointer}button.ui-steps__button-XBsnS:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, -1px)}.ui-steps__marker-g-GLE{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:var(--ui-radius-pill);border:1px solid var(--ui-border-strong);background-color:var(--ui-surface);color:var(--ui-text-2);font-size:var(--ui-font-size-xs);font-weight:600;font-variant-numeric:tabular-nums}.ui-steps__item--done-mvOuN .ui-steps__marker-g-GLE{background-color:var(--ui-selected);border-color:var(--ui-selected);color:var(--ui-on-selected)}.ui-steps__item--current-Qzlal .ui-steps__marker-g-GLE{border-color:var(--ui-selected);box-shadow:inset 0 0 0 1px var(--ui-selected);color:var(--ui-text)}@media (forced-colors: active){.ui-steps__item--done-mvOuN .ui-steps__marker-g-GLE,.ui-steps__item--current-Qzlal .ui-steps__marker-g-GLE{background-color:Highlight;color:HighlightText;forced-color-adjust:none}}.ui-steps__text-Mkpkh{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-steps__label-NSeFM{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--ui-font-size-sm);font-weight:500;color:var(--ui-text-2)}.ui-steps__item--current-Qzlal .ui-steps__label-NSeFM{color:var(--ui-text);font-weight:600}.ui-steps__item--done-mvOuN .ui-steps__label-NSeFM{color:var(--ui-text)}.ui-steps__description-bQuNT{font-size:var(--ui-font-size-xs);color:var(--ui-text-3)}.ui-steps__status-wWJfP{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
1
+ @layer ui{.ui-steps-ntge1{display:flex;margin:0;padding:0;list-style:none}.ui-steps--horizontal-O-mkx{flex-direction:row;gap:var(--hd-space-2)}@media (max-width: 640px){.ui-steps--horizontal-O-mkx{flex-direction:column;gap:var(--hd-space-1)}}.ui-steps--vertical-agfwo{flex-direction:column;gap:var(--hd-space-1)}.ui-steps--static-t9EED .ui-steps__label-NSeFM{white-space:normal;overflow:visible;text-overflow:clip;color:var(--hd-text)}.ui-steps__item-GrU1x{display:flex;flex:1;min-width:0}.ui-steps--horizontal-O-mkx .ui-steps__item-GrU1x:not(:last-child):after{content:"";align-self:center;flex:1;height:1px;margin-inline:var(--hd-space-2);background-color:var(--hd-border)}@media (max-width: 640px){.ui-steps--horizontal-O-mkx .ui-steps__item-GrU1x:not(:last-child):after{display:none}}.ui-steps__button-XBsnS{display:flex;align-items:center;gap:var(--hd-space-3);flex:0 1 auto;min-width:0;padding:var(--hd-space-2);border:none;border-radius:var(--hd-radius-sm);background:none;text-align:start;font-family:var(--hd-font-body);color:inherit}button.ui-steps__button-XBsnS{background-color:transparent;transition:background-color var(--hd-duration-fast) var(--hd-ease-standard),translate var(--hd-duration-fast) var(--hd-ease-standard)}button.ui-steps__button-XBsnS:hover:not(:disabled):not([aria-disabled=true]){background-color:color-mix(in srgb,var(--hd-text) 8%,transparent)}button.ui-steps__button-XBsnS:active:not(:disabled):not([aria-disabled=true]){background-color:color-mix(in srgb,var(--hd-text) 14%,transparent);translate:0 1px}@media (prefers-reduced-motion: reduce){button.ui-steps__button-XBsnS{transition:none}button.ui-steps__button-XBsnS:active:not(:disabled):not([aria-disabled=true]){translate:none}}button.ui-steps__button-XBsnS{cursor:pointer}button.ui-steps__button-XBsnS:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, -1px)}.ui-steps__marker-g-GLE{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:var(--hd-radius-pill);border:1px solid var(--hd-border-strong);background-color:var(--hd-bg-surface);color:var(--hd-text-2);font-size:var(--hd-type-caption-size);font-weight:var(--hd-font-weight-semibold);font-variant-numeric:tabular-nums}.ui-steps__item--done-mvOuN .ui-steps__marker-g-GLE{background-color:var(--hd-primary);border-color:var(--hd-primary);color:var(--hd-on-primary)}.ui-steps__item--current-Qzlal .ui-steps__marker-g-GLE{border-color:var(--hd-primary);box-shadow:inset 0 0 0 1px var(--hd-primary);color:var(--hd-text)}@media (forced-colors: active){.ui-steps__item--done-mvOuN .ui-steps__marker-g-GLE,.ui-steps__item--current-Qzlal .ui-steps__marker-g-GLE{background-color:Highlight;color:HighlightText;forced-color-adjust:none}}.ui-steps__text-Mkpkh{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-steps__label-NSeFM{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--hd-type-small-size);font-weight:var(--hd-font-weight-medium);color:var(--hd-text-2)}.ui-steps__item--current-Qzlal .ui-steps__label-NSeFM{color:var(--hd-text);font-weight:var(--hd-font-weight-semibold)}.ui-steps__item--done-mvOuN .ui-steps__label-NSeFM{color:var(--hd-text)}.ui-steps__description-bQuNT{font-size:var(--hd-type-caption-size);color:var(--hd-text-3)}.ui-steps__status-wWJfP{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}}
@@ -1 +1 @@
1
- @layer ui{.ui-card-wkzhi{background-color:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius-lg)}@media (max-width: 640px){.ui-card-wkzhi{border-radius:var(--ui-radius-md)}}.ui-card-wkzhi{transition:border-color var(--ui-duration-fast) var(--ui-ease-out),box-shadow var(--ui-duration-fast) var(--ui-ease-out),transform var(--ui-duration-fast) var(--ui-ease-out)}.ui-card-wkzhi:hover{border-color:var(--ui-border-strong);box-shadow:var(--ui-shadow-md);transform:translateY(-2px)}.ui-card-wkzhi:active{transform:translateY(0);box-shadow:var(--ui-shadow-xs)}@media (prefers-reduced-motion: reduce){.ui-card-wkzhi{transition:none}.ui-card-wkzhi:hover,.ui-card-wkzhi:active{transform:none}}.ui-card-wkzhi{position:relative;display:flex;align-items:flex-start;gap:var(--ui-space-3);padding:var(--ui-space-4);height:100%}.ui-card__media--Lm-v{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:var(--ui-radius-sm);background-color:var(--ui-surface-2);color:var(--ui-text-2);font-size:var(--ui-icon-md)}.ui-card__content-8uHkm{display:flex;flex-direction:column;gap:var(--ui-space-1);flex:1;min-width:0}.ui-card__title-1EwbD{font-size:var(--ui-font-size-base);font-weight:600;line-height:var(--ui-leading-snug)}.ui-card__link-mhY-M{color:var(--ui-text);text-decoration:none}.ui-card__link-mhY-M:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--ui-ring-color);outline-offset:var(--ui-ring-offset, 2px)}.ui-card__link-mhY-M:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--ui-radius-lg)}.ui-card__description-3O0R7{font-size:var(--ui-font-size-sm);line-height:var(--ui-leading-normal);color:var(--ui-text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ui-card__meta-Xzk4q{position:relative;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:var(--ui-space-2)}}
1
+ @layer ui{.ui-card-wkzhi{background-color:var(--hd-bg-surface);border:1px solid var(--hd-border);border-radius:var(--hd-radius-md)}@media (max-width: 640px){.ui-card-wkzhi{border-radius:var(--hd-radius-sm)}}.ui-card-wkzhi{transition:border-color var(--hd-duration-fast) var(--hd-ease-standard),box-shadow var(--hd-duration-fast) var(--hd-ease-standard),transform var(--hd-duration-fast) var(--hd-ease-standard)}.ui-card-wkzhi:hover{border-color:var(--hd-border-strong);box-shadow:var(--hd-shadow-2);transform:translateY(-2px)}.ui-card-wkzhi:active{transform:translateY(0);box-shadow:var(--hd-shadow-1)}@media (prefers-reduced-motion: reduce){.ui-card-wkzhi{transition:none}.ui-card-wkzhi:hover,.ui-card-wkzhi:active{transform:none}}.ui-card-wkzhi{position:relative;display:flex;align-items:flex-start;gap:var(--hd-space-3);padding:var(--hd-space-4);height:100%}.ui-card__media--Lm-v{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:var(--hd-radius-xs);background-color:var(--hd-bg-raised);color:var(--hd-text-2);font-size:18px}.ui-card__content-8uHkm{display:flex;flex-direction:column;gap:var(--hd-space-1);flex:1;min-width:0}.ui-card__title-1EwbD{font-size:var(--hd-type-body-size);font-weight:var(--hd-font-weight-semibold);line-height:var(--hd-type-h4-line-height)}.ui-card__link-mhY-M{color:var(--hd-text);text-decoration:none}.ui-card__link-mhY-M:focus-visible{outline:var(--ui-ring-width, 2px) solid var(--hd-focus);outline-offset:var(--ui-ring-offset, 2px)}.ui-card__link-mhY-M:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--hd-radius-md)}.ui-card__description-3O0R7{font-size:var(--hd-type-small-size);line-height:var(--hd-type-body-line-height);color:var(--hd-text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ui-card__meta-Xzk4q{position:relative;z-index:var(--hd-z-sticky);display:flex;flex-wrap:wrap;align-items:center;gap:var(--hd-space-2)}}
@@ -3,7 +3,7 @@ import { InputHTMLAttributes, ReactNode } from 'react';
3
3
  * Anahtar (switch) — anında uygulanan aç/kapa.
4
4
  * @example <Switch label="Kampanya bildirimleri" hint="E-posta ile ayda en fazla iki…
5
5
  */
6
- declare const Switch: import('react').ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "role" | "type"> & {
6
+ declare const Switch: import('react').ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "role"> & {
7
7
  /** Anahtarın görünür etiketi. */
8
8
  label: ReactNode;
9
9
  /** Etiketin altındaki açıklama; `aria-describedby` ile bağlanır. */