@ecopages/radiant-ui 0.1.0-rc.7 → 0.1.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 (238) hide show
  1. package/README.md +11 -3
  2. package/dist/components/ui/alert/alert.d.ts +2 -4
  3. package/dist/components/ui/alert/alert.script.d.ts +25 -15
  4. package/dist/components/ui/autocomplete/autocomplete.css +1 -2
  5. package/dist/components/ui/autocomplete/autocomplete.d.ts +8 -3
  6. package/dist/components/ui/autocomplete/autocomplete.script.d.ts +29 -4
  7. package/dist/components/ui/avatar/avatar.css +10 -8
  8. package/dist/components/ui/avatar/avatar.d.ts +3 -1
  9. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +11 -11
  10. package/dist/components/ui/breadcrumb/breadcrumb.script.d.ts +10 -10
  11. package/dist/components/ui/calendar/calendar.css +10 -5
  12. package/dist/components/ui/calendar/calendar.script.d.ts +24 -21
  13. package/dist/components/ui/calendar/index.js +1 -1
  14. package/dist/components/ui/calendar/index.js.map +3 -3
  15. package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
  16. package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
  17. package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
  18. package/dist/components/ui/carousel/carousel.css +71 -18
  19. package/dist/components/ui/carousel/carousel.d.ts +8 -4
  20. package/dist/components/ui/carousel/carousel.script.d.ts +73 -40
  21. package/dist/components/ui/carousel/index.js +1 -1
  22. package/dist/components/ui/carousel/index.js.map +4 -4
  23. package/dist/components/ui/checkbox/checkbox.d.ts +11 -0
  24. package/dist/components/ui/checkbox/checkbox.script.d.ts +31 -8
  25. package/dist/components/ui/checkbox/index.js +1 -1
  26. package/dist/components/ui/checkbox/index.js.map +4 -4
  27. package/dist/components/ui/checkbox-group/checkbox-group.d.ts +4 -2
  28. package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +39 -20
  29. package/dist/components/ui/checkbox-group/index.js +1 -1
  30. package/dist/components/ui/checkbox-group/index.js.map +4 -4
  31. package/dist/components/ui/combobox/combobox.css +9 -1
  32. package/dist/components/ui/combobox/combobox.d.ts +12 -4
  33. package/dist/components/ui/combobox/combobox.script.d.ts +74 -25
  34. package/dist/components/ui/combobox/index.d.ts +2 -2
  35. package/dist/components/ui/combobox/index.js +1 -1
  36. package/dist/components/ui/combobox/index.js.map +4 -4
  37. package/dist/components/ui/cycle-toggle/cycle-toggle.d.ts +6 -2
  38. package/dist/components/ui/cycle-toggle/cycle-toggle.script.d.ts +35 -4
  39. package/dist/components/ui/cycle-toggle/index.js +1 -1
  40. package/dist/components/ui/cycle-toggle/index.js.map +3 -3
  41. package/dist/components/ui/date-field/date-field.css +13 -17
  42. package/dist/components/ui/date-field/date-field.d.ts +10 -8
  43. package/dist/components/ui/date-field/date-field.script.d.ts +35 -52
  44. package/dist/components/ui/date-field/index.js +1 -1
  45. package/dist/components/ui/date-field/index.js.map +4 -4
  46. package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
  47. package/dist/components/ui/date-input/date-input.css +50 -0
  48. package/dist/components/ui/date-input/date-input.d.ts +8 -0
  49. package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
  50. package/dist/components/ui/date-input/index.d.ts +2 -0
  51. package/dist/components/ui/date-input/index.js +2 -0
  52. package/dist/components/ui/date-input/index.js.map +7 -0
  53. package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
  54. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +11 -9
  55. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +42 -51
  56. package/dist/components/ui/date-range-picker/index.js +1 -1
  57. package/dist/components/ui/date-range-picker/index.js.map +4 -4
  58. package/dist/components/ui/dialog/dialog.css +18 -14
  59. package/dist/components/ui/dialog/dialog.d.ts +6 -0
  60. package/dist/components/ui/dialog/dialog.script.d.ts +43 -10
  61. package/dist/components/ui/dialog/index.js +1 -1
  62. package/dist/components/ui/dialog/index.js.map +4 -4
  63. package/dist/components/ui/disclosure/disclosure-group.script.d.ts +19 -3
  64. package/dist/components/ui/disclosure/disclosure.css +3 -6
  65. package/dist/components/ui/disclosure/disclosure.d.ts +23 -7
  66. package/dist/components/ui/disclosure/disclosure.script.d.ts +31 -7
  67. package/dist/components/ui/disclosure/index.d.ts +1 -1
  68. package/dist/components/ui/disclosure/index.js +1 -1
  69. package/dist/components/ui/disclosure/index.js.map +4 -4
  70. package/dist/components/ui/field/field-description.d.ts +1 -0
  71. package/dist/components/ui/field/field-error.d.ts +2 -2
  72. package/dist/components/ui/field/field.d.ts +4 -4
  73. package/dist/components/ui/field/field.script.d.ts +54 -24
  74. package/dist/components/ui/field/index.js +1 -1
  75. package/dist/components/ui/field/index.js.map +4 -4
  76. package/dist/components/ui/form/control-protocol.d.ts +38 -1
  77. package/dist/components/ui/form/form-context.d.ts +3 -0
  78. package/dist/components/ui/form/form.d.ts +6 -0
  79. package/dist/components/ui/form/form.script.d.ts +29 -12
  80. package/dist/components/ui/form/index.d.ts +2 -1
  81. package/dist/components/ui/form/index.js +1 -1
  82. package/dist/components/ui/form/index.js.map +4 -4
  83. package/dist/components/ui/grid/grid.d.ts +4 -3
  84. package/dist/components/ui/grid/grid.script.d.ts +19 -11
  85. package/dist/components/ui/hover-card/hover-card.css +12 -101
  86. package/dist/components/ui/hover-card/hover-card.d.ts +7 -2
  87. package/dist/components/ui/hover-card/hover-card.script.d.ts +36 -5
  88. package/dist/components/ui/hover-card/index.js +1 -1
  89. package/dist/components/ui/hover-card/index.js.map +4 -4
  90. package/dist/components/ui/input/index.js +1 -1
  91. package/dist/components/ui/input/index.js.map +4 -4
  92. package/dist/components/ui/input/input.css +1 -1
  93. package/dist/components/ui/knob/index.js +1 -1
  94. package/dist/components/ui/knob/index.js.map +3 -3
  95. package/dist/components/ui/knob/knob.css +6 -1
  96. package/dist/components/ui/knob/knob.d.ts +4 -4
  97. package/dist/components/ui/knob/knob.script.d.ts +55 -20
  98. package/dist/components/ui/label/index.js +1 -1
  99. package/dist/components/ui/label/index.js.map +4 -4
  100. package/dist/components/ui/label/label.d.ts +2 -1
  101. package/dist/components/ui/listbox/index.d.ts +2 -2
  102. package/dist/components/ui/listbox/index.js +1 -1
  103. package/dist/components/ui/listbox/index.js.map +4 -4
  104. package/dist/components/ui/listbox/listbox.css +14 -0
  105. package/dist/components/ui/listbox/listbox.d.ts +16 -2
  106. package/dist/components/ui/listbox/listbox.script.d.ts +55 -12
  107. package/dist/components/ui/menu-button/index.js +1 -1
  108. package/dist/components/ui/menu-button/index.js.map +4 -4
  109. package/dist/components/ui/menu-button/menu-button.d.ts +2 -2
  110. package/dist/components/ui/menu-button/menu-button.script.d.ts +30 -27
  111. package/dist/components/ui/menubar/index.js +1 -1
  112. package/dist/components/ui/menubar/index.js.map +4 -4
  113. package/dist/components/ui/menubar/menubar.script.d.ts +41 -15
  114. package/dist/components/ui/meter/index.js +1 -1
  115. package/dist/components/ui/meter/index.js.map +3 -3
  116. package/dist/components/ui/meter/meter.css +27 -2
  117. package/dist/components/ui/meter/meter.script.d.ts +19 -14
  118. package/dist/components/ui/navigation-menu/index.d.ts +1 -1
  119. package/dist/components/ui/navigation-menu/index.js +1 -1
  120. package/dist/components/ui/navigation-menu/index.js.map +4 -4
  121. package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
  122. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +34 -5
  123. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +93 -12
  124. package/dist/components/ui/number-field/index.js +1 -1
  125. package/dist/components/ui/number-field/index.js.map +4 -4
  126. package/dist/components/ui/number-field/number-field.css +1 -1
  127. package/dist/components/ui/number-field/number-field.d.ts +8 -19
  128. package/dist/components/ui/number-field/number-field.script.d.ts +30 -9
  129. package/dist/components/ui/pagination/index.d.ts +1 -1
  130. package/dist/components/ui/pagination/index.js +1 -1
  131. package/dist/components/ui/pagination/index.js.map +3 -3
  132. package/dist/components/ui/pagination/pagination.css +50 -13
  133. package/dist/components/ui/pagination/pagination.d.ts +33 -9
  134. package/dist/components/ui/pagination/pagination.script.d.ts +29 -9
  135. package/dist/components/ui/popover/index.js +1 -1
  136. package/dist/components/ui/popover/index.js.map +4 -4
  137. package/dist/components/ui/popover/popover.d.ts +17 -1
  138. package/dist/components/ui/popover/popover.script.d.ts +57 -9
  139. package/dist/components/ui/radio-group/index.js +1 -1
  140. package/dist/components/ui/radio-group/index.js.map +4 -4
  141. package/dist/components/ui/radio-group/radio-group.d.ts +2 -2
  142. package/dist/components/ui/radio-group/radio-group.script.d.ts +35 -16
  143. package/dist/components/ui/select/index.d.ts +2 -2
  144. package/dist/components/ui/select/index.js +1 -1
  145. package/dist/components/ui/select/index.js.map +4 -4
  146. package/dist/components/ui/select/select.css +8 -6
  147. package/dist/components/ui/select/select.d.ts +18 -9
  148. package/dist/components/ui/select/select.script.d.ts +74 -26
  149. package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
  150. package/dist/components/ui/shared/control-toggle.css +8 -4
  151. package/dist/components/ui/shared/field-label.d.ts +5 -0
  152. package/dist/components/ui/shared/listbox-host-controller.d.ts +41 -0
  153. package/dist/components/ui/shared/listbox-option.d.ts +4 -0
  154. package/dist/components/ui/shared/multi-value.d.ts +23 -1
  155. package/dist/components/ui/shared/numeric-range.d.ts +8 -0
  156. package/dist/components/ui/shared/popover.css +10 -99
  157. package/dist/components/ui/sidebar/index.d.ts +2 -1
  158. package/dist/components/ui/sidebar/index.js +1 -1
  159. package/dist/components/ui/sidebar/index.js.map +4 -4
  160. package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
  161. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +52 -31
  162. package/dist/components/ui/sidebar/sidebar.css +67 -61
  163. package/dist/components/ui/sidebar/sidebar.d.ts +9 -4
  164. package/dist/components/ui/sidebar/sidebar.script.d.ts +42 -20
  165. package/dist/components/ui/slider/index.js +1 -1
  166. package/dist/components/ui/slider/index.js.map +4 -4
  167. package/dist/components/ui/slider/slider.css +5 -5
  168. package/dist/components/ui/slider/slider.d.ts +20 -10
  169. package/dist/components/ui/slider/slider.script.d.ts +103 -27
  170. package/dist/components/ui/switch/index.js +1 -1
  171. package/dist/components/ui/switch/index.js.map +4 -4
  172. package/dist/components/ui/switch/switch.css +28 -22
  173. package/dist/components/ui/switch/switch.d.ts +13 -0
  174. package/dist/components/ui/switch/switch.script.d.ts +34 -8
  175. package/dist/components/ui/table/index.js +1 -1
  176. package/dist/components/ui/table/index.js.map +4 -4
  177. package/dist/components/ui/table/table.d.ts +9 -7
  178. package/dist/components/ui/table/table.script.d.ts +55 -12
  179. package/dist/components/ui/tabs/tabs.css +18 -12
  180. package/dist/components/ui/tabs/tabs.d.ts +7 -4
  181. package/dist/components/ui/tabs/tabs.script.d.ts +39 -9
  182. package/dist/components/ui/tag-group/index.js +1 -1
  183. package/dist/components/ui/tag-group/index.js.map +4 -4
  184. package/dist/components/ui/tag-group/tag-group.d.ts +19 -7
  185. package/dist/components/ui/tag-group/tag-group.script.d.ts +58 -10
  186. package/dist/components/ui/textarea/index.js +1 -1
  187. package/dist/components/ui/textarea/index.js.map +4 -4
  188. package/dist/components/ui/textarea/textarea.css +1 -1
  189. package/dist/components/ui/toast/index.js +1 -1
  190. package/dist/components/ui/toast/index.js.map +4 -4
  191. package/dist/components/ui/toast/toast.css +35 -32
  192. package/dist/components/ui/toast/toast.script.d.ts +17 -31
  193. package/dist/components/ui/toast/toaster.script.d.ts +24 -12
  194. package/dist/components/ui/toc/toc.script.d.ts +19 -8
  195. package/dist/components/ui/toolbar/toolbar.d.ts +5 -0
  196. package/dist/components/ui/toolbar/toolbar.script.d.ts +24 -4
  197. package/dist/components/ui/tooltip/index.js +1 -1
  198. package/dist/components/ui/tooltip/index.js.map +4 -4
  199. package/dist/components/ui/tooltip/tooltip.css +14 -94
  200. package/dist/components/ui/tooltip/tooltip.d.ts +7 -0
  201. package/dist/components/ui/tooltip/tooltip.script.d.ts +36 -6
  202. package/dist/components/ui/tree/tree.d.ts +4 -3
  203. package/dist/components/ui/tree/tree.script.d.ts +28 -15
  204. package/dist/components/ui/treegrid/treegrid.d.ts +5 -3
  205. package/dist/components/ui/treegrid/treegrid.script.d.ts +33 -14
  206. package/dist/components/ui/window-splitter/index.d.ts +1 -1
  207. package/dist/components/ui/window-splitter/index.js +1 -1
  208. package/dist/components/ui/window-splitter/index.js.map +3 -3
  209. package/dist/components/ui/window-splitter/window-splitter.d.ts +10 -1
  210. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +26 -8
  211. package/dist/index.d.ts +2 -0
  212. package/dist/index.js +1 -1
  213. package/dist/index.js.map +4 -4
  214. package/dist/lib/icons/check.d.ts +3 -0
  215. package/dist/lib/icons/chevron-down.d.ts +0 -1
  216. package/dist/lib/icons/index.d.ts +2 -0
  217. package/dist/lib/icons/x.d.ts +5 -0
  218. package/dist/lib/intl-date/index.d.ts +4 -2
  219. package/dist/lib/intl-date/segment-editing.d.ts +34 -0
  220. package/dist/lib/intl-date/segments.d.ts +26 -4
  221. package/dist/lib/non-empty.d.ts +6 -0
  222. package/dist/lib/unique-id.d.ts +11 -0
  223. package/dist/lib/viewport/breakpoints.d.ts +6 -0
  224. package/dist/lib/viewport/mobile-layout.d.ts +15 -0
  225. package/dist/styles/primitives.css +14 -11
  226. package/dist/styles/radiant-ui-core.css +10 -0
  227. package/dist/styles/radiant-ui.css +40 -11
  228. package/dist/styles/style-dependencies.json +38 -13
  229. package/dist/styles/styles.css +485 -252
  230. package/dist/styles/tailwind.css +40 -101
  231. package/dist/styles/tokens/presets/colors/aurora.css +2 -0
  232. package/dist/styles/tokens/presets/colors/basalt.css +2 -0
  233. package/dist/styles/tokens/presets/colors/ember.css +2 -0
  234. package/dist/styles/tokens/presets/colors/glacier.css +2 -0
  235. package/dist/styles/tokens/semantic.css +1 -0
  236. package/dist/styles/tokens/system.css +11 -3
  237. package/dist/styles/tokens/typography/default.css +8 -0
  238. package/package.json +27 -13
@@ -138,9 +138,6 @@ rui-sidebar {
138
138
  rui-sidebar .rui-sidebar > .rui-sidebar__pane {
139
139
  height: 100%;
140
140
  }
141
- rui-sidebar-trigger {
142
- display: none;
143
- }
144
141
  }
145
142
  @media (min-width: 1280px) {
146
143
  .rui-sidebar-provider__body {
@@ -570,70 +567,79 @@ rui-sidebar {
570
567
  height: var(--spacing-4, var(--space-4));
571
568
  flex-shrink: 0;
572
569
  }
573
- .rui-sidebar__trigger[data-sidebar-state='expanded']:not(.rui-sidebar__trigger--inset)
570
+ rui-sidebar-trigger[placement='header'] .rui-sidebar__trigger-glyph--collapse,
571
+ rui-sidebar-trigger:not([placement='header'], [placement='inset'])[data-sidebar-state='expanded']
574
572
  .rui-sidebar__trigger-glyph--collapse,
575
- .rui-sidebar__trigger--header .rui-sidebar__trigger-glyph--collapse {
576
- display: block;
577
- }
578
- .rui-sidebar__trigger[data-sidebar-state='collapsed']:not(.rui-sidebar__trigger--header):not(
579
- .rui-sidebar__trigger--inset
580
- )
581
- .rui-sidebar__trigger-glyph--expand {
582
- display: block;
583
- }
584
- .rui-sidebar__trigger--inset[data-sidebar-state='expanded'] .rui-sidebar__trigger-glyph--close,
585
- .rui-sidebar__trigger--inset[data-sidebar-state='collapsed'] .rui-sidebar__trigger-glyph--menu {
573
+ rui-sidebar-trigger:not([placement='header'], [placement='inset'])[data-sidebar-state='collapsed']
574
+ .rui-sidebar__trigger-glyph--expand,
575
+ rui-sidebar-trigger[placement='inset'][data-sidebar-state='expanded'] .rui-sidebar__trigger-glyph--close,
576
+ rui-sidebar-trigger[placement='inset'][data-sidebar-state='collapsed'] .rui-sidebar__trigger-glyph--menu {
586
577
  display: block;
587
578
  }
588
- :is(.rui-sidebar-provider:has(> rui-sidebar[data-collapsible='off']:not([data-mobile='true'])),
589
- .rui-sidebar-provider:has(
590
- > .rui-sidebar-provider__body > rui-sidebar[data-collapsible='off']:not([data-mobile='true'])
591
- )) rui-sidebar-trigger.rui-sidebar-trigger-placement--header, :is(.rui-sidebar-provider:has(> rui-sidebar[data-collapsible='off']:not([data-mobile='true'])),
592
- .rui-sidebar-provider:has(
593
- > .rui-sidebar-provider__body > rui-sidebar[data-collapsible='off']:not([data-mobile='true'])
594
- ))
595
- rui-sidebar-trigger[data-placement='header'], :is(.rui-sidebar-provider:has(> rui-sidebar[data-collapsible='off']:not([data-mobile='true'])),
596
- .rui-sidebar-provider:has(
597
- > .rui-sidebar-provider__body > rui-sidebar[data-collapsible='off']:not([data-mobile='true'])
598
- ))
599
- rui-sidebar-trigger.rui-sidebar-trigger-placement--inset, :is(.rui-sidebar-provider:has(> rui-sidebar[data-collapsible='off']:not([data-mobile='true'])),
600
- .rui-sidebar-provider:has(
601
- > .rui-sidebar-provider__body > rui-sidebar[data-collapsible='off']:not([data-mobile='true'])
602
- ))
603
- rui-sidebar-trigger[data-placement='inset'] {
604
- display: none;
605
- }
606
- :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='expanded']:not([data-mobile='true'])),
607
- .rui-sidebar-provider:has(
608
- > .rui-sidebar-provider__body > rui-sidebar[data-state='expanded']:not([data-mobile='true'])
609
- )) rui-sidebar-trigger.rui-sidebar-trigger-placement--inset, :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='expanded']:not([data-mobile='true'])),
610
- .rui-sidebar-provider:has(
611
- > .rui-sidebar-provider__body > rui-sidebar[data-state='expanded']:not([data-mobile='true'])
612
- ))
613
- rui-sidebar-trigger[data-placement='inset'] {
579
+ rui-sidebar-trigger[data-sidebar-mobile][data-sidebar-state='expanded'][placement='inset'],
580
+ rui-sidebar-trigger[data-sidebar-mobile][data-sidebar-state='collapsed'][placement='header'],
581
+ rui-sidebar-trigger[data-sidebar-mobile='false'][data-sidebar-collapsible='off'] {
614
582
  display: none;
615
583
  }
616
- :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='collapsed']:not([data-mobile='true'])),
617
- .rui-sidebar-provider:has(
618
- > .rui-sidebar-provider__body > rui-sidebar[data-state='collapsed']:not([data-mobile='true'])
619
- )) rui-sidebar-trigger.rui-sidebar-trigger-placement--header, :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='collapsed']:not([data-mobile='true'])),
620
- .rui-sidebar-provider:has(
621
- > .rui-sidebar-provider__body > rui-sidebar[data-state='collapsed']:not([data-mobile='true'])
622
- ))
623
- rui-sidebar-trigger[data-placement='header'] {
624
- display: none;
625
- }
626
- :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='expanded'][data-mobile='true']),
627
- .rui-sidebar-provider:has(> .rui-sidebar-provider__body > rui-sidebar[data-state='expanded'][data-mobile='true'])) rui-sidebar-trigger.rui-sidebar-trigger-placement--inset, :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='expanded'][data-mobile='true']),
628
- .rui-sidebar-provider:has(> .rui-sidebar-provider__body > rui-sidebar[data-state='expanded'][data-mobile='true']))
629
- rui-sidebar-trigger[data-placement='inset'] {
630
- display: none;
584
+ @media (min-width: 768px) {
585
+ rui-sidebar[data-collapsible='off'] rui-sidebar-trigger:not([data-sidebar-mobile]),
586
+ rui-sidebar[data-state='expanded'] rui-sidebar-trigger:not([data-sidebar-mobile])[placement='inset'],
587
+ rui-sidebar[data-state='collapsed'] rui-sidebar-trigger:not([data-sidebar-mobile])[placement='header'],
588
+ .rui-sidebar-provider:has(
589
+ > rui-sidebar:only-of-type[data-collapsible='off'],
590
+ > .rui-sidebar-provider__body > rui-sidebar:only-of-type[data-collapsible='off']
591
+ )
592
+ > :is(.rui-sidebar__inset, .rui-sidebar-provider__site-header)
593
+ > rui-sidebar-trigger:not([data-sidebar-mobile]),
594
+ .rui-sidebar-provider:has(
595
+ > rui-sidebar:only-of-type[data-collapsible='off'],
596
+ > .rui-sidebar-provider__body > rui-sidebar:only-of-type[data-collapsible='off']
597
+ )
598
+ > .rui-sidebar-provider__body
599
+ > .rui-sidebar__inset
600
+ > rui-sidebar-trigger:not([data-sidebar-mobile]),
601
+ .rui-sidebar-provider:has(
602
+ > rui-sidebar:only-of-type[data-state='expanded'],
603
+ > .rui-sidebar-provider__body > rui-sidebar:only-of-type[data-state='expanded']
604
+ )
605
+ > :is(.rui-sidebar__inset, .rui-sidebar-provider__site-header)
606
+ > rui-sidebar-trigger:not([data-sidebar-mobile])[placement='inset'],
607
+ .rui-sidebar-provider:has(
608
+ > rui-sidebar:only-of-type[data-state='expanded'],
609
+ > .rui-sidebar-provider__body > rui-sidebar:only-of-type[data-state='expanded']
610
+ )
611
+ > .rui-sidebar-provider__body
612
+ > .rui-sidebar__inset
613
+ > rui-sidebar-trigger:not([data-sidebar-mobile])[placement='inset'],
614
+ .rui-sidebar-provider:has(
615
+ > rui-sidebar:only-of-type[data-state='collapsed'],
616
+ > .rui-sidebar-provider__body > rui-sidebar:only-of-type[data-state='collapsed']
617
+ )
618
+ > :is(.rui-sidebar__inset, .rui-sidebar-provider__site-header)
619
+ > rui-sidebar-trigger:not([data-sidebar-mobile])[placement='header'],
620
+ .rui-sidebar-provider:has(
621
+ > rui-sidebar:only-of-type[data-state='collapsed'],
622
+ > .rui-sidebar-provider__body > rui-sidebar:only-of-type[data-state='collapsed']
623
+ )
624
+ > .rui-sidebar-provider__body
625
+ > .rui-sidebar__inset
626
+ > rui-sidebar-trigger:not([data-sidebar-mobile])[placement='header'] {
627
+ display: none;
628
+ }
631
629
  }
632
- :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='collapsed'][data-mobile='true']),
633
- .rui-sidebar-provider:has(> .rui-sidebar-provider__body > rui-sidebar[data-state='collapsed'][data-mobile='true'])) rui-sidebar-trigger.rui-sidebar-trigger-placement--header, :is(.rui-sidebar-provider:has(> rui-sidebar[data-state='collapsed'][data-mobile='true']),
634
- .rui-sidebar-provider:has(> .rui-sidebar-provider__body > rui-sidebar[data-state='collapsed'][data-mobile='true']))
635
- rui-sidebar-trigger[data-placement='header'] {
636
- display: none;
630
+ @media (max-width: 767px) {
631
+ rui-sidebar-trigger:not([data-sidebar-mobile])[placement='header'] {
632
+ display: none;
633
+ }
634
+ rui-sidebar:not([data-mobile='true']) .rui-sidebar__pane {
635
+ pointer-events: none;
636
+ width: 0px;
637
+ min-width: 0px;
638
+ overflow: hidden;
639
+ opacity: 0%;
640
+ width: 0;
641
+ flex: 0 0 auto;
642
+ }
637
643
  }
638
644
  .rui-sidebar[data-mobile='true'] {
639
645
  position: fixed;
@@ -1,8 +1,8 @@
1
1
  import { type JsxCustomElementAttributes, type JsxElementProps, type JsxRenderable } from '@ecopages/jsx';
2
2
  import type { RuiSidebar as RuiSidebarElement, RuiSidebarProps } from './sidebar.script';
3
3
  import './sidebar.script';
4
- import type { RuiSidebarTrigger as RuiSidebarTriggerElement, RuiSidebarTriggerProps } from './sidebar-trigger.script';
5
4
  import './sidebar-trigger.script';
5
+ export { RuiSidebarTrigger, type RuiSidebarTriggerViewProps } from './sidebar-trigger';
6
6
  export type RuiSidebarProviderProps = JsxElementProps<HTMLDivElement> & {
7
7
  /**
8
8
  * Layout context. `default` is the standard shell; `full` removes chrome;
@@ -125,6 +125,8 @@ export type RuiSidebarMenuButtonProps = RuiSidebarMenuButtonControlProps | RuiSi
125
125
  * collapses to icon mode, only this element remains visible; it must keep an
126
126
  * accessible name via `tooltip` or visible children.
127
127
  *
128
+ * Stamps `[data-ref="menu-button"]`.
129
+ *
128
130
  * @cssclass rui-sidebar__menu-button - Clickable menu surface (`<a>`/`<button>`).
129
131
  * @cssclass rui-sidebar__menu-button--active - Current-page marker (`aria-current="page"`).
130
132
  */
@@ -143,7 +145,10 @@ export declare function RuiSidebarInset({ children, class: className, ...props }
143
145
  export type RuiSidebarViewProps = JsxCustomElementAttributes<RuiSidebarElement, RuiSidebarProps & {
144
146
  id: string;
145
147
  }>;
148
+ /**
149
+ * Sidebar view. Stamps `[data-ref="root"]`, `[data-ref="pane"]`, optional
150
+ * `[data-ref="scrim"]` and `[data-ref="handle"]`.
151
+ *
152
+ * @cssclass rui-sidebar - Pane surface.
153
+ */
146
154
  export declare function RuiSidebar({ children, open, label, ...props }: RuiSidebarViewProps): JsxRenderable;
147
- export type RuiSidebarTriggerViewProps = JsxCustomElementAttributes<RuiSidebarTriggerElement, RuiSidebarTriggerProps>;
148
- export declare function RuiSidebarTrigger({ children, class: className, triggerLabel, placement, variant, size, ...props }: RuiSidebarTriggerViewProps): JsxRenderable;
149
- export {};
@@ -64,28 +64,45 @@ export type RuiSidebarResizeDetail = {
64
64
  /**
65
65
  * `<rui-sidebar>` — a resizable, collapsible side panel.
66
66
  *
67
- * The sidebar hosts pane content in the view-owned light-DOM shell. When the
68
- * parent supplies a `RuiSidebarRail` element (or the `collapsible` mode is not
69
- * `off`), the sidebar manages open/closed state, a focusable resize handle,
70
- * and keyboard navigation that follows the APG Window Splitter pattern.
67
+ * The custom element is a behavior host: it does not render pane content.
68
+ * Import the script and place light-DOM children that match the contract below,
69
+ * or use the `RuiSidebar*` view helpers which stamp the same targets.
71
70
  *
72
71
  * When `collapsible="off"` (the default), the pane stays open and exposes
73
72
  * a draggable resize handle. When `collapsible="icon"`, the pane collapses
74
73
  * to a narrow rail. When `collapsible="full"`, the pane is hidden until
75
74
  * toggled, and shown as an overlay drawer below the mobile breakpoint.
76
75
  *
77
- * The host reflects `data-state`, `data-collapsible`, `data-variant`,
78
- * `data-side`, and `data-mobile` so the stylesheet can drive every visual
79
- * mode without imperative JS.
76
+ * ## Light-DOM contract
80
77
  *
81
- * @see https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/
78
+ * Required:
79
+ * - `[data-ref="root"]` — inner shell. Host mirrors `data-state`, `data-collapsible`,
80
+ * `data-variant`, `data-side`, and `data-mobile` on the shell and the host.
81
+ * - `[data-ref="pane"]` — pane landmark. Host sets `aria-label`, `inert`, and
82
+ * `data-side` / `data-variant`.
83
+ *
84
+ * Optional:
85
+ * - `[data-ref="scrim"]` — mobile overlay dismiss control. Host toggles `hidden`.
86
+ * - `[data-ref="handle"]` — resize handle (`role="separator"`). Host toggles `hidden`
87
+ * and sets `aria-orientation`, `aria-valuenow` / `min` / `max`, and `aria-label`.
88
+ * - `[data-ref="menu-button"]` — menu links. When `matchActive` is set, host
89
+ * toggles `rui-sidebar__menu-button--active` and `aria-current="page"`.
90
+ *
91
+ * Host-owned on `<rui-sidebar>`: `role="complementary"`, `aria-label`, `data-state`,
92
+ * `data-collapsible`, `data-variant`, `data-side`, `data-mobile`, `data-pane-width`.
93
+ *
94
+ * Do not set `inert` on the pane or `aria-expanded` on the handle — the host owns those.
95
+ *
96
+ * Nested hosts: none. `rui-sidebar-trigger` controls this host via `toggle()`.
82
97
  *
98
+ * @see https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/
83
99
  * @element rui-sidebar
84
- * @fires rui-sidebar-toggle - Emitted on every open/closed transition.
85
- * `detail` is `{ open, state }`.
86
- * @fires rui-sidebar-resize - Emitted on every width change. `detail` is `{ width }`.
87
- * @fires rui-sidebar-mobile-change - Emitted when the host flips between
88
- * mobile drawer mode and inline mode. `detail` is `{ mobile: boolean }`.
100
+ * @fires rui-sidebar-toggle - Emitted on every open/closed transition; `detail` is `{ open, state }`.
101
+ * @fires rui-sidebar-resize - Emitted on every width change; `detail` is `{ width }`.
102
+ * @fires rui-sidebar-mobile-change - Emitted when the host flips between mobile drawer and inline mode; `detail` is `{ mobile: boolean }`.
103
+ *
104
+ * @remarks
105
+ * Public methods: `toggle()`, `syncActiveLinks()`. BEM classes live on the view helpers.
89
106
  */
90
107
  export declare class RuiSidebar extends RadiantElement {
91
108
  variant: RuiSidebarVariant;
@@ -121,7 +138,7 @@ export declare class RuiSidebar extends RadiantElement {
121
138
  private dragStartCoord;
122
139
  private dragStartSize;
123
140
  private navigationCleanups;
124
- /** @remarks Remains `false` until a projected active link has been scrolled. */
141
+ /** @remarks Set by the first update cycle so later cycles never scroll. */
125
142
  private didScrollActiveOnMount;
126
143
  /**
127
144
  * @remarks Captured once before defaults are applied. `setOpen` later assigns
@@ -134,22 +151,27 @@ export declare class RuiSidebar extends RadiantElement {
134
151
  * `mobileBreakpoint` before that microtask.
135
152
  */
136
153
  private mobileReady;
154
+ /**
155
+ * @remarks Skip `syncPresentation` here — it runs in `onConnected` after
156
+ * viewport and uncontrolled `open` defaults apply. An early sync used
157
+ * `defaultOpen` while `isMobile` was still false, which flashed the mobile
158
+ * drawer on docs-style layouts before the connect microtask closed it.
159
+ */
137
160
  connectedCallback(): void;
138
161
  protected onConnected(): void;
139
162
  /**
140
- * @remarks Light-DOM hydrate/update can recreate menu links after the connect
141
- * microtask sync. Re-apply active classes once the render commits.
163
+ * @remarks Re-renders that recreate menu links need their active classes
164
+ * back. The first cycle ends after `onConnected()`, so it covers the
165
+ * initial sync and `scrollActiveOnMount`.
142
166
  */
143
- hydrate(): void;
144
- update(): void;
145
- requestUpdate(): void;
167
+ protected updated(changed: ReadonlySet<string>): void;
146
168
  disconnectedCallback(): void;
147
- private syncActiveLinksAfterRender;
148
169
  /**
149
170
  * Keep host and inner shell `data-*` in sync. Host attrs drive
150
171
  * `:has(> rui-sidebar[...])`; inner `.rui-sidebar` drives visual styles.
151
172
  */
152
173
  private syncPresentation;
174
+ private syncHandlePresentation;
153
175
  private isOpen;
154
176
  /**
155
177
  * Optional `Number` props initialize to `0` when no attribute/default is set
@@ -1,2 +1,2 @@
1
- import{RadiantElement as be,customElement as Me,event as Ie,onEvent as k,onUpdated as we,prop as d,query as V}from"@ecopages/radiant";function Te(e){if(!Number.isFinite(e)||e<=0)return 0;let t=e.toString().match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);if(!t)return 0;let r=t[1]?.length??0,i=t[2]?Number(t[2]):0;return Math.min(15,Math.max(0,r-i))}function lt(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>=0?Math.min(15,Math.round(t)):Te(e)}function ot(e,t){return Number.isFinite(e)?e.toFixed(t):""}function ht(e,t,r){let i=Number.isFinite(e)?e:0,n=Number.isFinite(t)?t:100,a=Math.min(i,n),u=Math.max(i,n),s=Number.isFinite(r)&&r>0?r:1,m=u-a,v=g=>{let M=Number.isFinite(g)?g:a,I=a+Math.round((M-a)/s)*s;return Math.min(u,Math.max(a,I))};return{lowerBound:a,upperBound:u,step:s,clamp:v,ratioFor:g=>m===0?0:(v(g)-a)/m,valueFromRatio:g=>{let M=Math.min(1,Math.max(0,Number.isFinite(g)?g:0));return v(a+M*m)}}}function mt(e,t,r){switch(r){case"ArrowRight":case"ArrowUp":return e.clamp(t+e.step);case"ArrowLeft":case"ArrowDown":return e.clamp(t-e.step);case"Home":return e.lowerBound;case"End":return e.upperBound;case"PageUp":return e.clamp(t+e.step*10);case"PageDown":return e.clamp(t-e.step*10);default:return}}var ct,dt,gt,bt,ft,pt,_t,Tt,vt,xt,yt,Vt,Mt,It,wt,Pt,Rt,St,At,Et,Dt,Ct,kt,Ft,Lt,jt,Ot,Bt,Nt,Ut,$t,zt,Gt,Kt,Xt,qt,Yt,Jt,Qt,Wt,Zt,Ht,te,ee,ie,re,ae,ne,se,ue,le,oe,he,me,ce,de;function ve(e,t,r,i,n,a){var u,s,m,v,g,M,I,F=Symbol.metadata||Symbol.for("Symbol.metadata"),J=Object.defineProperty,U=Object.create,Q=[U(null),U(null)],W=t.length;function L(l,x,_){return function(o,h){x&&(h=o,o=e);for(var y=0;y<l.length;y++)h=l[y].apply(o,_?[h]:[]);return _?h:o}}function R(l,x,_,o){if(typeof l!="function"&&(o||l!==void 0))throw new TypeError(x+" must "+(_||"be")+" a function"+(o?"":" or undefined"));return l}function Z(l,x,_,o,h,y,A,T,w,P,tt){function $(b){if(!tt(b))throw new TypeError("Attempted to access private element on non-instance")}var z=[].concat(x[0]),et=x[3],G=!A,D=h===1,it=h===3,rt=h===4,j=h===2;function O(b,E,st){return function(N,ut){return E&&(ut=N,N=l),st&&st(N),c[b].call(N,ut)}}if(!G){var c={},K=[],S=it?"get":rt||D?"set":"value";if(w?(P||D?c={get:ge(function(){return et(this)},o,"get"),set:function(b){x[4](this,b)}}:c[S]=et,P||ge(c[S],o,j?"":S)):P||(c=Object.getOwnPropertyDescriptor(l,o)),!P&&!w){if((s=Q[+T][o])&&(s^h)!==7)throw Error("Decorating two elements with the same name ("+c[S].name+") is not supported yet");Q[+T][o]=h<3?1:h}}for(var f=l,B=z.length-1;B>=0;B-=_?2:1){var at=R(z[B],"A decorator","be",!0),nt=_?z[B-1]:void 0,X={},C={kind:["field","accessor","method","getter","setter","class"][h],name:o,metadata:u,addInitializer:function(b,E){if(b.v)throw new TypeError("attempted to call addInitializer after decoration was finished");R(E,"An initializer","be",!0),y.push(E)}.bind(null,X)};if(G)s=at.call(nt,f,C),X.v=1,R(s,"class decorators","return")&&(f=s);else if(C.static=T,C.private=w,s=C.access={has:w?tt.bind():function(b){return o in b}},rt||(s.get=w?j?function(b){return $(b),c.value}:O("get",0,$):function(b){return b[o]}),j||it||(s.set=w?O("set",0,$):function(b,E){b[o]=E}),f=at.call(nt,D?{get:c.get,set:c.set}:c[S],C),X.v=1,D){if(typeof f=="object"&&f)(s=R(f.get,"accessor.get"))&&(c.get=s),(s=R(f.set,"accessor.set"))&&(c.set=s),(s=R(f.init,"accessor.init"))&&K.unshift(s);else if(f!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else R(f,(P?"field":"method")+" decorators","return")&&(P?K.unshift(f):c[S]=f)}return h<2&&A.push(L(K,T,1),L(y,T,0)),P||G||(w?D?A.splice(-1,0,O("get",T),O("set",T)):A.push(j?c[S]:R.call.bind(c[S])):J(l,o,c)),f}function H(l){return J(l,F,{configurable:!0,enumerable:!0,value:u})}return a!==void 0&&(u=a[F]),u=U(u??null),g=[],M=function(l){l&&g.push(L(l))},I=function(l,x){for(var _=0;_<r.length;_++){var o=r[_],h=o[1],y=7&h;if((8&h)==l&&!y==x){var A=o[2],T=!!o[3],w=16&h;Z(l?e:e.prototype,o,w,T?"#"+A:xe(A),y,y<2?[]:l?v=v||[]:m=m||[],g,!!l,T,x,l&&T?function(P){return Ve(P)===e}:n)}}},I(8,0),I(0,0),I(8,1),I(0,1),M(m),M(v),s=g,W||H(e),{e:s,get c(){var l=[];return W&&[H(e=Z(e,[t],i,e.name,5,l)),L(l,1)]}}}function xe(e){var t=ye(e,"string");return typeof t=="symbol"?t:t+""}function ye(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,t||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function ge(e,t,r){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:r?r+" "+t:t})}catch{}return e}function Ve(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var pe,fe=class extends be{static{({e:[gt,bt,ft,pt,_t,Tt,vt,xt,yt,Vt,Mt,It,wt,Pt,Rt,St,At,Et,Dt,Ct,kt,Ft,Lt,jt,Ot,Bt,Nt,Ut,$t,zt,Gt,Kt,Xt,qt,Yt,Jt,Qt,Wt,Zt,Ht,te,ee,ie,re,ae,ne,se,ue,le,oe,he,me,ce,de,ct],c:[pe,dt]}=ve(this,[Me("rui-slider")],[[d({type:String,defaultValue:"single"}),0,"variant"],[d({type:String,defaultValue:"horizontal"}),0,"orientation"],[d({type:Number,reflect:!0,defaultValue:50}),0,"value"],[d({type:Number,reflect:!0,attribute:"range-min",defaultValue:25}),0,"rangeMin"],[d({type:Number,reflect:!0,attribute:"range-max",defaultValue:75}),0,"rangeMax"],[d({type:Number,defaultValue:0}),0,"min"],[d({type:Number,defaultValue:100}),0,"max"],[d({type:Number,defaultValue:1}),0,"step"],[d({type:Number,attribute:"value-precision",defaultValue:Number.NaN}),0,"valuePrecision"],[d({type:Number,defaultValue:0}),0,"minDistance"],[d({type:Boolean,reflect:!0,defaultValue:!1}),0,"disabled"],[d({type:Boolean,attribute:"read-only",reflect:!0,defaultValue:!1}),0,"readOnly"],[d({type:String,defaultValue:""}),0,"label"],[d({type:String,defaultValue:""}),0,"name"],[d({type:Boolean,attribute:"show-value",defaultValue:!1}),0,"showValue"],[d({type:Boolean,attribute:"value-title",defaultValue:!1}),0,"valueTitle"],[Ie({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[V({ref:"input"}),0,"inputTarget"],[V({ref:"maxInput"}),0,"maxInputTarget"],[V({ref:"root"}),0,"rootTarget"],[V({ref:"header"}),0,"headerTarget"],[V({ref:"label"}),0,"labelTarget"],[V({ref:"rangeTrack"}),0,"rangeTrack"],[V({ref:"value"}),0,"valueTarget"],[V({ref:"singleThumb"}),0,"singleThumb"],[V({ref:"rangeMinThumb"}),0,"rangeMinThumb"],[V({ref:"rangeMaxThumb"}),0,"rangeMaxThumb"],[we(["value","rangeMin","rangeMax","min","max","step","valuePrecision","minDistance","variant","orientation","disabled","readOnly","label","name","showValue","valueTitle"]),2,"onPropsUpdated"],[k({ref:"rangeTrack",type:"pointerdown"}),2,"onPointerDown"],[k({document:!0,type:"pointermove"}),2,"onPointerMove"],[k({document:!0,type:"pointerup"}),2,"onPointerUp"],[k({document:!0,type:"pointercancel"}),2,"onPointerCancel"],[k({selector:"[data-thumb]",type:"keydown"}),2,"onThumbKeydown"]],0,void 0,be))}variant=(ct(this),gt(this));orientation=(bt(this),ft(this));value=(pt(this),_t(this));rangeMin=(Tt(this),vt(this));rangeMax=(xt(this),yt(this));min=(Vt(this),Mt(this));max=(It(this),wt(this));step=(Pt(this),Rt(this));valuePrecision=(St(this),At(this));minDistance=(Et(this),Dt(this));disabled=(Ct(this),kt(this));readOnly=(Ft(this),Lt(this));label=(jt(this),Ot(this));name=(Bt(this),Nt(this));showValue=(Ut(this),$t(this));valueTitle=(zt(this),Gt(this));changeEvent=(Kt(this),Xt(this));inputTarget=(qt(this),Yt(this));maxInputTarget=(Jt(this),Qt(this));rootTarget=(Wt(this),Zt(this));headerTarget=(Ht(this),te(this));labelTarget=(ee(this),ie(this));rangeTrack=(re(this),ae(this));valueTarget=(ne(this),se(this));singleThumb=(ue(this),le(this));rangeMinThumb=(oe(this),he(this));rangeMaxThumb=(me(this),ce(this));activeThumb=(de(this),null);activePointerId=null;pending=null;lastEmitted="";onConnected(){this.syncChrome(),this.syncValues(this.committedValues())}onPropsUpdated(){this.activeThumb||(this.syncChrome(),this.syncValues(this.committedValues()))}get isRange(){return this.variant==="range"}get isVertical(){return this.orientation==="vertical"}get numericRange(){return ht(this.min,this.max,this.step)}get resolvedValuePrecision(){return lt(this.step,this.valuePrecision)}formatValue(t){return ot(t,this.resolvedValuePrecision)}formatValues(t){return t.length===2?`${this.formatValue(t[0])} \u2013 ${this.formatValue(t[1])}`:this.formatValue(t[0])}get defaultValueTarget(){return this.querySelector("[data-default-value]")}thumbFor(t){return t==="value"?this.singleThumb:t==="min"?this.rangeMinThumb:this.rangeMaxThumb}parseThumb(t){return this.isRange?t==="min"||t==="max"?t:null:t==="value"?t:null}constrainPair(t,r,i){let n=this.numericRange,a=n.clamp(t),u=n.clamp(r);a>u&&([a,u]=[u,a]);let s=Math.max(0,this.minDistance);return u-a<s&&(i==="min"?a=n.clamp(u-s):u=n.clamp(a+s)),[a,u]}committedValues(){return this.isRange?this.constrainPair(this.rangeMin,this.rangeMax):[this.numericRange.clamp(this.value)]}liveValues(){return this.pending??this.committedValues()}changeDetail(t){return t.length===2?{values:[t[0],t[1]]}:{value:t[0]}}emitIfChanged(t){let r=t.join(",");r!==this.lastEmitted&&(this.lastEmitted=r,this.changeEvent.emit(this.changeDetail(t)))}reflectValues(t){if(t.length===2){this.rangeMin!==t[0]&&(this.rangeMin=t[0]),this.rangeMax!==t[1]&&(this.rangeMax=t[1]);return}this.value!==t[0]&&(this.value=t[0])}syncValues(t){this.paint(t),this.reflectValues(t)}syncChrome(){this.syncRootChrome(),this.syncThumbChrome()}syncRootChrome(){let t=!!this.valueTarget&&(!this.defaultValueTarget||this.showValue);this.rootTarget?.classList.toggle("rui-slider--single",!this.isRange),this.rootTarget?.classList.toggle("rui-slider--range",this.isRange),this.rootTarget?.classList.toggle("rui-slider--vertical",this.isVertical),this.labelTarget?.toggleAttribute("hidden",!this.label),this.labelTarget&&(this.labelTarget.textContent=this.label),this.defaultValueTarget?.toggleAttribute("hidden",!this.showValue),this.headerTarget?.toggleAttribute("hidden",!this.label&&!t)}syncThumbChrome(){let t=this.disabled?-1:0,r=this.isVertical?"vertical":"horizontal",i=this.numericRange;for(let{id:n,label:a,visible:u}of this.getThumbChrome()){let s=this.thumbFor(n);s&&(s.toggleAttribute("hidden",!u),s.toggleAttribute("disabled",this.disabled||!u),s.setAttribute("tabindex",String(u?t:-1)),s.setAttribute("aria-label",a),s.setAttribute("aria-orientation",r),s.setAttribute("aria-valuemin",String(i.lowerBound)),s.setAttribute("aria-valuemax",String(i.upperBound)),s.setAttribute("aria-readonly",String(this.readOnly)))}}getThumbChrome(){let t=this.isRange;return[{id:"value",label:this.label||"Value",visible:!t},{id:"min",label:this.label?`${this.label} minimum`:"Minimum value",visible:t},{id:"max",label:this.label?`${this.label} maximum`:"Maximum value",visible:t}]}paint(t){let r=this.numericRange,i=t[0],n=t.length===2?t[1]:t[0],a=`${r.ratioFor(i)*100}%`,u=`${r.ratioFor(n)*100}%`,s=`${(r.ratioFor(n)-r.ratioFor(i))*100}%`,m=this.rangeTrack;m?.style.setProperty("--rui-slider-fill-start",t.length===2?a:"0%"),m?.style.setProperty("--rui-slider-fill-size",t.length===2?s:u),m?.style.setProperty("--rui-slider-value",a),m?.style.setProperty("--rui-slider-min",a),m?.style.setProperty("--rui-slider-max",u),this.singleThumb&&(this.singleThumb.setAttribute("aria-valuenow",String(i)),this.singleThumb.setAttribute("aria-valuetext",this.formatValue(i))),this.rangeMinThumb&&(this.rangeMinThumb.setAttribute("aria-valuenow",String(i)),this.rangeMinThumb.setAttribute("aria-valuetext",this.formatValue(i)),this.rangeMinThumb.setAttribute("aria-valuemax",String(n))),this.rangeMaxThumb&&(this.rangeMaxThumb.setAttribute("aria-valuemin",String(i)),this.rangeMaxThumb.setAttribute("aria-valuenow",String(n)),this.rangeMaxThumb.setAttribute("aria-valuetext",this.formatValue(n))),this.valueTarget&&(this.valueTarget.textContent=this.formatValues(t)),this.syncInputs(t),this.syncValueTitle(t)}syncInputs(t){if(this.inputTarget&&(this.inputTarget.disabled=this.disabled,this.inputTarget.readOnly=this.readOnly,this.inputTarget.value=String(t[0]),this.name?this.inputTarget.name=this.name:this.inputTarget.removeAttribute("name")),!!this.maxInputTarget){if(this.maxInputTarget.disabled=this.disabled,this.maxInputTarget.readOnly=this.readOnly,t.length===2){this.maxInputTarget.value=String(t[1]),this.name?this.maxInputTarget.name=`${this.name}-max`:this.maxInputTarget.removeAttribute("name");return}this.maxInputTarget.value="",this.maxInputTarget.removeAttribute("name")}}syncValueTitle(t){let r=[[this.inputTarget,"input"],[this.maxInputTarget,"maxInput"],[this.rangeTrack,"track"],[this.singleThumb,"value"],[this.rangeMinThumb,"min"],[this.rangeMaxThumb,"max"]],i=this.getValueTitles(t);for(let[n,a]of r){let u=i[a];u?n?.setAttribute("title",u):n?.removeAttribute("title")}}getValueTitles(t){if(!this.valueTitle)return{};if(t.length===1){let n=this.formatValue(t[0]);return{input:n,value:n}}let[r,i]=t;return{input:this.formatValue(r),maxInput:this.formatValue(i),min:this.formatValue(r),max:this.formatValue(i),track:this.formatValues(t)}}valueFromPointer(t){let r=this.rangeTrack;if(!r)return this.numericRange.lowerBound;let i=r.getBoundingClientRect();if(i.width===0||i.height===0)return this.numericRange.lowerBound;let n=this.isVertical?1-(t.clientY-i.top)/i.height:(t.clientX-i.left)/i.width;return this.numericRange.valueFromRatio(n)}nearestThumb(t){if(!this.isRange)return"value";let[r,i]=this.liveValues();return Math.abs(t-r)<=Math.abs(t-i)?"min":"max"}moveThumb(t,r){if(this.activeThumb=t,this.isRange){let n=this.pending??this.committedValues();this.pending=this.constrainPair(t==="min"?r:n[0],t==="max"?r:n[1],t)}else this.pending=[this.numericRange.clamp(r)];let i=this.pending;return this.paint(i),this.emitIfChanged(i),i}commit(){let t=this.liveValues();this.pending=null,this.activeThumb=null,this.activePointerId=null,this.syncValues(t)}revert(){this.pending=null,this.activeThumb=null,this.activePointerId=null,this.lastEmitted=this.committedValues().join(","),this.paint(this.committedValues())}releasePointer(t){let r=this.rangeTrack;r?.hasPointerCapture(t.pointerId)&&r.releasePointerCapture(t.pointerId)}onPointerDown(t){if(t.button!==0||this.disabled||this.readOnly)return;let r=t.target.closest("[data-thumb]"),i=this.parseThumb(r?.getAttribute("data-thumb")??null),n=this.valueFromPointer(t),a=i??this.nearestThumb(n);this.pending=this.committedValues(),this.lastEmitted=this.pending.join(","),this.activeThumb=a,this.activePointerId=t.pointerId,this.rangeTrack?.setPointerCapture(t.pointerId),this.thumbFor(a)?.focus(),i||this.moveThumb(a,n),t.preventDefault()}onPointerMove(t){!this.activeThumb||t.pointerId!==this.activePointerId||this.moveThumb(this.activeThumb,this.valueFromPointer(t))}onPointerUp(t){!this.activeThumb||t.pointerId!==this.activePointerId||(this.releasePointer(t),this.commit())}onPointerCancel(t){!this.activeThumb||t.pointerId!==this.activePointerId||(this.releasePointer(t),this.revert())}onThumbKeydown(t){if(this.disabled||this.readOnly)return;let r=t.target.closest("[data-thumb]"),i=this.parseThumb(r?.getAttribute("data-thumb")??null);if(!i)return;let n=this.committedValues(),a=i==="max"?n[n.length-1]:n[0],u=mt(this.numericRange,a,t.key);u!=null&&(t.preventDefault(),this.lastEmitted=n.join(","),this.moveThumb(i,u),this.commit())}static{dt()}};import{jsx as p,jsxs as Y}from"@ecopages/jsx/jsx-runtime";function q(...e){return e.filter(Boolean).join(" ")}function _e({children:e,class:t,...r}){return p("span",{...r,class:q("rui-slider__value",t),"data-ref":"value","aria-hidden":"true",children:e})}function Pe({disabled:e,min:t,max:r,label:i,variant:n}){let a=n!=="range";return p("div",{class:"rui-slider__range",children:Y("div",{class:"rui-slider__range-track","data-ref":"rangeTrack",children:[p("div",{class:"rui-slider__range-fill","data-ref":"rangeFill"}),p("button",{type:"button",class:"rui-slider__thumb","data-ref":"singleThumb","data-thumb":"value",role:"slider",tabindex:e||!a?-1:0,"aria-label":i||"Value","aria-valuemin":t,"aria-valuemax":r,disabled:e||!a,hidden:!a}),p("button",{type:"button",class:"rui-slider__thumb","data-ref":"rangeMinThumb","data-thumb":"min",role:"slider",tabindex:e||a?-1:0,"aria-label":i?`${i} minimum`:"Minimum value","aria-valuemin":t,"aria-valuemax":r,disabled:e||a,hidden:a}),p("button",{type:"button",class:"rui-slider__thumb","data-ref":"rangeMaxThumb","data-thumb":"max",role:"slider",tabindex:e||a?-1:0,"aria-label":i?`${i} maximum`:"Maximum value","aria-valuemin":t,"aria-valuemax":r,disabled:e||a,hidden:a})]})})}function Re({values:e,variant:t="single",orientation:r="horizontal",label:i,showValue:n=!1,valueTitle:a=!1,disabled:u,name:s,min:m,max:v,children:g,...M}){let I=g??p(_e,{"data-default-value":!0,hidden:!n}),F=!!g||n;return p("rui-slider",{...M,variant:t,orientation:r,label:i,showValue:n,valueTitle:a,disabled:u,name:s,min:m,max:v,rangeMin:e?.[0],rangeMax:e?.[1],children:Y("div",{class:q("rui-slider",t==="range"?"rui-slider--range":"rui-slider--single",r==="vertical"&&"rui-slider--vertical"),"data-ref":"root",children:[Y("div",{class:"rui-slider__header","data-ref":"header",hidden:!i&&!F,children:[p("span",{class:"rui-slider__label","data-ref":"label",hidden:!i,children:i}),I]}),p(Pe,{disabled:u,min:m,max:v,label:i,variant:t}),p("input",{type:"hidden","data-ref":"input",name:s||void 0}),p("input",{type:"hidden","data-ref":"maxInput"})]})})}export{Re as RuiSlider,pe as RuiSliderElement,_e as RuiSliderValue};
1
+ import{bindTo as le,customElement as Me,event as we,onEvent as C,onUpdated as Pe,prop as T,query as D}from"@ecopages/radiant";import{FormAssociatedElement as he}from"@ecopages/radiant/form-associated-element";function ft(e){return e?e.split(",").map(t=>Number(t.trim())).filter(t=>Number.isFinite(t)):[]}function Te(e){return e.join(",")}var gt={fromAttribute:e=>ft(e),toAttribute:e=>e.length>0?Te(e):null,fromProperty:e=>Array.isArray(e)?e.map(Number).filter(t=>Number.isFinite(t)):typeof e=="number"&&Number.isFinite(e)?[e]:typeof e=="string"?ft(e):[]};function xe(e){if(!Number.isFinite(e)||e<=0)return 0;let t=e.toString().match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);if(!t)return 0;let i=t[1]?.length??0,r=t[2]?Number(t[2]):0;return Math.min(15,Math.max(0,i-r))}function K(e,t){return typeof t=="number"&&Number.isFinite(t)&&t>=0?Math.min(15,Math.round(t)):xe(e)}function E(e,t){return Number.isFinite(e)?e.toFixed(t):""}function bt(e,t,i){if(Object.is(e,t))return!0;if(!Number.isFinite(e)||!Number.isFinite(t))return!1;let r=Number.isFinite(i)&&i>0?i:1,a=Number.EPSILON*Math.max(Math.abs(e),Math.abs(t),r)*4;return Math.abs(e-t)<=Math.min(a,r*1e-6)}function q(e,t,i){let r=Number.isFinite(e)?e:0,a=Number.isFinite(t)?t:100,n=Math.min(r,a),u=Math.max(r,a),s=Number.isFinite(i)&&i>0?i:1,h=u-n,v=c=>{let g=Number.isFinite(c)?c:n,_=n+Math.round((g-n)/s)*s;return Math.min(u,Math.max(n,_))};return{lowerBound:n,upperBound:u,step:s,clamp:v,ratioFor:c=>h===0?0:(v(c)-n)/h,valueFromRatio:c=>{let g=Math.min(1,Math.max(0,Number.isFinite(c)?c:0));return v(n+g*h)}}}function pt(e,t,i){switch(i){case"ArrowRight":case"ArrowUp":return e.clamp(t+e.step);case"ArrowLeft":case"ArrowDown":return e.clamp(t-e.step);case"Home":return e.lowerBound;case"End":return e.upperBound;case"PageUp":return e.clamp(t+e.step*10);case"PageDown":return e.clamp(t-e.step*10);default:return}}var vt,_t,Tt,xt,yt,Vt,At,St,Mt,wt,Pt,Rt,Et,Dt,It,Ft,Nt,Lt,kt,Ct,jt,Ot,Ut,Bt,$t,zt,Gt,Xt,Kt,qt,Yt,Jt,Qt,Wt,Zt,Ht,te,ee,ie,re,ne,ae,se,ue;function ye(e,t,i,r,a,n){var u,s,h,v,c,g,_,I=Symbol.metadata||Symbol.for("Symbol.metadata"),j=Object.defineProperty,b=Object.create,O=[b(null),b(null)],U=t.length;function B(o,A,x){return function(l,m){A&&(m=l,l=e);for(var S=0;S<o.length;S++)m=o[S].apply(l,x?[m]:[]);return x?m:l}}function P(o,A,x,l){if(typeof o!="function"&&(l||o!==void 0))throw new TypeError(A+" must "+(x||"be")+" a function"+(l?"":" or undefined"));return o}function nt(o,A,x,l,m,S,F,y,M,w,st){function Y(f){if(!st(f))throw new TypeError("Attempted to access private element on non-instance")}var J=[].concat(A[0]),ut=A[3],Q=!F,L=m===1,ot=m===3,lt=m===4,$=m===2;function z(f,N,mt){return function(X,dt){return N&&(dt=X,X=o),mt&&mt(X),d[f].call(X,dt)}}if(!Q){var d={},W=[],R=ot?"get":lt||L?"set":"value";if(M?(w||L?d={get:oe(function(){return ut(this)},l,"get"),set:function(f){A[4](this,f)}}:d[R]=ut,w||oe(d[R],l,$?"":R)):w||(d=Object.getOwnPropertyDescriptor(o,l)),!w&&!M){if((s=O[+y][l])&&(s^m)!==7)throw Error("Decorating two elements with the same name ("+d[R].name+") is not supported yet");O[+y][l]=m<3?1:m}}for(var p=o,G=J.length-1;G>=0;G-=x?2:1){var ht=P(J[G],"A decorator","be",!0),ct=x?J[G-1]:void 0,Z={},k={kind:["field","accessor","method","getter","setter","class"][m],name:l,metadata:u,addInitializer:function(f,N){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");P(N,"An initializer","be",!0),S.push(N)}.bind(null,Z)};if(Q)s=ht.call(ct,p,k),Z.v=1,P(s,"class decorators","return")&&(p=s);else if(k.static=y,k.private=M,s=k.access={has:M?st.bind():function(f){return l in f}},lt||(s.get=M?$?function(f){return Y(f),d.value}:z("get",0,Y):function(f){return f[l]}),$||ot||(s.set=M?z("set",0,Y):function(f,N){f[l]=N}),p=ht.call(ct,L?{get:d.get,set:d.set}:d[R],k),Z.v=1,L){if(typeof p=="object"&&p)(s=P(p.get,"accessor.get"))&&(d.get=s),(s=P(p.set,"accessor.set"))&&(d.set=s),(s=P(p.init,"accessor.init"))&&W.unshift(s);else if(p!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else P(p,(w?"field":"method")+" decorators","return")&&(w?W.unshift(p):d[R]=p)}return m<2&&F.push(B(W,y,1),B(S,y,0)),w||Q||(M?L?F.splice(-1,0,z("get",y),z("set",y)):F.push($?d[R]:P.call.bind(d[R])):j(o,l,d)),p}function at(o){return j(o,I,{configurable:!0,enumerable:!0,value:u})}return n!==void 0&&(u=n[I]),u=b(u??null),c=[],g=function(o){o&&c.push(B(o))},_=function(o,A){for(var x=0;x<i.length;x++){var l=i[x],m=l[1],S=7&m;if((8&m)==o&&!S==A){var F=l[2],y=!!l[3],M=16&m;nt(o?e:e.prototype,l,M,y?"#"+F:Ve(F),S,S<2?[]:o?v=v||[]:h=h||[],c,!!o,y,A,o&&y?function(w){return Se(w)===e}:a)}}},_(8,0),_(0,0),_(8,1),_(0,1),g(h),g(v),s=c,U||at(e),{e:s,get c(){var o=[];return U&&[at(e=nt(e,[t],r,e.name,5,o)),B(o,1)]}}}function Ve(e){var t=Ae(e,"string");return typeof t=="symbol"?t:t+""}function Ae(e,t){if(typeof e!="object"||!e)return e;var i=e[Symbol.toPrimitive];if(i!==void 0){var r=i.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function oe(e,t,i){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:i?i+" "+t:t})}catch{}return e}function Se(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var H=50,tt=25,et=75,me=100;function de(e,t,i,r,a){let n=e.clamp(t),u=e.clamp(i);n>u&&([n,u]=[u,n]);let s=Math.max(0,r);return u-n<s&&(a==="min"?n=e.clamp(u-s):u=e.clamp(n+s)),[n,u]}function Re(e){return Array.isArray(e.value)?[...e.value]:typeof e.value=="number"?[e.value]:e.variant==="range"?[tt,et]:[H]}function fe(e){let t=q(e.min,e.max,e.step);if(e.variant==="range"||e.values.length>=2){let i=e.values[0]??tt,r=e.values[1]??et;return de(t,i,r,e.minDistance??0)}return[t.clamp(e.values[0]??H)]}function ge(e,t,i){let r=K(t,i);return e.length===2?`${E(e[0],r)} \u2013 ${E(e[1],r)}`:E(e[0],r)}function be(e){let t=e.variant??"single",i=e.min??0,r=e.max??me,a=e.step??1,n=e.minDistance??0,u=Re(e),s=fe({variant:t,values:u,min:i,max:r,step:a,minDistance:n}),h=q(i,r,a);return{variant:s.length===2?"range":"single",min:i,max:r,step:a,minDistance:n,committed:s,readoutPrecision:K(a,e.valuePrecision),readoutText:ge(s,a,e.valuePrecision),trackStyle:pe(s,h),isRange:s.length===2,valuePrecision:typeof e.valuePrecision=="number"&&Number.isFinite(e.valuePrecision)?e.valuePrecision:void 0}}function pe(e,t){let i=e[0],r=e.length===2?e[1]:e[0],a=`${t.ratioFor(i)*100}%`,n=`${t.ratioFor(r)*100}%`,u=`${(t.ratioFor(r)-t.ratioFor(i))*100}%`;return{"--rui-slider-fill-start":e.length===2?a:"0%","--rui-slider-fill-size":e.length===2?u:n,"--rui-slider-value":a,"--rui-slider-min":a,"--rui-slider-max":n}}var ve,ce=class extends he{static{({e:[Tt,xt,yt,Vt,At,St,Mt,wt,Pt,Rt,Et,Dt,It,Ft,Nt,Lt,kt,Ct,jt,Ot,Ut,Bt,$t,zt,Gt,Xt,Kt,qt,Yt,Jt,Qt,Wt,Zt,Ht,te,ee,ie,re,ne,ae,se,ue,vt],c:[ve,_t]}=ye(this,[Me("rui-slider")],[[T({type:String,defaultValue:"single"}),0,"variant"],[T({type:String,defaultValue:"horizontal"}),0,"orientation"],[T({type:Array,reflect:!0,defaultValue:[H],transform:gt}),0,"value"],[T({type:Number,defaultValue:0}),0,"min"],[T({type:Number,defaultValue:me}),0,"max"],[T({type:Number,defaultValue:1}),0,"step"],[T({type:Number,attribute:"value-precision",defaultValue:Number.NaN}),0,"valuePrecision"],[T({type:Number,defaultValue:0}),0,"minDistance"],[T({type:Boolean,attribute:"read-only",reflect:!0,defaultValue:!1}),0,"readOnly"],[[T({type:String,defaultValue:""}),le([{ref:"label",bool:"hidden",invert:!0},{ref:"label",text:!0}])],0,"label"],[[T({type:Boolean,attribute:"show-value",defaultValue:!1}),le({selector:"[data-default-value]",bool:"hidden",invert:!0})],0,"showValue"],[T({type:Boolean,attribute:"value-title",defaultValue:!1}),0,"valueTitle"],[we({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[D({ref:"root"}),0,"rootTarget"],[D({ref:"header"}),0,"headerTarget"],[D({ref:"label"}),0,"labelTarget"],[D({ref:"rangeTrack"}),0,"rangeTrack"],[D({ref:"value"}),0,"valueTarget"],[D({ref:"singleThumb"}),0,"singleThumb"],[D({ref:"rangeMinThumb"}),0,"rangeMinThumb"],[D({ref:"rangeMaxThumb"}),0,"rangeMaxThumb"],[Pe(["value","min","max","step","valuePrecision","minDistance","variant","orientation","disabled","readOnly","effectiveDisabled","label","name","showValue","valueTitle"]),2,"onPropsUpdated"],[C({ref:"rangeTrack",type:"pointerdown"}),2,"onPointerDown"],[C({document:!0,type:"pointermove"}),2,"onPointerMove"],[C({document:!0,type:"pointerup"}),2,"onPointerUp"],[C({document:!0,type:"pointercancel"}),2,"onPointerCancel"],[C({selector:"[data-thumb]",type:"keydown"}),2,"onThumbKeydown"]],0,void 0,he))}variant=(vt(this),Tt(this));orientation=(xt(this),yt(this));value=(Vt(this),At(this));min=(St(this),Mt(this));max=(wt(this),Pt(this));step=(Rt(this),Et(this));valuePrecision=(Dt(this),It(this));minDistance=(Ft(this),Nt(this));readOnly=(Lt(this),kt(this));label=(Ct(this),jt(this));showValue=(Ot(this),Ut(this));valueTitle=(Bt(this),$t(this));changeEvent=(zt(this),Gt(this));rootTarget=(Xt(this),Kt(this));headerTarget=(qt(this),Yt(this));labelTarget=(Jt(this),Qt(this));rangeTrack=(Wt(this),Zt(this));valueTarget=(Ht(this),te(this));singleThumb=(ee(this),ie(this));rangeMinThumb=(re(this),ne(this));rangeMaxThumb=(ae(this),se(this));activeThumb=(ue(this),null);activePointerId=null;pending=null;lastEmitted="";onConnected(){this.adoptLegacyRangeAttributes(),this.syncChrome(),this.syncValues(this.committedValues())}formValue(){if(!this.name)return null;let t=this.liveValues();if(t.length===2){let i=new FormData;return i.append(this.name,String(t[0])),i.append(`${this.name}-max`,String(t[1])),i}return String(t[0]??"")}formState(){return this.committedValues().join(",")}restoreFormState(t){this.value=String(t).split(",").map(Number).filter(i=>Number.isFinite(i)),this.syncValues(this.committedValues())}adoptLegacyRangeAttributes(){if(this.hasAttribute("value"))return;let t=this.getAttribute("range-min"),i=this.getAttribute("range-max");if(t===null&&i===null)return;let r=t!==null?Number(t):tt,a=i!==null?Number(i):et;this.value=[r,a]}onPropsUpdated(){this.activeThumb||(this.syncChrome(),this.syncValues(this.committedValues()))}get isRange(){return this.liveValues().length===2}get isVertical(){return this.orientation==="vertical"}get numericRange(){return q(this.min,this.max,this.step)}get resolvedValuePrecision(){return K(this.step,this.valuePrecision)}formatValue(t){return E(t,this.resolvedValuePrecision)}formatValues(t){return ge(t,this.step,this.valuePrecision)}get defaultValueTarget(){return this.querySelector("[data-default-value]")}thumbFor(t){return t==="value"?this.singleThumb:t==="min"?this.rangeMinThumb:this.rangeMaxThumb}parseThumb(t){return this.isRange?t==="min"||t==="max"?t:null:t==="value"?t:null}constrainPair(t,i,r){return de(this.numericRange,t,i,this.minDistance,r)}committedValues(){return fe({variant:this.variant,values:this.value,min:this.min,max:this.max,step:this.step,minDistance:this.minDistance})}liveValues(){return this.pending??this.committedValues()}changeDetail(t){return{value:t}}emitIfChanged(t){let i=t.join(",");i!==this.lastEmitted&&(this.lastEmitted=i,this.changeEvent.emit(this.changeDetail(t)))}reflectValues(t){let i=this.value;i.length===t.length&&t.every((n,u)=>bt(i[u],n,this.step))||(this.value=t)}syncValues(t){this.paint(t),this.reflectValues(t);let i=t.length>=2?"range":"single";this.variant!==i&&(this.variant=i)}syncChrome(){this.syncRootChrome(),this.syncThumbChrome()}syncRootChrome(){let t=!!this.valueTarget&&(!this.defaultValueTarget||this.showValue);this.rootTarget?.classList.toggle("rui-slider--single",!this.isRange),this.rootTarget?.classList.toggle("rui-slider--range",this.isRange),this.rootTarget?.classList.toggle("rui-slider--vertical",this.isVertical),this.headerTarget?.toggleAttribute("hidden",!this.label&&!t)}syncThumbChrome(){let t=this.effectiveDisabled?-1:0,i=this.isVertical?"vertical":"horizontal",r=this.numericRange;for(let{id:a,label:n,visible:u}of this.getThumbChrome()){let s=this.thumbFor(a);s&&(s.toggleAttribute("hidden",!u),s.toggleAttribute("disabled",this.effectiveDisabled||!u),s.setAttribute("tabindex",String(u?t:-1)),s.setAttribute("aria-label",n),s.setAttribute("aria-orientation",i),s.setAttribute("aria-valuemin",String(r.lowerBound)),s.setAttribute("aria-valuemax",String(r.upperBound)),s.setAttribute("aria-readonly",String(this.readOnly)))}}getThumbChrome(){let t=this.isRange;return[{id:"value",label:this.label||"Value",visible:!t},{id:"min",label:this.label?`${this.label} minimum`:"Minimum value",visible:t},{id:"max",label:this.label?`${this.label} maximum`:"Maximum value",visible:t}]}paint(t){let i=t[0],r=t.length===2?t[1]:t[0],a=this.rangeTrack,n=pe(t,this.numericRange);for(let[u,s]of Object.entries(n))a?.style.setProperty(u,s);this.singleThumb&&(this.singleThumb.setAttribute("aria-valuenow",String(i)),this.singleThumb.setAttribute("aria-valuetext",this.formatValue(i))),this.rangeMinThumb&&(this.rangeMinThumb.setAttribute("aria-valuenow",String(i)),this.rangeMinThumb.setAttribute("aria-valuetext",this.formatValue(i)),this.rangeMinThumb.setAttribute("aria-valuemax",String(r))),this.rangeMaxThumb&&(this.rangeMaxThumb.setAttribute("aria-valuemin",String(i)),this.rangeMaxThumb.setAttribute("aria-valuenow",String(r)),this.rangeMaxThumb.setAttribute("aria-valuetext",this.formatValue(r))),this.valueTarget&&(this.valueTarget.textContent=this.formatValues(t)),this.syncFormValue(),this.syncValueTitle(t)}syncValueTitle(t){let i=[[this.rangeTrack,"track"],[this.singleThumb,"value"],[this.rangeMinThumb,"min"],[this.rangeMaxThumb,"max"]],r=this.getValueTitles(t);for(let[a,n]of i){let u=r[n];u?a?.setAttribute("title",u):a?.removeAttribute("title")}}getValueTitles(t){if(!this.valueTitle)return{};if(t.length===1)return{value:this.formatValue(t[0])};let[i,r]=t;return{min:this.formatValue(i),max:this.formatValue(r),track:this.formatValues(t)}}valueFromPointer(t){let i=this.rangeTrack;if(!i)return this.numericRange.lowerBound;let r=i.getBoundingClientRect();if(r.width===0||r.height===0)return this.numericRange.lowerBound;let a=this.isVertical?1-(t.clientY-r.top)/r.height:(t.clientX-r.left)/r.width;return this.numericRange.valueFromRatio(a)}nearestThumb(t){if(!this.isRange)return"value";let[i,r]=this.liveValues();return Math.abs(t-i)<=Math.abs(t-r)?"min":"max"}moveThumb(t,i){if(this.activeThumb=t,this.isRange){let a=this.pending??this.committedValues();this.pending=this.constrainPair(t==="min"?i:a[0],t==="max"?i:a[1],t)}else this.pending=[this.numericRange.clamp(i)];let r=this.pending;return this.paint(r),this.emitIfChanged(r),r}commit(){let t=this.liveValues();this.pending=null,this.activeThumb=null,this.activePointerId=null,this.syncValues(t)}revert(){this.pending=null,this.activeThumb=null,this.activePointerId=null,this.lastEmitted=this.committedValues().join(","),this.paint(this.committedValues())}releasePointer(t){let i=this.rangeTrack;i?.hasPointerCapture(t.pointerId)&&i.releasePointerCapture(t.pointerId)}onPointerDown(t){if(t.button!==0||this.effectiveDisabled||this.readOnly)return;let i=t.target.closest("[data-thumb]"),r=this.parseThumb(i?.getAttribute("data-thumb")??null),a=this.valueFromPointer(t),n=r??this.nearestThumb(a);this.pending=this.committedValues(),this.lastEmitted=this.pending.join(","),this.activeThumb=n,this.activePointerId=t.pointerId,this.rangeTrack?.setPointerCapture(t.pointerId),this.thumbFor(n)?.focus(),r||this.moveThumb(n,a),t.preventDefault()}onPointerMove(t){!this.activeThumb||t.pointerId!==this.activePointerId||this.moveThumb(this.activeThumb,this.valueFromPointer(t))}onPointerUp(t){!this.activeThumb||t.pointerId!==this.activePointerId||(this.releasePointer(t),this.commit())}onPointerCancel(t){!this.activeThumb||t.pointerId!==this.activePointerId||(this.releasePointer(t),this.revert())}onThumbKeydown(t){if(this.effectiveDisabled||this.readOnly)return;let i=t.target.closest("[data-thumb]"),r=this.parseThumb(i?.getAttribute("data-thumb")??null);if(!r)return;let a=this.committedValues(),n=r==="max"?a[a.length-1]:a[0],u=pt(this.numericRange,n,t.key);u!=null&&(t.preventDefault(),this.lastEmitted=a.join(","),this.moveThumb(r,u),this.commit())}static{_t()}};import{jsx as V,jsxs as rt}from"@ecopages/jsx/jsx-runtime";function it(...e){return e.filter(Boolean).join(" ")}function _e({children:e,class:t,...i}){return V("span",{...i,class:it("rui-slider__value",t),"data-ref":"value","aria-hidden":"true",children:e})}function Ee({disabled:e,min:t,max:i,label:r,variant:a,committed:n,readoutPrecision:u,trackStyle:s}){let h=a!=="range",v=r||"Value",c=n[0],g=n.length===2?n[1]:n[0],_=E(c,u),I=E(g,u);return V("div",{class:"rui-slider__range",children:rt("div",{class:"rui-slider__range-track","data-ref":"rangeTrack",style:s,children:[V("div",{class:"rui-slider__range-fill","data-ref":"rangeFill"}),V("button",{type:"button",class:"rui-slider__thumb","data-ref":"singleThumb","data-thumb":"value",role:"slider",tabindex:e||!h?-1:0,"aria-label":v,"aria-valuemin":t,"aria-valuemax":i,"aria-valuenow":c,"aria-valuetext":_,disabled:e||!h,hidden:!h}),V("button",{type:"button",class:"rui-slider__thumb","data-ref":"rangeMinThumb","data-thumb":"min",role:"slider",tabindex:e||h?-1:0,"aria-label":r?`${r} minimum`:"Minimum value","aria-valuemin":t,"aria-valuemax":g,"aria-valuenow":c,"aria-valuetext":_,disabled:e||h,hidden:h}),V("button",{type:"button",class:"rui-slider__thumb","data-ref":"rangeMaxThumb","data-thumb":"max",role:"slider",tabindex:e||h?-1:0,"aria-label":r?`${r} maximum`:"Maximum value","aria-valuemin":c,"aria-valuemax":i,"aria-valuenow":g,"aria-valuetext":I,disabled:e||h,hidden:h})]})})}function De({variant:e,orientation:t="horizontal",label:i,showValue:r=!1,valueTitle:a=!1,disabled:n,name:u,min:s,max:h,step:v,value:c,valuePrecision:g,minDistance:_,children:I,...j}){let b=be({variant:e,value:c,min:s,max:h,step:v,minDistance:_,valuePrecision:g}),O=I??V(_e,{"data-default-value":!0,hidden:!r,children:b.readoutText}),U=!!I||r;return V("rui-slider",{...j,variant:b.variant,orientation:t,label:i,showValue:r,valueTitle:a,disabled:n,name:u,min:b.min,max:b.max,step:b.step,value:b.committed,minDistance:b.minDistance,valuePrecision:b.valuePrecision,children:V(Ie,{seed:b,orientation:t,label:i,disabled:n,hasVisibleReadout:U,valueReadout:O})})}function Ie({seed:e,orientation:t,label:i,disabled:r,hasVisibleReadout:a,valueReadout:n}){return rt("div",{class:it("rui-slider",e.isRange?"rui-slider--range":"rui-slider--single",t==="vertical"&&"rui-slider--vertical"),"data-ref":"root",children:[rt("div",{class:"rui-slider__header","data-ref":"header",hidden:!i&&!a,children:[V("span",{class:"rui-slider__label","data-ref":"label",hidden:!i,children:i}),n]}),V(Ee,{disabled:r,min:e.min,max:e.max,label:i,variant:e.variant,committed:e.committed,readoutPrecision:e.readoutPrecision,trackStyle:e.trackStyle})]})}export{De as RuiSlider,ve as RuiSliderElement,_e as RuiSliderValue};
2
2
  //# sourceMappingURL=index.js.map