@vielzeug/refine 2.3.0 → 3.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 (314) hide show
  1. package/README.md +5 -18
  2. package/dist/accordion-item.cjs +1 -1
  3. package/dist/accordion-item.cjs.map +1 -1
  4. package/dist/accordion-item.js +1 -1
  5. package/dist/accordion-item.js.map +1 -1
  6. package/dist/accordion.cjs.map +1 -1
  7. package/dist/accordion.js.map +1 -1
  8. package/dist/async.cjs +1 -1
  9. package/dist/async.cjs.map +1 -1
  10. package/dist/async.js +3 -3
  11. package/dist/async.js.map +1 -1
  12. package/dist/box.cjs.map +1 -1
  13. package/dist/box.js.map +1 -1
  14. package/dist/card.cjs +1 -1
  15. package/dist/card.cjs.map +1 -1
  16. package/dist/card.js +3 -3
  17. package/dist/card.js.map +1 -1
  18. package/dist/chat-message.cjs +1 -1
  19. package/dist/chat-message.cjs.map +1 -1
  20. package/dist/chat-message.js +1 -1
  21. package/dist/chat-message.js.map +1 -1
  22. package/dist/checkbox-group.cjs +1 -1
  23. package/dist/checkbox-group.cjs.map +1 -1
  24. package/dist/checkbox-group.js +1 -1
  25. package/dist/checkbox-group.js.map +1 -1
  26. package/dist/combobox.cjs +10 -8
  27. package/dist/combobox.cjs.map +1 -1
  28. package/dist/combobox.js +62 -51
  29. package/dist/combobox.js.map +1 -1
  30. package/dist/command-palette.cjs +1 -1
  31. package/dist/command-palette.cjs.map +1 -1
  32. package/dist/command-palette.js +6 -2
  33. package/dist/command-palette.js.map +1 -1
  34. package/dist/content/card/card.css.cjs +1 -1
  35. package/dist/content/card/card.css.cjs.map +1 -1
  36. package/dist/content/card/card.css.js +1 -1
  37. package/dist/content/card/card.css.js.map +1 -1
  38. package/dist/content/card/card.d.ts +2 -2
  39. package/dist/content/card/card.d.ts.map +1 -1
  40. package/dist/content/index.d.ts +2 -0
  41. package/dist/content/index.d.ts.map +1 -1
  42. package/dist/content/list/list-item.css.cjs +1 -1
  43. package/dist/content/list/list-item.css.cjs.map +1 -1
  44. package/dist/content/list/list-item.css.js +1 -1
  45. package/dist/content/list/list-item.css.js.map +1 -1
  46. package/dist/content/list/list-item.d.ts +9 -0
  47. package/dist/content/list/list-item.d.ts.map +1 -1
  48. package/dist/content/pagination/pagination.css.cjs +1 -1
  49. package/dist/content/pagination/pagination.css.cjs.map +1 -1
  50. package/dist/content/pagination/pagination.css.js +1 -1
  51. package/dist/content/pagination/pagination.css.js.map +1 -1
  52. package/dist/content/stats/stats.css.cjs +2 -0
  53. package/dist/content/stats/stats.css.cjs.map +1 -0
  54. package/dist/content/stats/stats.css.js +6 -0
  55. package/dist/content/stats/stats.css.js.map +1 -0
  56. package/dist/content/stats/stats.d.ts +72 -0
  57. package/dist/content/stats/stats.d.ts.map +1 -0
  58. package/dist/core/auto-resize.cjs +1 -1
  59. package/dist/core/auto-resize.cjs.map +1 -1
  60. package/dist/core/auto-resize.js +1 -1
  61. package/dist/core/auto-resize.js.map +1 -1
  62. package/dist/core/field-base.cjs +1 -1
  63. package/dist/core/field-base.cjs.map +1 -1
  64. package/dist/core/field-base.d.ts +1 -1
  65. package/dist/core/field-base.js +1 -1
  66. package/dist/core/field-base.js.map +1 -1
  67. package/dist/core/nav.cjs +1 -1
  68. package/dist/core/nav.cjs.map +1 -1
  69. package/dist/core/nav.d.ts +4 -1
  70. package/dist/core/nav.d.ts.map +1 -1
  71. package/dist/core/nav.js +41 -28
  72. package/dist/core/nav.js.map +1 -1
  73. package/dist/core/option-list.cjs +1 -1
  74. package/dist/core/option-list.cjs.map +1 -1
  75. package/dist/core/option-list.d.ts.map +1 -1
  76. package/dist/core/option-list.js +30 -28
  77. package/dist/core/option-list.js.map +1 -1
  78. package/dist/core/slider.cjs +1 -1
  79. package/dist/core/slider.cjs.map +1 -1
  80. package/dist/core/slider.js +1 -1
  81. package/dist/core/slider.js.map +1 -1
  82. package/dist/core/spinner.cjs +1 -1
  83. package/dist/core/spinner.cjs.map +1 -1
  84. package/dist/core/spinner.js +1 -1
  85. package/dist/core/spinner.js.map +1 -1
  86. package/dist/custom-elements.json +5471 -4977
  87. package/dist/datagrid.cjs +219 -199
  88. package/dist/datagrid.cjs.map +1 -1
  89. package/dist/datagrid.js +415 -302
  90. package/dist/datagrid.js.map +1 -1
  91. package/dist/disclosure/accordion/accordion.css.cjs +1 -1
  92. package/dist/disclosure/accordion/accordion.css.cjs.map +1 -1
  93. package/dist/disclosure/accordion/accordion.css.js +1 -1
  94. package/dist/disclosure/accordion/accordion.css.js.map +1 -1
  95. package/dist/disclosure/accordion/accordion.d.ts +5 -5
  96. package/dist/disclosure/accordion/accordion.d.ts.map +1 -1
  97. package/dist/disclosure/accordion-item/accordion-item.css.cjs +1 -1
  98. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -1
  99. package/dist/disclosure/accordion-item/accordion-item.css.js +1 -1
  100. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -1
  101. package/dist/disclosure/accordion-item/accordion-item.d.ts +3 -3
  102. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -1
  103. package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
  104. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
  105. package/dist/disclosure/tab-item/tab-item.css.js +1 -1
  106. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
  107. package/dist/disclosure/tab-item/tab-item.d.ts +6 -3
  108. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
  109. package/dist/disclosure/tabs/tabs.css.cjs +1 -1
  110. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
  111. package/dist/disclosure/tabs/tabs.css.js +1 -1
  112. package/dist/disclosure/tabs/tabs.css.js.map +1 -1
  113. package/dist/disclosure/tabs/tabs.d.ts +9 -5
  114. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  115. package/dist/drawer.cjs +1 -1
  116. package/dist/drawer.cjs.map +1 -1
  117. package/dist/drawer.js +1 -1
  118. package/dist/drawer.js.map +1 -1
  119. package/dist/feedback/toast/toast.d.ts.map +1 -1
  120. package/dist/file-input.cjs +1 -1
  121. package/dist/file-input.cjs.map +1 -1
  122. package/dist/file-input.js +2 -2
  123. package/dist/file-input.js.map +1 -1
  124. package/dist/frameworks/elements.d.ts +4 -85
  125. package/dist/frameworks/react.d.ts +5 -4
  126. package/dist/frameworks/vue.d.ts +4 -4
  127. package/dist/grid.cjs +2 -2
  128. package/dist/grid.cjs.map +1 -1
  129. package/dist/grid.js +21 -18
  130. package/dist/grid.js.map +1 -1
  131. package/dist/icon.cjs +1 -1
  132. package/dist/icon.cjs.map +1 -1
  133. package/dist/icon.js +1 -1
  134. package/dist/icon.js.map +1 -1
  135. package/dist/input.cjs +5 -4
  136. package/dist/input.cjs.map +1 -1
  137. package/dist/input.js +14 -8
  138. package/dist/input.js.map +1 -1
  139. package/dist/inputs/combobox/combobox-options.cjs +1 -1
  140. package/dist/inputs/combobox/combobox-options.cjs.map +1 -1
  141. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -1
  142. package/dist/inputs/combobox/combobox-options.js +1 -0
  143. package/dist/inputs/combobox/combobox-options.js.map +1 -1
  144. package/dist/inputs/combobox/combobox.css.cjs +1 -1
  145. package/dist/inputs/combobox/combobox.css.cjs.map +1 -1
  146. package/dist/inputs/combobox/combobox.css.js +1 -1
  147. package/dist/inputs/combobox/combobox.css.js.map +1 -1
  148. package/dist/inputs/combobox/combobox.d.ts +13 -1
  149. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  150. package/dist/inputs/combobox/combobox.types.d.ts +7 -0
  151. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
  152. package/dist/inputs/datagrid/datagrid-model.cjs +1 -1
  153. package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -1
  154. package/dist/inputs/datagrid/datagrid-model.d.ts +17 -3
  155. package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -1
  156. package/dist/inputs/datagrid/datagrid-model.js +93 -70
  157. package/dist/inputs/datagrid/datagrid-model.js.map +1 -1
  158. package/dist/inputs/datagrid/datagrid.css.cjs +1 -1
  159. package/dist/inputs/datagrid/datagrid.css.cjs.map +1 -1
  160. package/dist/inputs/datagrid/datagrid.css.js +1 -1
  161. package/dist/inputs/datagrid/datagrid.css.js.map +1 -1
  162. package/dist/inputs/datagrid/datagrid.d.ts +78 -36
  163. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  164. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  165. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  166. package/dist/inputs/file-input/file-input-upload.js +1 -1
  167. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  168. package/dist/inputs/index.d.ts +3 -4
  169. package/dist/inputs/index.d.ts.map +1 -1
  170. package/dist/inputs/input/input.css.cjs +1 -1
  171. package/dist/inputs/input/input.css.cjs.map +1 -1
  172. package/dist/inputs/input/input.css.js +1 -1
  173. package/dist/inputs/input/input.css.js.map +1 -1
  174. package/dist/inputs/input/input.d.ts +3 -0
  175. package/dist/inputs/input/input.d.ts.map +1 -1
  176. package/dist/inputs/select/select.css.cjs +1 -1
  177. package/dist/inputs/select/select.css.cjs.map +1 -1
  178. package/dist/inputs/select/select.css.js +1 -1
  179. package/dist/inputs/select/select.css.js.map +1 -1
  180. package/dist/inputs/select/select.d.ts +5 -0
  181. package/dist/inputs/select/select.d.ts.map +1 -1
  182. package/dist/inputs/shared/field-binding.cjs +1 -1
  183. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  184. package/dist/inputs/shared/field-binding.js +6 -6
  185. package/dist/inputs/shared/field-binding.js.map +1 -1
  186. package/dist/layout/box/box.css.cjs +1 -1
  187. package/dist/layout/box/box.css.cjs.map +1 -1
  188. package/dist/layout/box/box.css.js +1 -1
  189. package/dist/layout/box/box.css.js.map +1 -1
  190. package/dist/layout/box/box.d.ts +3 -3
  191. package/dist/layout/box/box.d.ts.map +1 -1
  192. package/dist/layout/grid/grid.d.ts.map +1 -1
  193. package/dist/layout/navbar/navbar.css.cjs +1 -1
  194. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  195. package/dist/layout/navbar/navbar.css.js +1 -1
  196. package/dist/layout/navbar/navbar.css.js.map +1 -1
  197. package/dist/layout/navbar/navbar.d.ts +3 -1
  198. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  199. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  200. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  201. package/dist/layout/sidebar/sidebar.css.js +1 -1
  202. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  203. package/dist/layout/sidebar/sidebar.d.ts +8 -0
  204. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  205. package/dist/list-item.cjs +6 -5
  206. package/dist/list-item.cjs.map +1 -1
  207. package/dist/list-item.js +23 -17
  208. package/dist/list-item.js.map +1 -1
  209. package/dist/list.cjs +1 -1
  210. package/dist/list.cjs.map +1 -1
  211. package/dist/list.js +1 -1
  212. package/dist/list.js.map +1 -1
  213. package/dist/menu.cjs +1 -1
  214. package/dist/menu.cjs.map +1 -1
  215. package/dist/menu.js +7 -7
  216. package/dist/menu.js.map +1 -1
  217. package/dist/navbar.cjs +2 -2
  218. package/dist/navbar.cjs.map +1 -1
  219. package/dist/navbar.js +91 -87
  220. package/dist/navbar.js.map +1 -1
  221. package/dist/navigation-menu.cjs +1 -1
  222. package/dist/navigation-menu.cjs.map +1 -1
  223. package/dist/navigation-menu.js +2 -2
  224. package/dist/navigation-menu.js.map +1 -1
  225. package/dist/number-input.cjs +1 -1
  226. package/dist/number-input.cjs.map +1 -1
  227. package/dist/number-input.js +1 -1
  228. package/dist/number-input.js.map +1 -1
  229. package/dist/overlay/popover/popover.css.cjs +1 -1
  230. package/dist/overlay/popover/popover.css.cjs.map +1 -1
  231. package/dist/overlay/popover/popover.css.js +1 -1
  232. package/dist/overlay/popover/popover.css.js.map +1 -1
  233. package/dist/overlay/popover/popover.d.ts +1 -0
  234. package/dist/overlay/popover/popover.d.ts.map +1 -1
  235. package/dist/overlay/shared/use-dialog.cjs +1 -1
  236. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  237. package/dist/overlay/shared/use-dialog.js +1 -1
  238. package/dist/overlay/shared/use-dialog.js.map +1 -1
  239. package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
  240. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  241. package/dist/overlay/shared/use-floating-trigger.js +1 -1
  242. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  243. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
  244. package/dist/popover.cjs +1 -1
  245. package/dist/popover.cjs.map +1 -1
  246. package/dist/popover.js +6 -6
  247. package/dist/popover.js.map +1 -1
  248. package/dist/radio-group.cjs +1 -1
  249. package/dist/radio-group.cjs.map +1 -1
  250. package/dist/radio-group.js +1 -1
  251. package/dist/radio-group.js.map +1 -1
  252. package/dist/radio.cjs +1 -1
  253. package/dist/radio.cjs.map +1 -1
  254. package/dist/radio.js +15 -13
  255. package/dist/radio.js.map +1 -1
  256. package/dist/rating.cjs +1 -1
  257. package/dist/rating.cjs.map +1 -1
  258. package/dist/rating.js +2 -2
  259. package/dist/rating.js.map +1 -1
  260. package/dist/refine.cjs +373 -324
  261. package/dist/refine.cjs.map +1 -1
  262. package/dist/refine.iife.js +382 -333
  263. package/dist/refine.iife.js.map +1 -1
  264. package/dist/refine.js +417 -368
  265. package/dist/refine.js.map +1 -1
  266. package/dist/select.cjs +16 -14
  267. package/dist/select.cjs.map +1 -1
  268. package/dist/select.js +118 -112
  269. package/dist/select.js.map +1 -1
  270. package/dist/shared/types.d.ts +0 -2
  271. package/dist/shared/types.d.ts.map +1 -1
  272. package/dist/sidebar.cjs +28 -23
  273. package/dist/sidebar.cjs.map +1 -1
  274. package/dist/sidebar.js +143 -108
  275. package/dist/sidebar.js.map +1 -1
  276. package/dist/skeleton.cjs +1 -1
  277. package/dist/skeleton.cjs.map +1 -1
  278. package/dist/skeleton.js +11 -9
  279. package/dist/skeleton.js.map +1 -1
  280. package/dist/slider.cjs +1 -1
  281. package/dist/slider.cjs.map +1 -1
  282. package/dist/slider.js +21 -21
  283. package/dist/slider.js.map +1 -1
  284. package/dist/stats.cjs +18 -0
  285. package/dist/stats.cjs.map +1 -0
  286. package/dist/stats.js +88 -0
  287. package/dist/stats.js.map +1 -0
  288. package/dist/stepper.cjs +1 -1
  289. package/dist/stepper.cjs.map +1 -1
  290. package/dist/stepper.js +1 -1
  291. package/dist/stepper.js.map +1 -1
  292. package/dist/styles/mixins/animation.css.cjs +2 -0
  293. package/dist/styles/mixins/animation.css.cjs.map +1 -1
  294. package/dist/styles/mixins/animation.css.d.ts.map +1 -1
  295. package/dist/styles/mixins/animation.css.js +2 -0
  296. package/dist/styles/mixins/animation.css.js.map +1 -1
  297. package/dist/tab-item.cjs +1 -1
  298. package/dist/tab-item.cjs.map +1 -1
  299. package/dist/tab-item.js +3 -2
  300. package/dist/tab-item.js.map +1 -1
  301. package/dist/tabs.cjs +1 -1
  302. package/dist/tabs.cjs.map +1 -1
  303. package/dist/tabs.js +3 -1
  304. package/dist/tabs.js.map +1 -1
  305. package/dist/toast.cjs +8 -8
  306. package/dist/toast.cjs.map +1 -1
  307. package/dist/toast.js +32 -33
  308. package/dist/toast.js.map +1 -1
  309. package/dist/tooltip.cjs +1 -1
  310. package/dist/tooltip.cjs.map +1 -1
  311. package/dist/tooltip.js +2 -2
  312. package/dist/tooltip.js.map +1 -1
  313. package/dist/types/elements.d.ts +207 -0
  314. package/package.json +70 -62
@@ -1 +1 @@
1
- {"version":3,"file":"card.css.js","names":[],"sources":["../../../src/content/card/card.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--card-bg, var(--color-canvas));\n --_color: var(--card-color, var(--color-contrast-900));\n --_border: var(--card-border, var(--border));\n --_border-color: var(--card-border-color, var(--color-divider));\n --_radius: var(--card-radius, var(--rounded-lg));\n --_padding: var(--card-padding, var(--size-4));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n --_hover-shadow: var(--card-hover-shadow, var(--shadow-md));\n\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n .card {\n position: relative;\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border-radius: var(--_radius);\n backdrop-filter: blur(var(--blur-md));\n transition:\n box-shadow var(--transition-normal),\n transform var(--transition-normal),\n background var(--transition-normal),\n border-color var(--transition-normal);\n }\n\n /* ── Card Structure ───────────────────────── */\n\n .card-media {\n flex-shrink: 0;\n overflow: hidden;\n }\n\n .card-media img {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n }\n\n .card-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .card-header,\n .card-content,\n .card-footer {\n padding: var(--_padding);\n }\n\n .card-header {\n padding-bottom: calc(var(--_padding) / 2);\n }\n\n .card-footer {\n padding-top: calc(var(--_padding) / 2);\n }\n\n .card-content {\n flex: 1;\n }\n\n .card-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2);\n align-items: center;\n padding: var(--_padding);\n padding-top: calc(var(--_padding) / 2);\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* Default — bordered card with shadow */\n :host(:not([variant], [color])) {\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host(:not([variant], [color])) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Default + color — tinted backdrop */\n :host(:not([variant])[color]) {\n --_bg: var(--card-bg, var(--_theme-backdrop));\n --_border-color: var(--card-border-color, var(--_theme-border));\n }\n\n :host(:not([variant])[color]) .card {\n border: var(--_border) solid var(--_border-color);\n }\n\n :host(:not([variant])[color]:hover) {\n --_bg: var(--card-bg, color-mix(in oklch, var(--_theme-base) 16%, var(--color-contrast-50)));\n --_border-color: var(--card-border-color, var(--_theme-focus));\n }\n\n /* Solid — fully filled with theme color */\n :host([variant='solid']) {\n --_bg: var(--card-bg, var(--_theme-base));\n --_color: var(--card-color, var(--_theme-contrast));\n --_border-color: var(--card-border-color, var(--_theme-base));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host([variant='solid']) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Flat — tinted backdrop, subtle border */\n :host([variant='flat']) {\n --_border-color: var(--card-border-color, color-mix(in oklch, var(--_theme-border) 50%, transparent));\n }\n\n :host([variant='flat']) .card {\n border: var(--_border) solid var(--_border-color);\n }\n\n /* Glass — frosted blur panel */\n :host([variant='glass']) .card {\n text-shadow: var(--text-shadow-xs);\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--card-shadow, var(--shadow-md)), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n :host([variant='glass']:hover) .card {\n box-shadow: var(--card-hover-shadow, var(--shadow-xl)), var(--inset-shadow-sm);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%) brightness(1.1);\n }\n\n :host([variant='glass'][interactive]:hover) .card {\n box-shadow: var(--card-hover-shadow, var(--shadow-2xl)), var(--inset-shadow-sm);\n }\n}\n\n@layer refine.overrides {\n /* ── Loading bar ──────────────────────────── */\n\n /* Bar lives inside .card which already has overflow:hidden,\n so translateX can sweep freely without any overflow. */\n .loading-bar {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n display: none;\n width: 65%;\n height: 3px;\n background: linear-gradient(90deg, transparent 0%, var(--_theme-base, var(--color-primary)) 50%, transparent 100%);\n }\n\n :host([loading]) .loading-bar {\n display: block;\n animation: var(--_motion-animation, loading-bar 1.4s linear infinite);\n }\n\n /* In RTL the loading bar sweeps right-to-left */\n :host(:dir(rtl)[loading]) .loading-bar {\n animation-direction: reverse;\n }\n\n /* ── Disabled ─────────────────────────────── */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n :host([disabled][interactive]) .card {\n cursor: not-allowed;\n }\n\n /* ── Interactive hover/active ─────────────── */\n\n :host([interactive]:not([disabled]):hover) .card {\n box-shadow: var(--_hover-shadow);\n transform: translateY(-2px) scale(1.01);\n }\n\n :host([interactive]) .card {\n cursor: pointer;\n will-change: transform;\n }\n\n /* `:active` bubbles to every ancestor of whatever element is actually being pressed, so\n without the `:not(:has(...))` guard, pressing a nested interactive descendant (a swatch\n button, a slotted `<ore-button>`, a link, etc. — kept in sync with card.ts's\n `INTERACTIVE_DESCENDANT_SELECTOR`) would *also* visually \"press\" the whole card even though\n `handleClick` already ignores the click for activation purposes. `:host(:has(...))`\n (`:has()` as `:host()`'s functional argument) is invalid — `:host()` only accepts a compound\n selector and doesn't accept `:has()` inside it, so the bare `:host` pseudo-class chained\n directly with the rest (no parentheses around it) is used instead — same reasoning as\n list-item.css's identical `:host:has(...)` rules. */\n :host[interactive]:not([disabled]):active:not(\n :has(\n button:active,\n a[href]:active,\n input:active,\n select:active,\n textarea:active,\n summary:active,\n [role='button']:active,\n [role='link']:active\n )\n ) .card {\n box-shadow: var(--_shadow);\n transform: translateY(0) scale(0.99);\n transition:\n box-shadow var(--transition-fast),\n transform 120ms var(--ease-spring);\n }\n\n :host([interactive]:focus-visible) .card {\n outline: var(--border-2) solid var(--_theme-focus, var(--color-primary));\n outline-offset: var(--border-2);\n }\n\n /* ── Horizontal orientation ───────────────── */\n\n :host([orientation='horizontal']) .card {\n flex-direction: row;\n }\n\n :host([orientation='horizontal']) .card-media {\n width: 30%;\n min-width: 192px;\n max-width: 320px;\n }\n\n :host([orientation='horizontal']) .card-media img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n :host([orientation='horizontal']) .card-body {\n flex: 1;\n }\n}\n\n@keyframes loading-bar {\n 0% {\n transform: translateX(-100%);\n }\n\n 100% {\n transform: translateX(200%);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"card.css.js","names":[],"sources":["../../../src/content/card/card.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--card-bg, var(--color-canvas));\n --_color: var(--card-color, var(--color-contrast-900));\n --_border: var(--card-border, var(--border));\n --_border-color: var(--card-border-color, var(--color-divider));\n --_radius: var(--card-radius, var(--rounded-lg));\n --_padding: var(--card-padding, var(--size-4));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n --_hover-shadow: var(--card-hover-shadow, var(--shadow-md));\n\n position: relative;\n display: flex;\n flex-direction: column;\n }\n\n .card {\n position: relative;\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border-radius: var(--_radius);\n backdrop-filter: blur(var(--blur-md));\n transition:\n box-shadow var(--transition-normal),\n transform var(--transition-normal),\n background var(--transition-normal),\n border-color var(--transition-normal);\n }\n\n /* ── Card Structure ───────────────────────── */\n\n .card-media {\n flex-shrink: 0;\n overflow: hidden;\n }\n\n .card-media img {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n }\n\n .card-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .card-header,\n .card-content,\n .card-footer {\n padding: var(--_padding);\n }\n\n .card-header {\n padding-bottom: calc(var(--_padding) / 2);\n }\n\n .card-footer {\n padding-top: calc(var(--_padding) / 2);\n }\n\n .card-content {\n flex: 1;\n }\n\n .card-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2);\n align-items: center;\n padding: var(--_padding);\n padding-top: calc(var(--_padding) / 2);\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n /* Default — bordered card with shadow */\n :host(:not([variant], [color])) {\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host(:not([variant], [color])) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Default + color — tinted backdrop */\n :host(:not([variant])[color]) {\n --_bg: var(--card-bg, var(--_theme-backdrop));\n --_border-color: var(--card-border-color, var(--_theme-border));\n }\n\n :host(:not([variant])[color]) .card {\n border: var(--_border) solid var(--_border-color);\n }\n\n :host(:not([variant])[color]:hover) {\n --_bg: var(--card-bg, color-mix(in oklch, var(--_theme-base) 16%, var(--color-contrast-50)));\n --_border-color: var(--card-border-color, var(--_theme-focus));\n }\n\n /* Solid — fully filled with theme color */\n :host([variant='solid']) {\n --_bg: var(--card-bg, var(--_theme-base));\n --_color: var(--card-color, var(--_theme-contrast));\n --_border-color: var(--card-border-color, var(--_theme-base));\n --_shadow: var(--card-shadow, var(--shadow-sm));\n }\n\n :host([variant='solid']) .card {\n border: var(--_border) solid var(--_border-color);\n box-shadow: var(--_shadow);\n }\n\n /* Flat — tinted backdrop, subtle border */\n :host([variant='flat']) {\n --_border-color: var(--card-border-color, color-mix(in oklch, var(--_theme-border) 50%, transparent));\n }\n\n :host([variant='flat']) .card {\n border: var(--_border) solid var(--_border-color);\n }\n}\n\n@layer refine.overrides {\n /* ── Loading bar ──────────────────────────── */\n\n /* Bar lives inside .card which already has overflow:hidden,\n so translateX can sweep freely without any overflow. */\n .loading-bar {\n position: absolute;\n inset-inline-start: 0;\n top: 0;\n display: none;\n width: 65%;\n height: 3px;\n background: linear-gradient(90deg, transparent 0%, var(--_theme-base, var(--color-primary)) 50%, transparent 100%);\n }\n\n :host([loading]) .loading-bar {\n display: block;\n animation: var(--_motion-animation, loading-bar 1.4s linear infinite);\n }\n\n /* In RTL the loading bar sweeps right-to-left */\n :host(:dir(rtl)[loading]) .loading-bar {\n animation-direction: reverse;\n }\n\n /* ── Disabled ─────────────────────────────── */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n :host([disabled][interactive]) .card {\n cursor: not-allowed;\n }\n\n /* ── Interactive hover/active ─────────────── */\n\n :host([interactive]:not([disabled]):hover) .card {\n box-shadow: var(--_hover-shadow);\n transform: translateY(-2px) scale(1.01);\n }\n\n :host([interactive]) .card {\n cursor: pointer;\n will-change: transform;\n }\n\n /* `:active` bubbles to every ancestor of whatever element is actually being pressed, so\n without the `:not(:has(...))` guard, pressing a nested interactive descendant (a swatch\n button, a slotted `<ore-button>`, a link, etc. — kept in sync with card.ts's\n `INTERACTIVE_DESCENDANT_SELECTOR`) would *also* visually \"press\" the whole card even though\n `handleClick` already ignores the click for activation purposes. `:host(:has(...))`\n (`:has()` as `:host()`'s functional argument) is invalid — `:host()` only accepts a compound\n selector and doesn't accept `:has()` inside it, so the bare `:host` pseudo-class chained\n directly with the rest (no parentheses around it) is used instead — same reasoning as\n list-item.css's identical `:host:has(...)` rules. */\n :host[interactive]:not([disabled]):active:not(\n :has(\n button:active,\n a[href]:active,\n input:active,\n select:active,\n textarea:active,\n summary:active,\n [role='button']:active,\n [role='link']:active\n )\n ) .card {\n box-shadow: var(--_shadow);\n transform: translateY(0) scale(0.99);\n transition:\n box-shadow var(--transition-fast),\n transform 120ms var(--ease-spring);\n }\n\n :host([interactive]:focus-visible) .card {\n outline: var(--border-2) solid var(--_theme-focus, var(--color-primary));\n outline-offset: var(--border-2);\n }\n\n /* ── Horizontal orientation ───────────────── */\n\n :host([orientation='horizontal']) .card {\n flex-direction: row;\n }\n\n :host([orientation='horizontal']) .card-media {\n width: 30%;\n min-width: 192px;\n max-width: 320px;\n }\n\n :host([orientation='horizontal']) .card-media img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n :host([orientation='horizontal']) .card-body {\n flex: 1;\n }\n}\n\n@keyframes loading-bar {\n 0% {\n transform: translateX(-100%);\n }\n\n 100% {\n transform: translateX(200%);\n }\n}\n"],"mappings":""}
@@ -22,14 +22,14 @@ export type OreCardProps = {
22
22
  /** Internal padding size */
23
23
  padding?: PaddingSize;
24
24
  /** Visual style variant */
25
- variant?: 'solid' | 'flat' | 'glass' | 'frost';
25
+ variant?: 'solid' | 'flat' | 'frost';
26
26
  };
27
27
  /**
28
28
  * A versatile card container with semantic slots for media, header, body, footer, and actions.
29
29
  *
30
30
  * @element ore-card
31
31
  *
32
- * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'glass' | 'frost'
32
+ * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'frost'
33
33
  * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
34
34
  * @attr {string} padding - Internal padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'
35
35
  * @attr {string} elevation - Shadow elevation: '0' | '1' | '2' | '3' | '4' | '5'
@@ -1 +1 @@
1
- {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/content/card/card.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoB3E,gCAAgC;AAEhC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE;QAAE,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC;QAAC,OAAO,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;CAChD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,QAAQ,EAAG,UAAmB,CAAC"}
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/content/card/card.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoB3E,gCAAgC;AAEhC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE;QAAE,aAAa,EAAE,UAAU,GAAG,aAAa,CAAC;QAAC,OAAO,EAAE,SAAS,GAAG,UAAU,CAAA;KAAE,CAAC;CAC1F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,4BAA4B;IAC5B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CACtC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,QAAQ,EAAG,UAAmB,CAAC"}
@@ -26,6 +26,8 @@ export type { OrePaginationEvents, OrePaginationProps } from './pagination/pagin
26
26
  export { PAGINATION_TAG } from './pagination/pagination';
27
27
  export type { OreSeparatorProps } from './separator/separator';
28
28
  export { SEPARATOR_TAG } from './separator/separator';
29
+ export type { OreStatsProps, StatsTrendDirection, StatsVariant } from './stats/stats';
30
+ export { STATS_TAG } from './stats/stats';
29
31
  export type { OreStepProps } from './stepper/step';
30
32
  export { STEP_TAG } from './stepper/step';
31
33
  export type { OreStepperEvents, OreStepperProps, StepperContext } from './stepper/stepper';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -1,2 +1,2 @@
1
- var e=`@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-400);white-space:nowrap;display:block;overflow:hidden}.description:empty{display:none}.row:hover{background:var(--list-item-hover-bg,var(--color-contrast-100))}.row:focus-visible{outline:var(--focus-ring);outline-offset:-2px}:host([selected]) .row{color:var(--color-primary);background:var(--list-item-selected-bg,color-mix(in oklch, var(--color-primary) 10%, transparent))}:host([disabled]){pointer-events:none;opacity:.6}.actions{width:var(--_actions-width);transition:var(--_motion-transition,transform var(--transition-fast));align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.actions ::slotted(*){flex:1;height:100%}.actions-left{transform:translateX(calc((var(--_swipe-x,0) - 1) * 100%));left:0}.actions-right{transform:translateX(calc((var(--_swipe-x,0) + 1) * 100%));right:0}:host([revealed=left]){--_swipe-x:1}:host([revealed=right]){--_swipe-x:-1}:host:has(.actions-left:focus-within){--_swipe-x:1}:host:has(.actions-right:focus-within){--_swipe-x:-1}:host([data-dragging]) .row,:host([data-dragging]) .actions-left,:host([data-dragging]) .actions-right{transition:none}:host([data-confirming]) .actions-left,:host([data-confirming]) .actions-right{filter:saturate(1.4)brightness(.94)}}`;exports.default=e;
1
+ var e=`@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}:host([data-two-line]) .row{min-height:var(--_min-height-two-line,var(--size-18))}:host([actionable]) .row{cursor:pointer}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.leading[hidden],.trailing[hidden]{display:none}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-600);white-space:nowrap;display:block;overflow:hidden}.description:empty{display:none}.row:hover{background:var(--list-item-hover-bg,var(--color-contrast-100))}.row:focus-visible{outline:var(--focus-ring);outline-offset:-2px}:host([selected]) .row{color:var(--color-primary);background:var(--list-item-selected-bg,color-mix(in oklch, var(--color-primary) 10%, transparent))}:host([disabled]){pointer-events:none;opacity:.6}.actions{width:var(--_actions-width);transition:var(--_motion-transition,transform var(--transition-fast));align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.actions ::slotted(*){flex:1;height:100%}.actions-left{transform:translateX(calc((var(--_swipe-x,0) - 1) * 100%));left:0}.actions-right{transform:translateX(calc((var(--_swipe-x,0) + 1) * 100%));right:0}:host([revealed=left]){--_swipe-x:1}:host([revealed=right]){--_swipe-x:-1}:host:has(.actions-left:focus-within){--_swipe-x:1}:host:has(.actions-right:focus-within){--_swipe-x:-1}:host([data-dragging]) .row,:host([data-dragging]) .actions-left,:host([data-dragging]) .actions-right{transition:none}:host([data-confirming]) .actions-left,:host([data-confirming]) .actions-right{filter:saturate(1.4)brightness(.94)}}`;exports.default=e;
2
2
  //# sourceMappingURL=list-item.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-item.css.cjs","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-400);\n white-space: nowrap;\n }\n\n .description:empty {\n display: none;\n }\n\n .row:hover {\n background: var(--list-item-hover-bg, var(--color-contrast-100));\n }\n\n .row:focus-visible {\n outline: var(--focus-ring);\n outline-offset: -2px;\n }\n\n /* ========================================\n Selected / Disabled States\n ======================================== */\n\n :host([selected]) .row {\n color: var(--color-primary);\n background: var(--list-item-selected-bg, color-mix(in oklch, var(--color-primary) 10%, transparent));\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Swipe Action Panels\n ======================================== */\n\n .actions {\n position: absolute;\n inset-block: 0;\n display: flex;\n align-items: stretch;\n width: var(--_actions-width);\n transition: var(--_motion-transition, transform var(--transition-fast));\n }\n\n /* A single slotted action button fills the whole revealed panel — the common case (one big\n tappable target, e.g. a full-height \"Delete\" button) rather than a small icon-sized hit area.\n This stretches the slotted element's own light-DOM box, which is enough for plain elements\n (a native <button>, an <a>, ...). It is NOT enough on its own for `ore-button`: its visible\n surface is an inner `[part=\"button\"]` with a fixed height from its size preset, independent\n of its own host box size — pass `fullheight` on the `ore-button` itself too (see its own\n `fullheight` prop) to actually fill this panel edge-to-edge. */\n .actions ::slotted(*) {\n flex: 1;\n height: 100%;\n }\n\n .actions-left {\n left: 0;\n transform: translateX(calc((var(--_swipe-x, 0) - 1) * 100%));\n }\n\n .actions-right {\n right: 0;\n transform: translateX(calc((var(--_swipe-x, 0) + 1) * 100%));\n }\n\n /* `:host(:has(...))` (`:has()` as `:host()`'s functional argument) is invalid — `:host()`\n only accepts a compound selector and doesn't accept `:has()` inside it. The plain `:host`\n pseudo-class chained directly with `:has()` (no parentheses) is the valid form. Kept as\n separate rules (not grouped via a comma with the `[revealed]` rules) so a selector list\n doesn't silently drop the whole rule if either half were ever invalid again. */\n :host([revealed='left']) {\n --_swipe-x: 1;\n }\n\n :host([revealed='right']) {\n --_swipe-x: -1;\n }\n\n :host:has(.actions-left:focus-within) {\n --_swipe-x: 1;\n }\n\n :host:has(.actions-right:focus-within) {\n --_swipe-x: -1;\n }\n\n /* Suppress the transition while a drag is actively updating `--_swipe-x` inline so the row\n and action panels track the pointer 1:1 instead of lagging behind on every move event. */\n :host([data-dragging]) .row,\n :host([data-dragging]) .actions-left,\n :host([data-dragging]) .actions-right {\n transition: none;\n }\n\n /* Feedback that the drag has passed into \"swipe all the way through\" territory (close to\n CONFIRM_THRESHOLD) — set by list-item.ts's onMove once past ~85% of that distance, cleared\n on release/cancel/commit. Visual-only; the confirm itself fires from JS regardless of CSS. */\n :host([data-confirming]) .actions-left,\n :host([data-confirming]) .actions-right {\n filter: saturate(1.4) brightness(0.94);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"list-item.css.cjs","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n :host([data-two-line]) .row {\n min-height: var(--_min-height-two-line, var(--size-18));\n }\n\n :host([actionable]) .row {\n cursor: pointer;\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .leading[hidden],\n .trailing[hidden] {\n display: none;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-600);\n white-space: nowrap;\n }\n\n .description:empty {\n display: none;\n }\n\n .row:hover {\n background: var(--list-item-hover-bg, var(--color-contrast-100));\n }\n\n .row:focus-visible {\n outline: var(--focus-ring);\n outline-offset: -2px;\n }\n\n /* ========================================\n Selected / Disabled States\n ======================================== */\n\n :host([selected]) .row {\n color: var(--color-primary);\n background: var(--list-item-selected-bg, color-mix(in oklch, var(--color-primary) 10%, transparent));\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Swipe Action Panels\n ======================================== */\n\n .actions {\n position: absolute;\n inset-block: 0;\n display: flex;\n align-items: stretch;\n width: var(--_actions-width);\n transition: var(--_motion-transition, transform var(--transition-fast));\n }\n\n /* A single slotted action button fills the whole revealed panel — the common case (one big\n tappable target, e.g. a full-height \"Delete\" button) rather than a small icon-sized hit area.\n This stretches the slotted element's own light-DOM box, which is enough for plain elements\n (a native <button>, an <a>, ...). It is NOT enough on its own for `ore-button`: its visible\n surface is an inner `[part=\"button\"]` with a fixed height from its size preset, independent\n of its own host box size — pass `fullheight` on the `ore-button` itself too (see its own\n `fullheight` prop) to actually fill this panel edge-to-edge. */\n .actions ::slotted(*) {\n flex: 1;\n height: 100%;\n }\n\n .actions-left {\n left: 0;\n transform: translateX(calc((var(--_swipe-x, 0) - 1) * 100%));\n }\n\n .actions-right {\n right: 0;\n transform: translateX(calc((var(--_swipe-x, 0) + 1) * 100%));\n }\n\n /* `:host(:has(...))` (`:has()` as `:host()`'s functional argument) is invalid — `:host()`\n only accepts a compound selector and doesn't accept `:has()` inside it. The plain `:host`\n pseudo-class chained directly with `:has()` (no parentheses) is the valid form. Kept as\n separate rules (not grouped via a comma with the `[revealed]` rules) so a selector list\n doesn't silently drop the whole rule if either half were ever invalid again. */\n :host([revealed='left']) {\n --_swipe-x: 1;\n }\n\n :host([revealed='right']) {\n --_swipe-x: -1;\n }\n\n :host:has(.actions-left:focus-within) {\n --_swipe-x: 1;\n }\n\n :host:has(.actions-right:focus-within) {\n --_swipe-x: -1;\n }\n\n /* Suppress the transition while a drag is actively updating `--_swipe-x` inline so the row\n and action panels track the pointer 1:1 instead of lagging behind on every move event. */\n :host([data-dragging]) .row,\n :host([data-dragging]) .actions-left,\n :host([data-dragging]) .actions-right {\n transition: none;\n }\n\n /* Feedback that the drag has passed into \"swipe all the way through\" territory (close to\n CONFIRM_THRESHOLD) — set by list-item.ts's onMove once past ~85% of that distance, cleared\n on release/cancel/commit. Visual-only; the confirm itself fires from JS regardless of CSS. */\n :host([data-confirming]) .actions-left,\n :host([data-confirming]) .actions-right {\n filter: saturate(1.4) brightness(0.94);\n }\n}\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  //#region src/content/list/list-item.css?inline
2
- var e = "@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-400);white-space:nowrap;display:block;overflow:hidden}.description:empty{display:none}.row:hover{background:var(--list-item-hover-bg,var(--color-contrast-100))}.row:focus-visible{outline:var(--focus-ring);outline-offset:-2px}:host([selected]) .row{color:var(--color-primary);background:var(--list-item-selected-bg,color-mix(in oklch, var(--color-primary) 10%, transparent))}:host([disabled]){pointer-events:none;opacity:.6}.actions{width:var(--_actions-width);transition:var(--_motion-transition,transform var(--transition-fast));align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.actions ::slotted(*){flex:1;height:100%}.actions-left{transform:translateX(calc((var(--_swipe-x,0) - 1) * 100%));left:0}.actions-right{transform:translateX(calc((var(--_swipe-x,0) + 1) * 100%));right:0}:host([revealed=left]){--_swipe-x:1}:host([revealed=right]){--_swipe-x:-1}:host:has(.actions-left:focus-within){--_swipe-x:1}:host:has(.actions-right:focus-within){--_swipe-x:-1}:host([data-dragging]) .row,:host([data-dragging]) .actions-left,:host([data-dragging]) .actions-right{transition:none}:host([data-confirming]) .actions-left,:host([data-confirming]) .actions-right{filter:saturate(1.4)brightness(.94)}}";
2
+ var e = "@layer refine.base{:host{--_actions-width:var(--list-item-actions-width,var(--size-24));color:var(--color-contrast-700);display:block;position:relative;overflow:hidden}.row{z-index:1;box-sizing:border-box;gap:var(--_gap,var(--size-4));width:100%;min-height:var(--_min-height,var(--size-4));padding:var(--_padding,var(--size-2-5) var(--size-4));font-size:var(--_font-size,var(--text-sm));touch-action:pan-y;cursor:default;background:var(--list-item-bg,var(--color-canvas));transform:translateX(calc(var(--_swipe-x,0) * var(--_actions-width)));transition:var(--_motion-transition,transform var(--transition-fast), background var(--transition-fast));border:none;outline:none;align-items:center;display:flex;position:relative}.row:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){text-align:left;padding-right:var(--_padding-inline-end,var(--size-6))}.row:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){text-align:right;padding-left:var(--_padding-inline-end,var(--size-6))}:host([data-two-line]) .row{min-height:var(--_min-height-two-line,var(--size-18))}:host([actionable]) .row{cursor:pointer}.leading,.trailing{flex-shrink:0;align-items:center;display:flex}.leading[hidden],.trailing[hidden]{display:none}.content{gap:var(--size-0-5);flex-direction:column;flex:1;min-width:0;display:flex}.title{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.description{text-overflow:ellipsis;font-size:var(--text-xs);color:var(--color-contrast-600);white-space:nowrap;display:block;overflow:hidden}.description:empty{display:none}.row:hover{background:var(--list-item-hover-bg,var(--color-contrast-100))}.row:focus-visible{outline:var(--focus-ring);outline-offset:-2px}:host([selected]) .row{color:var(--color-primary);background:var(--list-item-selected-bg,color-mix(in oklch, var(--color-primary) 10%, transparent))}:host([disabled]){pointer-events:none;opacity:.6}.actions{width:var(--_actions-width);transition:var(--_motion-transition,transform var(--transition-fast));align-items:stretch;display:flex;position:absolute;top:0;bottom:0}.actions ::slotted(*){flex:1;height:100%}.actions-left{transform:translateX(calc((var(--_swipe-x,0) - 1) * 100%));left:0}.actions-right{transform:translateX(calc((var(--_swipe-x,0) + 1) * 100%));right:0}:host([revealed=left]){--_swipe-x:1}:host([revealed=right]){--_swipe-x:-1}:host:has(.actions-left:focus-within){--_swipe-x:1}:host:has(.actions-right:focus-within){--_swipe-x:-1}:host([data-dragging]) .row,:host([data-dragging]) .actions-left,:host([data-dragging]) .actions-right{transition:none}:host([data-confirming]) .actions-left,:host([data-confirming]) .actions-right{filter:saturate(1.4)brightness(.94)}}";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"list-item.css.js","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-400);\n white-space: nowrap;\n }\n\n .description:empty {\n display: none;\n }\n\n .row:hover {\n background: var(--list-item-hover-bg, var(--color-contrast-100));\n }\n\n .row:focus-visible {\n outline: var(--focus-ring);\n outline-offset: -2px;\n }\n\n /* ========================================\n Selected / Disabled States\n ======================================== */\n\n :host([selected]) .row {\n color: var(--color-primary);\n background: var(--list-item-selected-bg, color-mix(in oklch, var(--color-primary) 10%, transparent));\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Swipe Action Panels\n ======================================== */\n\n .actions {\n position: absolute;\n inset-block: 0;\n display: flex;\n align-items: stretch;\n width: var(--_actions-width);\n transition: var(--_motion-transition, transform var(--transition-fast));\n }\n\n /* A single slotted action button fills the whole revealed panel — the common case (one big\n tappable target, e.g. a full-height \"Delete\" button) rather than a small icon-sized hit area.\n This stretches the slotted element's own light-DOM box, which is enough for plain elements\n (a native <button>, an <a>, ...). It is NOT enough on its own for `ore-button`: its visible\n surface is an inner `[part=\"button\"]` with a fixed height from its size preset, independent\n of its own host box size — pass `fullheight` on the `ore-button` itself too (see its own\n `fullheight` prop) to actually fill this panel edge-to-edge. */\n .actions ::slotted(*) {\n flex: 1;\n height: 100%;\n }\n\n .actions-left {\n left: 0;\n transform: translateX(calc((var(--_swipe-x, 0) - 1) * 100%));\n }\n\n .actions-right {\n right: 0;\n transform: translateX(calc((var(--_swipe-x, 0) + 1) * 100%));\n }\n\n /* `:host(:has(...))` (`:has()` as `:host()`'s functional argument) is invalid — `:host()`\n only accepts a compound selector and doesn't accept `:has()` inside it. The plain `:host`\n pseudo-class chained directly with `:has()` (no parentheses) is the valid form. Kept as\n separate rules (not grouped via a comma with the `[revealed]` rules) so a selector list\n doesn't silently drop the whole rule if either half were ever invalid again. */\n :host([revealed='left']) {\n --_swipe-x: 1;\n }\n\n :host([revealed='right']) {\n --_swipe-x: -1;\n }\n\n :host:has(.actions-left:focus-within) {\n --_swipe-x: 1;\n }\n\n :host:has(.actions-right:focus-within) {\n --_swipe-x: -1;\n }\n\n /* Suppress the transition while a drag is actively updating `--_swipe-x` inline so the row\n and action panels track the pointer 1:1 instead of lagging behind on every move event. */\n :host([data-dragging]) .row,\n :host([data-dragging]) .actions-left,\n :host([data-dragging]) .actions-right {\n transition: none;\n }\n\n /* Feedback that the drag has passed into \"swipe all the way through\" territory (close to\n CONFIRM_THRESHOLD) — set by list-item.ts's onMove once past ~85% of that distance, cleared\n on release/cancel/commit. Visual-only; the confirm itself fires from JS regardless of CSS. */\n :host([data-confirming]) .actions-left,\n :host([data-confirming]) .actions-right {\n filter: saturate(1.4) brightness(0.94);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"list-item.css.js","names":[],"sources":["../../../src/content/list/list-item.css?inline"],"sourcesContent":["@layer refine.base {\n /* `--_gap` / `--_padding` / `--_font-size` are intentionally not emitted by any mixin in this\n component's own `styles` array — they're inherited from the parent `ore-list`'s\n `sizeVariantMixin(LIST_SIZE_PRESET)` call the same way `ore-menu-item` inherits\n `--_gap`/`--_font-size` from `ore-menu` (see `LIST_SIZE_PRESET`'s doc comment). The\n `var(..., fallback)` defaults below cover standalone use outside an `ore-list`. */\n :host {\n --_actions-width: var(--list-item-actions-width, var(--size-24));\n position: relative;\n display: block;\n overflow: hidden;\n color: var(--color-contrast-700);\n }\n\n /* ========================================\n Row\n ======================================== */\n\n .row {\n position: relative;\n z-index: 1;\n box-sizing: border-box;\n display: flex;\n gap: var(--_gap, var(--size-4));\n align-items: center;\n width: 100%;\n min-height: var(--_min-height, var(--size-4));\n padding: var(--_padding, var(--size-2-5) var(--size-4));\n padding-inline-end: var(--_padding-inline-end, var(--size-6));\n font-size: var(--_font-size, var(--text-sm));\n text-align: start;\n touch-action: pan-y;\n cursor: default;\n outline: none;\n background: var(--list-item-bg, var(--color-canvas));\n border: none;\n transform: translateX(calc(var(--_swipe-x, 0) * var(--_actions-width)));\n transition: var(--_motion-transition, transform var(--transition-fast), background var(--transition-fast));\n }\n\n :host([data-two-line]) .row {\n min-height: var(--_min-height-two-line, var(--size-18));\n }\n\n :host([actionable]) .row {\n cursor: pointer;\n }\n\n .leading,\n .trailing {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n }\n\n .leading[hidden],\n .trailing[hidden] {\n display: none;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--size-0-5);\n min-width: 0;\n }\n\n .title {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .description {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n color: var(--color-contrast-600);\n white-space: nowrap;\n }\n\n .description:empty {\n display: none;\n }\n\n .row:hover {\n background: var(--list-item-hover-bg, var(--color-contrast-100));\n }\n\n .row:focus-visible {\n outline: var(--focus-ring);\n outline-offset: -2px;\n }\n\n /* ========================================\n Selected / Disabled States\n ======================================== */\n\n :host([selected]) .row {\n color: var(--color-primary);\n background: var(--list-item-selected-bg, color-mix(in oklch, var(--color-primary) 10%, transparent));\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Swipe Action Panels\n ======================================== */\n\n .actions {\n position: absolute;\n inset-block: 0;\n display: flex;\n align-items: stretch;\n width: var(--_actions-width);\n transition: var(--_motion-transition, transform var(--transition-fast));\n }\n\n /* A single slotted action button fills the whole revealed panel — the common case (one big\n tappable target, e.g. a full-height \"Delete\" button) rather than a small icon-sized hit area.\n This stretches the slotted element's own light-DOM box, which is enough for plain elements\n (a native <button>, an <a>, ...). It is NOT enough on its own for `ore-button`: its visible\n surface is an inner `[part=\"button\"]` with a fixed height from its size preset, independent\n of its own host box size — pass `fullheight` on the `ore-button` itself too (see its own\n `fullheight` prop) to actually fill this panel edge-to-edge. */\n .actions ::slotted(*) {\n flex: 1;\n height: 100%;\n }\n\n .actions-left {\n left: 0;\n transform: translateX(calc((var(--_swipe-x, 0) - 1) * 100%));\n }\n\n .actions-right {\n right: 0;\n transform: translateX(calc((var(--_swipe-x, 0) + 1) * 100%));\n }\n\n /* `:host(:has(...))` (`:has()` as `:host()`'s functional argument) is invalid — `:host()`\n only accepts a compound selector and doesn't accept `:has()` inside it. The plain `:host`\n pseudo-class chained directly with `:has()` (no parentheses) is the valid form. Kept as\n separate rules (not grouped via a comma with the `[revealed]` rules) so a selector list\n doesn't silently drop the whole rule if either half were ever invalid again. */\n :host([revealed='left']) {\n --_swipe-x: 1;\n }\n\n :host([revealed='right']) {\n --_swipe-x: -1;\n }\n\n :host:has(.actions-left:focus-within) {\n --_swipe-x: 1;\n }\n\n :host:has(.actions-right:focus-within) {\n --_swipe-x: -1;\n }\n\n /* Suppress the transition while a drag is actively updating `--_swipe-x` inline so the row\n and action panels track the pointer 1:1 instead of lagging behind on every move event. */\n :host([data-dragging]) .row,\n :host([data-dragging]) .actions-left,\n :host([data-dragging]) .actions-right {\n transition: none;\n }\n\n /* Feedback that the drag has passed into \"swipe all the way through\" territory (close to\n CONFIRM_THRESHOLD) — set by list-item.ts's onMove once past ~85% of that distance, cleared\n on release/cancel/commit. Visual-only; the confirm itself fires from JS regardless of CSS. */\n :host([data-confirming]) .actions-left,\n :host([data-confirming]) .actions-right {\n filter: saturate(1.4) brightness(0.94);\n }\n}\n"],"mappings":""}
@@ -2,6 +2,11 @@
2
2
  export type ListItemRevealSide = 'left' | 'right';
3
3
  /** Events emitted by the list-item component */
4
4
  export type OreListItemEvents = {
5
+ /** Emitted when an actionable item is activated by pointer or keyboard. */
6
+ activate: {
7
+ item: HTMLElement;
8
+ value: null | string;
9
+ };
5
10
  /** Emitted when the revealed action panel closes (gesture, tap, or programmatic). */
6
11
  conceal: {
7
12
  item: HTMLElement;
@@ -32,6 +37,8 @@ export type OreListItemEvents = {
32
37
  };
33
38
  /** List-item component properties */
34
39
  export type OreListItemProps = {
40
+ /** Enable pointer and Enter/Space activation with button semantics. */
41
+ actionable?: boolean;
35
42
  /** Disable this item — blocks pointer interaction, swipe actions, and selection */
36
43
  disabled?: boolean;
37
44
  /** Which action panel is revealed: 'left' | 'right' (absent = closed). Settable programmatically. */
@@ -63,11 +70,13 @@ export type OreListItemProps = {
63
70
  *
64
71
  * @element ore-list-item
65
72
  *
73
+ * @attr {boolean} actionable - Enable pointer and Enter/Space activation with button semantics
66
74
  * @attr {boolean} disabled - Disable this item
67
75
  * @attr {boolean} selected - Read-only reflected attribute: `true` when this item's `value` matches the parent `ore-list`'s `value`. Not independently settable.
68
76
  * @attr {string} value - Opaque value compared against the parent list's `value` to derive `selected`; also reported in select/change events
69
77
  * @attr {string} revealed - Which action panel is revealed: 'left' | 'right'
70
78
  *
79
+ * @fires activate - Actionable item is activated. detail: { item: HTMLElement, value: string | null }
71
80
  * @fires select - Item becomes selected. detail: { item: HTMLElement, value: string | null }
72
81
  * @fires deselect - Item becomes deselected. detail: { item: HTMLElement, value: string | null }
73
82
  * @fires reveal - An action panel opens. detail: { item: HTMLElement, side: 'left' | 'right' }
@@ -1 +1 @@
1
- {"version":3,"file":"list-item.d.ts","sourceRoot":"","sources":["../../../src/content/list/list-item.ts"],"names":[],"mappings":"AAqBA,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qFAAqF;IACrF,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACzD,gDAAgD;IAChD,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,0DAA0D;IAC1D,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACxD,iGAAiG;IACjG,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;CACrD,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,eAAO,MAAM,aAAa,EAAG,eAAwB,CAAC"}
1
+ {"version":3,"file":"list-item.d.ts","sourceRoot":"","sources":["../../../src/content/list/list-item.ts"],"names":[],"mappings":"AAqBA,sEAAsE;AACtE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2EAA2E;IAC3E,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,qFAAqF;IACrF,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACzD,gDAAgD;IAChD,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;IACtD,0DAA0D;IAC1D,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACxD,iGAAiG;IACjG,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,CAAC;CACrD,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qGAAqG;IACrG,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAMF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,eAAO,MAAM,aAAa,EAAG,eAAwB,CAAC"}
@@ -1,2 +1,2 @@
1
- var e=`@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}:host([variant=glass]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--color-canvas) 70%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 40%, transparent);-webkit-backdrop-filter:blur(var(--blur-md)) saturate(140%);backdrop-filter:blur(var(--blur-md)) saturate(140%)}:host([variant=glass]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--color-canvas) 55%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent)}button:hover:not(:is(:disabled,[aria-current=page])){background:var(--color-contrast-100)}button:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button[aria-current=page]{font-weight:var(--font-bold);color:var(--_theme-contrast,var(--color-canvas));cursor:default;background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([variant=ghost]) button[aria-current=page],:host(:not([variant])) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=solid]) button[aria-current=page]{background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=flat]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=bordered]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=text]) button[aria-current=page]{color:var(--_theme-focus);text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}:host([variant=frost]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--_theme-base) 70%, transparent);border-color:var(--_theme-base)}:host([variant=glass]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--color-canvas) 90%, transparent);border-color:var(--_theme-base)}button:disabled{cursor:not-allowed;opacity:.4}.ellipsis{min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));font-size:var(--_font-size,var(--text-sm));color:var(--color-contrast-400);cursor:default;justify-content:center;align-items:center;display:inline-flex}}@layer refine.utilities{:host([size=sm]){--pagination-item-size:var(--size-7);--pagination-gap:var(--size-0_5);--_font-size:var(--text-xs)}:host([size=lg]){--pagination-item-size:var(--size-11);--_font-size:var(--text-base)}}`;exports.default=e;
1
+ var e=`@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}button:hover:not(:is(:disabled,[aria-current=page])){background:var(--color-contrast-100)}button:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button[aria-current=page]{font-weight:var(--font-bold);color:var(--_theme-contrast,var(--color-canvas));cursor:default;background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([variant=ghost]) button[aria-current=page],:host(:not([variant])) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=solid]) button[aria-current=page]{background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=flat]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=bordered]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=text]) button[aria-current=page]{color:var(--_theme-focus);text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}:host([variant=frost]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--_theme-base) 70%, transparent);border-color:var(--_theme-base)}button:disabled{cursor:not-allowed;opacity:.4}.ellipsis{min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));font-size:var(--_font-size,var(--text-sm));color:var(--color-contrast-400);cursor:default;justify-content:center;align-items:center;display:inline-flex}}@layer refine.utilities{:host([size=sm]){--pagination-item-size:var(--size-7);--pagination-gap:var(--size-0_5);--_font-size:var(--text-xs)}:host([size=lg]){--pagination-item-size:var(--size-11);--_font-size:var(--text-base)}}`;exports.default=e;
2
2
  //# sourceMappingURL=pagination.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.css.cjs","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n :host([variant='glass']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--color-canvas) 70%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 40%, transparent);\n backdrop-filter: blur(var(--blur-md)) saturate(140%);\n }\n\n :host([variant='glass']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--color-canvas) 55%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n }\n\n button:hover:not(:disabled, [aria-current='page']) {\n background: var(--color-contrast-100);\n }\n\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n /* Selected page styling - applies to all variants */\n button[aria-current='page'] {\n font-weight: var(--font-bold);\n color: var(--_theme-contrast, var(--color-canvas));\n cursor: default;\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([variant='ghost']) button[aria-current='page'],\n :host(:not([variant])) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='solid']) button[aria-current='page'] {\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='flat']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='bordered']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='text']) button[aria-current='page'] {\n color: var(--_theme-focus);\n text-decoration-line: underline;\n text-decoration-thickness: 2px;\n text-underline-offset: 4px;\n }\n\n :host([variant='frost']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--_theme-base) 70%, transparent);\n border-color: var(--_theme-base);\n }\n\n :host([variant='glass']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--color-canvas) 90%, transparent);\n border-color: var(--_theme-base);\n }\n\n button:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n font-size: var(--_font-size, var(--text-sm));\n color: var(--color-contrast-400);\n cursor: default;\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --pagination-item-size: var(--size-7);\n --pagination-gap: var(--size-0_5);\n --_font-size: var(--text-xs);\n }\n\n :host([size='lg']) {\n --pagination-item-size: var(--size-11);\n --_font-size: var(--text-base);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"pagination.css.cjs","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n button:hover:not(:disabled, [aria-current='page']) {\n background: var(--color-contrast-100);\n }\n\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n /* Selected page styling - applies to all variants */\n button[aria-current='page'] {\n font-weight: var(--font-bold);\n color: var(--_theme-contrast, var(--color-canvas));\n cursor: default;\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([variant='ghost']) button[aria-current='page'],\n :host(:not([variant])) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='solid']) button[aria-current='page'] {\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='flat']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='bordered']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='text']) button[aria-current='page'] {\n color: var(--_theme-focus);\n text-decoration-line: underline;\n text-decoration-thickness: 2px;\n text-underline-offset: 4px;\n }\n\n :host([variant='frost']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--_theme-base) 70%, transparent);\n border-color: var(--_theme-base);\n }\n\n button:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n font-size: var(--_font-size, var(--text-sm));\n color: var(--color-contrast-400);\n cursor: default;\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --pagination-item-size: var(--size-7);\n --pagination-gap: var(--size-0_5);\n --_font-size: var(--text-xs);\n }\n\n :host([size='lg']) {\n --pagination-item-size: var(--size-11);\n --_font-size: var(--text-base);\n }\n}\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  //#region src/content/pagination/pagination.css?inline
2
- var e = "@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}:host([variant=glass]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--color-canvas) 70%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 40%, transparent);-webkit-backdrop-filter:blur(var(--blur-md)) saturate(140%);backdrop-filter:blur(var(--blur-md)) saturate(140%)}:host([variant=glass]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--color-canvas) 55%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent)}button:hover:not(:is(:disabled,[aria-current=page])){background:var(--color-contrast-100)}button:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button[aria-current=page]{font-weight:var(--font-bold);color:var(--_theme-contrast,var(--color-canvas));cursor:default;background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([variant=ghost]) button[aria-current=page],:host(:not([variant])) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=solid]) button[aria-current=page]{background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=flat]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=bordered]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=text]) button[aria-current=page]{color:var(--_theme-focus);text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}:host([variant=frost]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--_theme-base) 70%, transparent);border-color:var(--_theme-base)}:host([variant=glass]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--color-canvas) 90%, transparent);border-color:var(--_theme-base)}button:disabled{cursor:not-allowed;opacity:.4}.ellipsis{min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));font-size:var(--_font-size,var(--text-sm));color:var(--color-contrast-400);cursor:default;justify-content:center;align-items:center;display:inline-flex}}@layer refine.utilities{:host([size=sm]){--pagination-item-size:var(--size-7);--pagination-gap:var(--size-0_5);--_font-size:var(--text-xs)}:host([size=lg]){--pagination-item-size:var(--size-11);--_font-size:var(--text-base)}}";
2
+ var e = "@layer refine.base{:host{gap:var(--size-1);align-items:center;display:flex}.pagination{gap:var(--pagination-gap,var(--size-1));align-items:center;margin:0;padding:0;list-style:none;display:flex}li{display:contents}button{all:unset;box-sizing:border-box;min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));min-height:var(--_touch-target);padding:0 var(--size-2);font-size:var(--_font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--color-contrast-700);cursor:pointer;-webkit-user-select:none;user-select:none;border:var(--border) solid transparent;border-radius:var(--pagination-radius,var(--rounded-lg));transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}:host(:not([variant])) button,:host([variant=ghost]) button{color:var(--color-contrast-700);background:0 0;border-width:0;border-color:#0000}:host(:not([variant])) button:hover:not(:is(:disabled,[aria-current=page])),:host([variant=ghost]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop)}:host([variant=solid]) button{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=solid]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-focus)}:host([variant=flat]) button{color:var(--_theme-base);background:color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));border-color:color-mix(in oklch, var(--_theme-focus) 20%, transparent);box-shadow:var(--inset-shadow-2xs)}:host([variant=flat]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus)}:host([variant=bordered]) button{color:var(--_theme-base);background:var(--_theme-backdrop);border-color:var(--_theme-border);box-shadow:var(--inset-shadow-xs)}:host([variant=bordered]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button{color:var(--_theme-base);border-color:var(--_theme-base);background:0 0}:host([variant=outline]) button:hover:not(:is(:disabled,[aria-current=page])){background:var(--_theme-backdrop);border-color:var(--_theme-focus)}:host([variant=text]) button{color:var(--_theme-base);background:0 0;border-width:0;border-color:#0000}:host([variant=text]) button:hover:not(:is(:disabled,[aria-current=page])){color:var(--_theme-focus);background:0 0}:host([variant=frost]) button{color:var(--_theme-content);background:color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);border-color:color-mix(in oklch, var(--_theme-border) 45%, transparent);-webkit-backdrop-filter:blur(var(--blur-xl)) saturate(200%);backdrop-filter:blur(var(--blur-xl)) saturate(200%)}:host([variant=frost]) button:hover:not(:is(:disabled,[aria-current=page])){background:color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);border-color:color-mix(in oklch, var(--_theme-focus) 55%, transparent)}button:hover:not(:is(:disabled,[aria-current=page])){background:var(--color-contrast-100)}button:focus-visible{outline:var(--border-2) solid var(--_theme-base,var(--color-contrast-500));outline-offset:var(--border-2)}button[aria-current=page]{font-weight:var(--font-bold);color:var(--_theme-contrast,var(--color-canvas));cursor:default;background:var(--_theme-base,var(--color-contrast-800));border-color:var(--_theme-base,var(--color-contrast-800))}:host([variant=ghost]) button[aria-current=page],:host(:not([variant])) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=solid]) button[aria-current=page]{background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=flat]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=bordered]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-focus);border-color:var(--_theme-focus)}:host([variant=outline]) button[aria-current=page]{color:var(--_theme-contrast);background:var(--_theme-base);border-color:var(--_theme-base)}:host([variant=text]) button[aria-current=page]{color:var(--_theme-focus);text-underline-offset:4px;text-decoration-line:underline;text-decoration-thickness:2px}:host([variant=frost]) button[aria-current=page]{color:var(--_theme-contrast);background:color-mix(in oklch, var(--_theme-base) 70%, transparent);border-color:var(--_theme-base)}button:disabled{cursor:not-allowed;opacity:.4}.ellipsis{min-width:var(--pagination-item-size,var(--size-9));height:var(--pagination-item-size,var(--size-9));font-size:var(--_font-size,var(--text-sm));color:var(--color-contrast-400);cursor:default;justify-content:center;align-items:center;display:inline-flex}}@layer refine.utilities{:host([size=sm]){--pagination-item-size:var(--size-7);--pagination-gap:var(--size-0_5);--_font-size:var(--text-xs)}:host([size=lg]){--pagination-item-size:var(--size-11);--_font-size:var(--text-base)}}";
3
3
  //#endregion
4
4
  export { e as default };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.css.js","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n :host([variant='glass']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--color-canvas) 70%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 40%, transparent);\n backdrop-filter: blur(var(--blur-md)) saturate(140%);\n }\n\n :host([variant='glass']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--color-canvas) 55%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n }\n\n button:hover:not(:disabled, [aria-current='page']) {\n background: var(--color-contrast-100);\n }\n\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n /* Selected page styling - applies to all variants */\n button[aria-current='page'] {\n font-weight: var(--font-bold);\n color: var(--_theme-contrast, var(--color-canvas));\n cursor: default;\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([variant='ghost']) button[aria-current='page'],\n :host(:not([variant])) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='solid']) button[aria-current='page'] {\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='flat']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='bordered']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='text']) button[aria-current='page'] {\n color: var(--_theme-focus);\n text-decoration-line: underline;\n text-decoration-thickness: 2px;\n text-underline-offset: 4px;\n }\n\n :host([variant='frost']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--_theme-base) 70%, transparent);\n border-color: var(--_theme-base);\n }\n\n :host([variant='glass']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--color-canvas) 90%, transparent);\n border-color: var(--_theme-base);\n }\n\n button:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n font-size: var(--_font-size, var(--text-sm));\n color: var(--color-contrast-400);\n cursor: default;\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --pagination-item-size: var(--size-7);\n --pagination-gap: var(--size-0_5);\n --_font-size: var(--text-xs);\n }\n\n :host([size='lg']) {\n --pagination-item-size: var(--size-11);\n --_font-size: var(--text-base);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"pagination.css.js","names":[],"sources":["../../../src/content/pagination/pagination.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n display: flex;\n gap: var(--size-1);\n align-items: center;\n }\n\n .pagination {\n display: flex;\n gap: var(--pagination-gap, var(--size-1));\n align-items: center;\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n li {\n display: contents;\n }\n\n button {\n all: unset;\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n min-height: var(--_touch-target);\n padding: 0 var(--size-2);\n font-size: var(--_font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--color-contrast-700);\n cursor: pointer;\n user-select: none;\n border: var(--border) solid transparent;\n border-radius: var(--pagination-radius, var(--rounded-lg));\n transition:\n background var(--transition-fast),\n color var(--transition-fast),\n border-color var(--transition-fast);\n }\n\n /* Default (ghost-like) behavior unless variant is specified */\n :host(:not([variant])) button,\n :host([variant='ghost']) button {\n color: var(--color-contrast-700);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host(:not([variant])) button:hover:not(:disabled, [aria-current='page']),\n :host([variant='ghost']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n }\n\n :host([variant='solid']) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='solid']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-focus);\n }\n\n :host([variant='flat']) button {\n color: var(--_theme-base);\n background: color-mix(in oklch, var(--_theme-backdrop) 8%, var(--color-contrast-100));\n border-color: color-mix(in oklch, var(--_theme-focus) 20%, transparent);\n box-shadow: var(--inset-shadow-2xs);\n }\n\n :host([variant='flat']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n }\n\n :host([variant='bordered']) button {\n color: var(--_theme-base);\n background: var(--_theme-backdrop);\n border-color: var(--_theme-border);\n box-shadow: var(--inset-shadow-xs);\n }\n\n :host([variant='bordered']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: var(--_theme-base);\n }\n\n :host([variant='outline']) button:hover:not(:disabled, [aria-current='page']) {\n background: var(--_theme-backdrop);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='text']) button {\n color: var(--_theme-base);\n background: transparent;\n border-color: transparent;\n border-width: 0;\n }\n\n :host([variant='text']) button:hover:not(:disabled, [aria-current='page']) {\n color: var(--_theme-focus);\n background: transparent;\n }\n\n :host([variant='frost']) button {\n color: var(--_theme-content);\n background: color-mix(in oklch, var(--_theme-backdrop) 45%, transparent);\n border-color: color-mix(in oklch, var(--_theme-border) 45%, transparent);\n backdrop-filter: blur(var(--blur-xl)) saturate(200%);\n }\n\n :host([variant='frost']) button:hover:not(:disabled, [aria-current='page']) {\n background: color-mix(in oklch, var(--_theme-backdrop) 65%, transparent);\n border-color: color-mix(in oklch, var(--_theme-focus) 55%, transparent);\n }\n\n button:hover:not(:disabled, [aria-current='page']) {\n background: var(--color-contrast-100);\n }\n\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-base, var(--color-contrast-500));\n outline-offset: var(--border-2);\n }\n\n /* Selected page styling - applies to all variants */\n button[aria-current='page'] {\n font-weight: var(--font-bold);\n color: var(--_theme-contrast, var(--color-canvas));\n cursor: default;\n background: var(--_theme-base, var(--color-contrast-800));\n border-color: var(--_theme-base, var(--color-contrast-800));\n }\n\n :host([variant='ghost']) button[aria-current='page'],\n :host(:not([variant])) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='solid']) button[aria-current='page'] {\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='flat']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='bordered']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-focus);\n border-color: var(--_theme-focus);\n }\n\n :host([variant='outline']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n border-color: var(--_theme-base);\n }\n\n :host([variant='text']) button[aria-current='page'] {\n color: var(--_theme-focus);\n text-decoration-line: underline;\n text-decoration-thickness: 2px;\n text-underline-offset: 4px;\n }\n\n :host([variant='frost']) button[aria-current='page'] {\n color: var(--_theme-contrast);\n background: color-mix(in oklch, var(--_theme-base) 70%, transparent);\n border-color: var(--_theme-base);\n }\n\n button:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n\n .ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pagination-item-size, var(--size-9));\n height: var(--pagination-item-size, var(--size-9));\n font-size: var(--_font-size, var(--text-sm));\n color: var(--color-contrast-400);\n cursor: default;\n }\n}\n\n@layer refine.utilities {\n :host([size='sm']) {\n --pagination-item-size: var(--size-7);\n --pagination-gap: var(--size-0_5);\n --_font-size: var(--text-xs);\n }\n\n :host([size='lg']) {\n --pagination-item-size: var(--size-11);\n --_font-size: var(--text-base);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ var e=`@layer refine.base{:host{--_bg:var(--stats-bg,var(--color-canvas));--_color:var(--stats-color,var(--color-contrast-900));--_border-color:var(--stats-border-color,var(--color-divider));--_radius:var(--stats-radius,var(--rounded-lg));--_padding:var(--stats-padding,var(--size-4));--_min-height:var(--stats-min-height,var(--size-32));--_value-size:var(--stats-value-size,var(--text-2xl));--_icon-size:var(--size-9);--_gap:var(--size-3);min-width:0;display:block}.stats{box-sizing:border-box;gap:var(--_gap);width:100%;min-width:0;min-height:var(--_min-height);padding:var(--_padding);color:var(--_color);background:var(--_bg);border:var(--border) solid var(--_border-color);border-radius:var(--_radius);flex-direction:column;display:flex;position:relative;overflow:hidden}.header,.body,.footer{min-width:0;display:flex}.header{gap:var(--size-2);align-items:center}.icon{flex:0 0 var(--_icon-size);width:var(--_icon-size);height:var(--_icon-size);color:var(--_theme-base,var(--color-primary));background:var(--stats-icon-bg,var(--_theme-backdrop,var(--color-contrast-100)));border-radius:var(--rounded-md);place-items:center;display:grid}.label,.description,.trend{text-overflow:ellipsis;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.label{font-weight:var(--font-semibold);color:var(--color-contrast-700)}.body{gap:var(--size-3);flex:1;justify-content:space-between;align-items:end}.value{text-overflow:ellipsis;min-width:0;font-size:var(--_value-size);font-variant-numeric:tabular-nums;line-height:var(--leading-tight);color:inherit;letter-spacing:-.03em;white-space:nowrap;overflow:hidden}.visual{flex:0 45%;justify-content:end;align-items:end;min-width:50%;display:flex;position:absolute;bottom:0;right:0}.footer{gap:var(--size-1);align-items:center}.trend{font-weight:var(--font-semibold);color:var(--color-contrast-700);flex-shrink:0}.trend[data-direction=up]{color:var(--stats-trend-up,var(--color-success))}.trend[data-direction=down]{color:var(--stats-trend-down,var(--color-error))}.description{min-width:0;color:var(--color-contrast-700)}.loading{z-index:2;pointer-events:none;background:linear-gradient(100deg, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%, color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%);background-size:220% 100%;display:none;position:absolute;inset:0}[hidden]{display:none}}@layer refine.variants{:host([variant=plain]) .stats{background:var(--stats-bg,transparent);border:0;border-radius:0;min-height:0}:host([variant=solid]){--_bg:var(--stats-bg,var(--_theme-base));--_color:var(--stats-color,var(--_theme-contrast));--_border-color:var(--stats-border-color,var(--_theme-base))}:host([variant=solid]) .label,:host([variant=solid]) .description,:host([variant=solid]) .trend{color:color-mix(in oklch, var(--_color) 78%, transparent)}}@layer refine.overrides{:host([loading]) .loading{animation:var(--_motion-animation,stats-loading 1.4s linear infinite);display:block}:host([loading]) .header,:host([loading]) .body,:host([loading]) .footer{visibility:hidden}:host([disabled]){pointer-events:none;opacity:.55;filter:grayscale(.35)}}@keyframes stats-loading{0%{background-position:100% 0}to{background-position:-120% 0}}`;exports.default=e;
2
+ //# sourceMappingURL=stats.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.css.cjs","names":[],"sources":["../../../src/content/stats/stats.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--stats-bg, var(--color-canvas));\n --_color: var(--stats-color, var(--color-contrast-900));\n --_border-color: var(--stats-border-color, var(--color-divider));\n --_radius: var(--stats-radius, var(--rounded-lg));\n --_padding: var(--stats-padding, var(--size-4));\n --_min-height: var(--stats-min-height, var(--size-32));\n --_value-size: var(--stats-value-size, var(--text-2xl));\n --_icon-size: var(--size-9);\n --_gap: var(--size-3);\n\n display: block;\n min-width: 0;\n }\n\n .stats {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--_gap);\n width: 100%;\n min-width: 0;\n min-height: var(--_min-height);\n padding: var(--_padding);\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border: var(--border) solid var(--_border-color);\n border-radius: var(--_radius);\n }\n\n .header,\n .body,\n .footer {\n display: flex;\n min-width: 0;\n }\n\n .header {\n gap: var(--size-2);\n align-items: center;\n }\n\n .icon {\n display: grid;\n flex: 0 0 var(--_icon-size);\n place-items: center;\n width: var(--_icon-size);\n height: var(--_icon-size);\n color: var(--_theme-base, var(--color-primary));\n background: var(--stats-icon-bg, var(--_theme-backdrop, var(--color-contrast-100)));\n border-radius: var(--rounded-md);\n }\n\n .label,\n .description,\n .trend {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .label {\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .body {\n flex: 1;\n gap: var(--size-3);\n align-items: end;\n justify-content: space-between;\n }\n\n .value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--_value-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--leading-tight);\n color: inherit;\n letter-spacing: -0.03em;\n white-space: nowrap;\n }\n\n .visual {\n position: absolute;\n right: 0;\n bottom: 0;\n display: flex;\n flex: 0 1 45%;\n align-items: end;\n justify-content: end;\n min-width: 50%;\n }\n\n .footer {\n gap: var(--size-1);\n align-items: center;\n }\n\n .trend {\n flex-shrink: 0;\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .trend[data-direction='up'] {\n color: var(--stats-trend-up, var(--color-success));\n }\n\n .trend[data-direction='down'] {\n color: var(--stats-trend-down, var(--color-error));\n }\n\n .description {\n min-width: 0;\n color: var(--color-contrast-700);\n }\n\n .loading {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: none;\n pointer-events: none;\n background: linear-gradient(\n 100deg,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%,\n color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%\n );\n background-size: 220% 100%;\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n :host([variant='plain']) .stats {\n min-height: 0;\n background: var(--stats-bg, transparent);\n border: 0;\n border-radius: 0;\n }\n\n :host([variant='solid']) {\n --_bg: var(--stats-bg, var(--_theme-base));\n --_color: var(--stats-color, var(--_theme-contrast));\n --_border-color: var(--stats-border-color, var(--_theme-base));\n }\n\n :host([variant='solid']) .label,\n :host([variant='solid']) .description,\n :host([variant='solid']) .trend {\n color: color-mix(in oklch, var(--_color) 78%, transparent);\n }\n}\n\n@layer refine.overrides {\n :host([loading]) .loading {\n display: block;\n animation: var(--_motion-animation, stats-loading 1.4s linear infinite);\n }\n\n :host([loading]) .header,\n :host([loading]) .body,\n :host([loading]) .footer {\n visibility: hidden;\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.55;\n filter: grayscale(0.35);\n }\n}\n\n@keyframes stats-loading {\n from {\n background-position: 100% 0;\n }\n\n to {\n background-position: -120% 0;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/content/stats/stats.css?inline
2
+ var e = "@layer refine.base{:host{--_bg:var(--stats-bg,var(--color-canvas));--_color:var(--stats-color,var(--color-contrast-900));--_border-color:var(--stats-border-color,var(--color-divider));--_radius:var(--stats-radius,var(--rounded-lg));--_padding:var(--stats-padding,var(--size-4));--_min-height:var(--stats-min-height,var(--size-32));--_value-size:var(--stats-value-size,var(--text-2xl));--_icon-size:var(--size-9);--_gap:var(--size-3);min-width:0;display:block}.stats{box-sizing:border-box;gap:var(--_gap);width:100%;min-width:0;min-height:var(--_min-height);padding:var(--_padding);color:var(--_color);background:var(--_bg);border:var(--border) solid var(--_border-color);border-radius:var(--_radius);flex-direction:column;display:flex;position:relative;overflow:hidden}.header,.body,.footer{min-width:0;display:flex}.header{gap:var(--size-2);align-items:center}.icon{flex:0 0 var(--_icon-size);width:var(--_icon-size);height:var(--_icon-size);color:var(--_theme-base,var(--color-primary));background:var(--stats-icon-bg,var(--_theme-backdrop,var(--color-contrast-100)));border-radius:var(--rounded-md);place-items:center;display:grid}.label,.description,.trend{text-overflow:ellipsis;font-size:var(--text-xs);white-space:nowrap;overflow:hidden}.label{font-weight:var(--font-semibold);color:var(--color-contrast-700)}.body{gap:var(--size-3);flex:1;justify-content:space-between;align-items:end}.value{text-overflow:ellipsis;min-width:0;font-size:var(--_value-size);font-variant-numeric:tabular-nums;line-height:var(--leading-tight);color:inherit;letter-spacing:-.03em;white-space:nowrap;overflow:hidden}.visual{flex:0 45%;justify-content:end;align-items:end;min-width:50%;display:flex;position:absolute;bottom:0;right:0}.footer{gap:var(--size-1);align-items:center}.trend{font-weight:var(--font-semibold);color:var(--color-contrast-700);flex-shrink:0}.trend[data-direction=up]{color:var(--stats-trend-up,var(--color-success))}.trend[data-direction=down]{color:var(--stats-trend-down,var(--color-error))}.description{min-width:0;color:var(--color-contrast-700)}.loading{z-index:2;pointer-events:none;background:linear-gradient(100deg, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%, color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%, color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%);background-size:220% 100%;display:none;position:absolute;inset:0}[hidden]{display:none}}@layer refine.variants{:host([variant=plain]) .stats{background:var(--stats-bg,transparent);border:0;border-radius:0;min-height:0}:host([variant=solid]){--_bg:var(--stats-bg,var(--_theme-base));--_color:var(--stats-color,var(--_theme-contrast));--_border-color:var(--stats-border-color,var(--_theme-base))}:host([variant=solid]) .label,:host([variant=solid]) .description,:host([variant=solid]) .trend{color:color-mix(in oklch, var(--_color) 78%, transparent)}}@layer refine.overrides{:host([loading]) .loading{animation:var(--_motion-animation,stats-loading 1.4s linear infinite);display:block}:host([loading]) .header,:host([loading]) .body,:host([loading]) .footer{visibility:hidden}:host([disabled]){pointer-events:none;opacity:.55;filter:grayscale(.35)}}@keyframes stats-loading{0%{background-position:100% 0}to{background-position:-120% 0}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=stats.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.css.js","names":[],"sources":["../../../src/content/stats/stats.css?inline"],"sourcesContent":["@layer refine.base {\n :host {\n --_bg: var(--stats-bg, var(--color-canvas));\n --_color: var(--stats-color, var(--color-contrast-900));\n --_border-color: var(--stats-border-color, var(--color-divider));\n --_radius: var(--stats-radius, var(--rounded-lg));\n --_padding: var(--stats-padding, var(--size-4));\n --_min-height: var(--stats-min-height, var(--size-32));\n --_value-size: var(--stats-value-size, var(--text-2xl));\n --_icon-size: var(--size-9);\n --_gap: var(--size-3);\n\n display: block;\n min-width: 0;\n }\n\n .stats {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--_gap);\n width: 100%;\n min-width: 0;\n min-height: var(--_min-height);\n padding: var(--_padding);\n overflow: hidden;\n color: var(--_color);\n background: var(--_bg);\n border: var(--border) solid var(--_border-color);\n border-radius: var(--_radius);\n }\n\n .header,\n .body,\n .footer {\n display: flex;\n min-width: 0;\n }\n\n .header {\n gap: var(--size-2);\n align-items: center;\n }\n\n .icon {\n display: grid;\n flex: 0 0 var(--_icon-size);\n place-items: center;\n width: var(--_icon-size);\n height: var(--_icon-size);\n color: var(--_theme-base, var(--color-primary));\n background: var(--stats-icon-bg, var(--_theme-backdrop, var(--color-contrast-100)));\n border-radius: var(--rounded-md);\n }\n\n .label,\n .description,\n .trend {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--text-xs);\n white-space: nowrap;\n }\n\n .label {\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .body {\n flex: 1;\n gap: var(--size-3);\n align-items: end;\n justify-content: space-between;\n }\n\n .value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: var(--_value-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--leading-tight);\n color: inherit;\n letter-spacing: -0.03em;\n white-space: nowrap;\n }\n\n .visual {\n position: absolute;\n right: 0;\n bottom: 0;\n display: flex;\n flex: 0 1 45%;\n align-items: end;\n justify-content: end;\n min-width: 50%;\n }\n\n .footer {\n gap: var(--size-1);\n align-items: center;\n }\n\n .trend {\n flex-shrink: 0;\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n }\n\n .trend[data-direction='up'] {\n color: var(--stats-trend-up, var(--color-success));\n }\n\n .trend[data-direction='down'] {\n color: var(--stats-trend-down, var(--color-error));\n }\n\n .description {\n min-width: 0;\n color: var(--color-contrast-700);\n }\n\n .loading {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: none;\n pointer-events: none;\n background: linear-gradient(\n 100deg,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 20%,\n color-mix(in oklch, var(--_bg) 72%, var(--color-contrast-200)) 45%,\n color-mix(in oklch, var(--_bg) 88%, var(--color-contrast-200)) 70%\n );\n background-size: 220% 100%;\n }\n\n [hidden] {\n display: none;\n }\n}\n\n@layer refine.variants {\n :host([variant='plain']) .stats {\n min-height: 0;\n background: var(--stats-bg, transparent);\n border: 0;\n border-radius: 0;\n }\n\n :host([variant='solid']) {\n --_bg: var(--stats-bg, var(--_theme-base));\n --_color: var(--stats-color, var(--_theme-contrast));\n --_border-color: var(--stats-border-color, var(--_theme-base));\n }\n\n :host([variant='solid']) .label,\n :host([variant='solid']) .description,\n :host([variant='solid']) .trend {\n color: color-mix(in oklch, var(--_color) 78%, transparent);\n }\n}\n\n@layer refine.overrides {\n :host([loading]) .loading {\n display: block;\n animation: var(--_motion-animation, stats-loading 1.4s linear infinite);\n }\n\n :host([loading]) .header,\n :host([loading]) .body,\n :host([loading]) .footer {\n visibility: hidden;\n }\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.55;\n filter: grayscale(0.35);\n }\n}\n\n@keyframes stats-loading {\n from {\n background-position: 100% 0;\n }\n\n to {\n background-position: -120% 0;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,72 @@
1
+ import type { ComponentSize, RoundedSize, ThemeColor } from '../../types';
2
+ export type StatsTrendDirection = 'down' | 'neutral' | 'up';
3
+ export type StatsVariant = 'outlined' | 'plain' | 'solid';
4
+ export type OreStatsProps = {
5
+ color?: ThemeColor;
6
+ description?: string;
7
+ disabled?: boolean;
8
+ label?: string;
9
+ loading?: boolean;
10
+ rounded?: RoundedSize;
11
+ size?: ComponentSize;
12
+ trend?: string;
13
+ 'trend-direction'?: StatsTrendDirection;
14
+ value?: string;
15
+ variant?: StatsVariant;
16
+ };
17
+ /**
18
+ * A focused metric card for a label, primary value, supporting context, trend, icon, and optional visual.
19
+ *
20
+ * @element ore-stats
21
+ *
22
+ * @attr {string} label - Metric label
23
+ * @attr {string} value - Primary metric value
24
+ * @attr {string} description - Supporting context
25
+ * @attr {string} trend - Trend text
26
+ * @attr {string} trend-direction - Trend direction: 'up' | 'down' | 'neutral'
27
+ * @attr {string} variant - Visual variant: 'outlined' | 'plain' | 'solid'
28
+ * @attr {string} color - Semantic theme color
29
+ * @attr {string} size - Size: 'sm' | 'md' | 'lg'
30
+ * @attr {string} rounded - Border radius size
31
+ * @attr {boolean} loading - Show loading state
32
+ * @attr {boolean} disabled - Show unavailable state
33
+ *
34
+ * @slot icon - Leading metric icon
35
+ * @slot label - Replaces label text
36
+ * @slot value - Replaces value text
37
+ * @slot visual - Compact chart, progress, or other metric visual
38
+ * @slot trend - Replaces trend text
39
+ * @slot description - Replaces supporting context
40
+ *
41
+ * @cssprop --stats-bg - Card background
42
+ * @cssprop --stats-color - Card foreground color
43
+ * @cssprop --stats-border-color - Card border color
44
+ * @cssprop --stats-radius - Card border radius
45
+ * @cssprop --stats-padding - Card padding
46
+ * @cssprop --stats-min-height - Minimum card height
47
+ * @cssprop --stats-value-size - Primary value font size
48
+ * @cssprop --stats-icon-bg - Icon surface background
49
+ * @cssprop --stats-trend-up - Positive trend color
50
+ * @cssprop --stats-trend-down - Negative trend color
51
+ *
52
+ * @part card - Card surface
53
+ * @part loading - Loading indicator
54
+ * @part header - Label and icon row
55
+ * @part icon - Icon container
56
+ * @part label - Label container
57
+ * @part body - Value and visual row
58
+ * @part value - Primary value container
59
+ * @part visual - Visual slot container
60
+ * @part footer - Trend and description row
61
+ * @part trend - Trend container
62
+ * @part description - Description container
63
+ *
64
+ * @example
65
+ * ```html
66
+ * <ore-stats label="Revenue" value="$42,800" trend="+12%" trend-direction="up">
67
+ * <ore-icon slot="icon" name="chart-line"></ore-icon>
68
+ * </ore-stats>
69
+ * ```
70
+ */
71
+ export declare const STATS_TAG: "ore-stats";
72
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/content/stats/stats.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG1E,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,SAAS,EAAG,WAAoB,CAAC"}
@@ -1,2 +1,2 @@
1
- var e=(e={})=>{let t=null,n=()=>{!t||e.enabled?.value===!1||(t.style.height=`auto`,t.style.height=`${t.scrollHeight}px`)};return{recompute:n,wire:e=>(t=e,e.addEventListener(`input`,n),requestAnimationFrame(n),()=>{e.removeEventListener(`input`,n),t===e&&(t=null)})}};exports.createAutoResize=e;
1
+ var e=(e={})=>{let t=null,n=()=>{t&&e.enabled?.value!==!1&&(t.style.height=`auto`,t.style.height=`${t.scrollHeight}px`)};return{recompute:n,wire:e=>(t=e,e.addEventListener(`input`,n),requestAnimationFrame(n),()=>{e.removeEventListener(`input`,n),t===e&&(t=null)})}};exports.createAutoResize=e;
2
2
  //# sourceMappingURL=auto-resize.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-resize.cjs","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":"AA8BA,IAAa,GAAoB,EAA6B,CAAC,IAAyB,CACtF,IAAI,EAAsC,KAEpC,MAAwB,CACxB,CAAC,GAAW,EAAQ,SAAS,QAAU,KAE3C,EAAQ,MAAM,OAAS,OACvB,EAAQ,MAAM,OAAS,GAAG,EAAQ,aAAa,IACjD,EAoBA,MAAO,CAAE,YAAW,KAlBN,IACZ,EAAU,EACV,EAAG,iBAAiB,QAAS,CAAS,EAOtC,sBAAsB,CAAS,MAElB,CACX,EAAG,oBAAoB,QAAS,CAAS,EAErC,IAAY,IAAI,EAAU,KAChC,EAGuB,CAC3B"}
1
+ {"version":3,"file":"auto-resize.cjs","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":"AA8BA,IAAa,GAAoB,EAA6B,CAAC,IAAyB,CACtF,IAAI,EAAsC,KAEpC,MAAwB,CACvB,GAAW,EAAQ,SAAS,QAAU,KAE3C,EAAQ,MAAM,OAAS,OACvB,EAAQ,MAAM,OAAS,GAAG,EAAQ,aAAa,IACjD,EAoBA,MAAO,CAAE,YAAW,KAlBN,IACZ,EAAU,EACV,EAAG,iBAAiB,QAAS,CAAS,EAOtC,sBAAsB,CAAS,MAElB,CACX,EAAG,oBAAoB,QAAS,CAAS,EAErC,IAAY,IAAI,EAAU,KAChC,EAGuB,CAC3B"}
@@ -1,7 +1,7 @@
1
1
  //#region src/core/auto-resize.ts
2
2
  var e = (e = {}) => {
3
3
  let t = null, n = () => {
4
- !t || e.enabled?.value === !1 || (t.style.height = "auto", t.style.height = `${t.scrollHeight}px`);
4
+ t && e.enabled?.value !== !1 && (t.style.height = "auto", t.style.height = `${t.scrollHeight}px`);
5
5
  };
6
6
  return {
7
7
  recompute: n,
@@ -1 +1 @@
1
- {"version":3,"file":"auto-resize.js","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":";AA8BA,IAAa,KAAoB,IAA6B,CAAC,MAAyB;CACtF,IAAI,IAAsC,MAEpC,UAAwB;EACxB,CAAC,KAAW,EAAQ,SAAS,UAAU,OAE3C,EAAQ,MAAM,SAAS,QACvB,EAAQ,MAAM,SAAS,GAAG,EAAQ,aAAa;CACjD;CAoBA,OAAO;EAAE;EAAW,OAlBN,OACZ,IAAU,GACV,EAAG,iBAAiB,SAAS,CAAS,GAOtC,sBAAsB,CAAS,SAElB;GAGX,AAFA,EAAG,oBAAoB,SAAS,CAAS,GAErC,MAAY,MAAI,IAAU;EAChC;CAGuB;AAC3B"}
1
+ {"version":3,"file":"auto-resize.js","names":[],"sources":["../../src/core/auto-resize.ts"],"sourcesContent":["import type { Readable } from '@vielzeug/ripple';\n\nexport type AutoResizeOptions = {\n /** Gates growth; omit for an always-on composer field, or pass a signal for a toggleable `auto-resize` attribute. */\n enabled?: Readable<boolean | undefined>;\n};\n\nexport type AutoResizeControl = {\n /** Recomputes height from the wired element's current content. No-ops when `enabled` is false or nothing is wired. */\n recompute: () => void;\n /** Wire onto the raw `<textarea>` when it mounts. Returns a detach function to call on unmount. */\n wire: (el: HTMLTextAreaElement) => () => void;\n};\n\n/**\n * Grows a `<textarea>`'s height to fit its content, shared by every component that offers\n * auto-resize (`ore-textarea`, `ore-message-composer`) instead of each reimplementing it.\n *\n * Owns only height — manual-resize cursor/direction is a per-component styling concern, not\n * shared behavior, so it stays local to whichever component renders a resize handle.\n *\n * @example\n * ```ts\n * const autoResize = createAutoResize({ enabled: props['auto-resize'] });\n *\n * onElement(textareaRef, (el) => autoResize.wire(el));\n * // after a programmatic value change that doesn't fire a native `input` event:\n * autoResize.recompute();\n * ```\n */\nexport const createAutoResize = (options: AutoResizeOptions = {}): AutoResizeControl => {\n let wiredEl: HTMLTextAreaElement | null = null;\n\n const recompute = (): void => {\n if (!wiredEl || options.enabled?.value === false) return;\n\n wiredEl.style.height = 'auto';\n wiredEl.style.height = `${wiredEl.scrollHeight}px`;\n };\n\n const wire = (el: HTMLTextAreaElement): (() => void) => {\n wiredEl = el;\n el.addEventListener('input', recompute);\n\n // Deferred a frame: right after mount, the browser hasn't necessarily finished laying out\n // the textarea yet, so a synchronous `scrollHeight` read here can be stale — often reading\n // as 0 and collapsing the field until the next real `input` event happens to correct it.\n // `ore-textarea` has always worked around this locally with its own extra `requestAnimationFrame`\n // call; folding the deferral into `wire()` itself means every consumer gets it for free.\n requestAnimationFrame(recompute);\n\n return () => {\n el.removeEventListener('input', recompute);\n\n if (wiredEl === el) wiredEl = null;\n };\n };\n\n return { recompute, wire };\n};\n"],"mappings":";AA8BA,IAAa,KAAoB,IAA6B,CAAC,MAAyB;CACtF,IAAI,IAAsC,MAEpC,UAAwB;EACxB,AAAC,KAAW,EAAQ,SAAS,UAAU,OAE3C,EAAQ,MAAM,SAAS,QACvB,EAAQ,MAAM,SAAS,GAAG,EAAQ,aAAa;CACjD;CAoBA,OAAO;EAAE;EAAW,OAlBN,OACZ,IAAU,GACV,EAAG,iBAAiB,SAAS,CAAS,GAOtC,sBAAsB,CAAS,SAElB;GAGX,AAFA,EAAG,oBAAoB,SAAS,CAAS,GAErC,MAAY,MAAI,IAAU;EAChC;CAGuB;AAC3B"}
@@ -1,2 +1,2 @@
1
- require("../_dev.cjs");let e=require("@vielzeug/ore"),t=require("@vielzeug/ripple");var n=e=>(0,t.computed)(()=>({errorText:e.error?.value??``,helperText:e.helper?.value??``})),r=e=>(0,t.computed)(()=>{let t=e.value?.value??``,n=e.maxLength?.value,r=Number(n),i=Number.isFinite(r)&&r>0?r:null,a=i!==null,o=a?`${t.length} / ${i}`:``,s=a?t.length/i:0;return{counterAtLimit:a?s>=1:!1,counterNearLimit:a?s>=.9&&s<1:!1,counterText:o}}),i=(e,t=`counter`)=>e?e.counterAtLimit?`${t} at-limit`:e.counterNearLimit?`${t} near-limit`:t:t;function a(){let e=!1;return{clear:()=>{e=!1},get isDirty(){return e},markDirty:()=>{e=!0}}}var o=r=>{let i=(0,t.computed)(()=>!!r.disabled?.value),a=(0,e.createStableId)(`helper`),o=(0,e.createStableId)(`error`),s=n({error:r.error,helper:r.helper}),c=(0,t.computed)(()=>s.value.errorText||s.value.helperText?a:null),l=(0,t.computed)(()=>s.value.errorText?o:null),u=(0,t.computed)(()=>s.value.errorText?`true`:null),d=null;return{ariaDescribedBy:c,ariaErrorMessage:l,ariaInvalid:u,assistiveId:a,attachFormField:e=>{d=e},disabled:i,errorId:o,errorText:(0,t.computed)(()=>s.value.errorText),helperText:(0,t.computed)(()=>s.value.helperText),triggerValidation:e=>{r.validateOn?.value===e&&d&&d.reportValidity()}}},s=n=>{let r=n.id??(0,e.createStableId)(n.prefix??`field`),i=(0,e.createStableId)(`label`),a=n.label??(0,t.computed)(()=>void 0),o=n.hasLabel??(0,t.computed)(()=>!!a.value);return{ariaLabelledBy:(0,t.computed)(()=>o.value?i:null),fieldId:r,labelId:i,labelVisible:o}},c=e=>({...o(e),...s(e)});exports.counterClassName=i,exports.createAssistiveState=o,exports.createCounterState=r,exports.createDirtyTracker=a,exports.createErrorHelperState=n,exports.createField=c,exports.createLabelState=s;
1
+ require("../_dev.cjs");let e=require("@vielzeug/ore"),t=require("@vielzeug/ripple");var n=e=>(0,t.computed)(()=>({errorText:e.error?.value??``,helperText:e.helper?.value??``})),r=e=>(0,t.computed)(()=>{let t=e.value?.value??``,n=e.maxLength?.value,r=Number(n),i=Number.isFinite(r)&&r>0?r:null,a=i!==null,o=a?`${t.length} / ${i}`:``,s=a?t.length/i:0;return{counterAtLimit:a?s>=1:!1,counterNearLimit:a?s>=.9&&s<1:!1,counterText:o}}),i=(e,t=`counter`)=>e?e.counterAtLimit?`${t} at-limit`:e.counterNearLimit?`${t} near-limit`:t:t;function a(){let e=!1;return{clear:()=>{e=!1},get isDirty(){return e},markDirty:()=>{e=!0}}}var o=r=>{let i=(0,t.computed)(()=>!!r.disabled?.value),a=(0,e.createId)(`helper`),o=(0,e.createId)(`error`),s=n({error:r.error,helper:r.helper}),c=(0,t.computed)(()=>s.value.errorText||s.value.helperText?a:null),l=(0,t.computed)(()=>s.value.errorText?o:null),u=(0,t.computed)(()=>s.value.errorText?`true`:null),d=null;return{ariaDescribedBy:c,ariaErrorMessage:l,ariaInvalid:u,assistiveId:a,attachFormField:e=>{d=e},disabled:i,errorId:o,errorText:(0,t.computed)(()=>s.value.errorText),helperText:(0,t.computed)(()=>s.value.helperText),triggerValidation:e=>{r.validateOn?.value===e&&d&&d.reportValidity()}}},s=n=>{let r=n.id??(0,e.createId)(n.prefix??`field`),i=(0,e.createId)(`label`),a=n.label??(0,t.computed)(()=>void 0),o=n.hasLabel??(0,t.computed)(()=>!!a.value);return{ariaLabelledBy:(0,t.computed)(()=>o.value?i:null),fieldId:r,labelId:i,labelVisible:o}},c=e=>({...o(e),...s(e)});exports.counterClassName=i,exports.createAssistiveState=o,exports.createCounterState=r,exports.createDirtyTracker=a,exports.createErrorHelperState=n,exports.createField=c,exports.createLabelState=s;
2
2
  //# sourceMappingURL=field-base.cjs.map