@auvyx/ui 0.1.1 → 0.1.2

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 (73) hide show
  1. package/dist/auvyx.bundle.css +94 -1
  2. package/dist/auvyx.chart.min.js +1 -1
  3. package/dist/auvyx.css +56 -0
  4. package/dist/auvyx.js +1 -1
  5. package/dist/auvyx.min.css +2 -2
  6. package/dist/auvyx.min.js +1 -1
  7. package/dist/custom-elements.json +1 -1
  8. package/dist/elements/calendar.min.js +1 -1
  9. package/dist/elements/context-menu.min.js +1 -1
  10. package/dist/elements/data-table.min.js +1 -1
  11. package/dist/elements/date-picker.min.js +1 -1
  12. package/dist/elements/index.min.js +1 -1
  13. package/dist/elements/menu.min.js +1 -1
  14. package/dist/elements/resizable.min.js +1 -1
  15. package/dist/js/accordion.min.js +1 -1
  16. package/dist/js/calendar.min.js +1 -1
  17. package/dist/js/combobox.min.js +1 -1
  18. package/dist/js/command.min.js +1 -1
  19. package/dist/js/context-menu.min.js +1 -1
  20. package/dist/js/copy.min.js +1 -1
  21. package/dist/js/data-table.min.js +1 -1
  22. package/dist/js/date-picker.min.js +1 -1
  23. package/dist/js/drawer.min.js +1 -1
  24. package/dist/js/dropdown-menu.min.js +1 -1
  25. package/dist/js/manifest.json +12 -12
  26. package/dist/js/menu.min.js +1 -1
  27. package/dist/js/popover.min.js +1 -1
  28. package/dist/js/resizable.min.js +1 -1
  29. package/dist/js/select.min.js +1 -1
  30. package/dist/js/sidebar.min.js +1 -1
  31. package/dist/js/slider.min.js +1 -1
  32. package/dist/js/tabs.min.js +1 -1
  33. package/dist/js/toast.min.js +1 -1
  34. package/dist/styles/auvyx-luma.min.css +2 -2
  35. package/dist/styles/auvyx-lyra.min.css +2 -2
  36. package/dist/styles/auvyx-maia.min.css +2 -2
  37. package/dist/styles/auvyx-mira.min.css +2 -2
  38. package/dist/styles/auvyx-nova.min.css +2 -2
  39. package/dist/styles/auvyx-rhea.min.css +2 -2
  40. package/dist/styles/auvyx-sera.min.css +2 -2
  41. package/dist/styles/auvyx-vega.min.css +2 -2
  42. package/dist/ui/accordion.js +1 -1
  43. package/dist/ui/base.css +56 -0
  44. package/dist/ui/calendar.js +1 -1
  45. package/dist/ui/combobox.js +1 -1
  46. package/dist/ui/command.js +1 -1
  47. package/dist/ui/context-menu.js +1 -1
  48. package/dist/ui/copy.js +1 -1
  49. package/dist/ui/data-table.js +1 -1
  50. package/dist/ui/date-picker.js +1 -1
  51. package/dist/ui/drawer.js +1 -1
  52. package/dist/ui/dropdown-menu.js +1 -1
  53. package/dist/ui/menu.js +1 -1
  54. package/dist/ui/popover.js +1 -1
  55. package/dist/ui/resizable.js +1 -1
  56. package/dist/ui/select.js +1 -1
  57. package/dist/ui/sidebar.js +1 -1
  58. package/dist/ui/slider.js +1 -1
  59. package/dist/ui/tabs.js +1 -1
  60. package/dist/ui/toast.js +1 -1
  61. package/dist/wc/accordion.min.js +1 -1
  62. package/dist/wc/combobox.min.js +1 -1
  63. package/dist/wc/command.min.js +1 -1
  64. package/dist/wc/drawer.min.js +1 -1
  65. package/dist/wc/dropdown-menu.min.js +1 -1
  66. package/dist/wc/manifest.json +8 -8
  67. package/dist/wc/popover.min.js +1 -1
  68. package/dist/wc/select.min.js +1 -1
  69. package/dist/wc/sidebar.min.js +1 -1
  70. package/dist/wc/slider.min.js +1 -1
  71. package/dist/wc/tabs.min.js +1 -1
  72. package/dist/wc/toast.min.js +1 -1
  73. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /*! @auvyx/ui v0.1.1 source bundle | MIT | import after "tailwindcss" */
1
+ /*! @auvyx/ui v0.1.2 source bundle | MIT | import after "tailwindcss" */
2
2
  /* @auvyx/ui source: components + layout primitives + themes, no Tailwind import.
3
3
  *
4
4
  * Shared by both channels:
@@ -280,6 +280,99 @@ html[data-motion='off'] {
280
280
  }
281
281
  }
282
282
 
283
+ /* ---- Form controls: hover and press feedback.
284
+ The style packs give fields a focus ring but no hover in light mode, and
285
+ checkboxes, radios and switches no hover or press at all. Fields darken
286
+ their border towards --ring on hover; choices also take a short press.
287
+ These rules come before the components, so a pack that styles its own
288
+ hover (same or higher specificity) still wins. */
289
+ :is(
290
+ .field > input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']),
291
+ .input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']),
292
+ .field > textarea,
293
+ .textarea,
294
+ .field > select,
295
+ select.select,
296
+ .select:not(select) > button,
297
+ .combobox > input[role='combobox'],
298
+ .input-group,
299
+ .input-otp
300
+ ) {
301
+ transition:
302
+ color var(--motion-fast) var(--motion-ease-standard),
303
+ background-color var(--motion-fast) var(--motion-ease-standard),
304
+ border-color var(--motion-fast) var(--motion-ease-standard),
305
+ box-shadow var(--motion-fast) var(--motion-ease-standard);
306
+ }
307
+
308
+ :is(
309
+ .field > input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']),
310
+ .input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']),
311
+ .field > textarea,
312
+ .textarea,
313
+ .field > select,
314
+ select.select,
315
+ .select:not(select) > button,
316
+ .combobox > input[role='combobox'],
317
+ .input-group,
318
+ .input-otp
319
+ ):hover:not(:focus, :focus-within, :disabled, :has(:disabled), [aria-invalid='true'], [aria-expanded='true']) {
320
+ border-color: color-mix(in oklch, var(--ring) 70%, var(--input));
321
+ }
322
+
323
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])) {
324
+ transition:
325
+ color var(--motion-fast) var(--motion-ease-standard),
326
+ background-color var(--motion-fast) var(--motion-ease-standard),
327
+ border-color var(--motion-fast) var(--motion-ease-standard),
328
+ box-shadow var(--motion-fast) var(--motion-ease-standard),
329
+ scale var(--motion-spring-snappy-duration) var(--motion-spring-snappy);
330
+ }
331
+
332
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])):not([role='switch']):hover:not(:checked, :focus-visible, :disabled, [aria-invalid='true']) {
333
+ border-color: color-mix(in oklch, var(--ring) 70%, var(--input));
334
+ }
335
+
336
+ /* Switches: some packs draw them without a border, so the track darkens instead. */
337
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio']))[role='switch']:hover:not(:checked, :disabled, [aria-invalid='true']) {
338
+ background-color: color-mix(in oklch, var(--input), var(--foreground) 12%);
339
+ }
340
+
341
+ /* Dark mode: the packs tint unchecked tracks with a .dark rule; outrank it. */
342
+ :is(.dark, .dark *) :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio']))[role='switch']:hover:not(:checked, :disabled, [aria-invalid='true']) {
343
+ background-color: color-mix(in oklch, var(--input), var(--foreground) 18%);
344
+ }
345
+
346
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])):active:not(:disabled) {
347
+ scale: 0.92;
348
+ }
349
+
350
+ /* Slider: the thumb grows a little while it is held. */
351
+ :is(.field > input[type='range'], .input[type='range'])::-webkit-slider-thumb {
352
+ transition: scale var(--motion-spring-snappy-duration) var(--motion-spring-snappy), box-shadow var(--motion-fast) var(--motion-ease-standard);
353
+ }
354
+ :is(.field > input[type='range'], .input[type='range'])::-moz-range-thumb {
355
+ transition: scale var(--motion-spring-snappy-duration) var(--motion-spring-snappy), box-shadow var(--motion-fast) var(--motion-ease-standard);
356
+ }
357
+ :is(.field > input[type='range'], .input[type='range']):active:not(:disabled)::-webkit-slider-thumb {
358
+ scale: 1.15;
359
+ }
360
+ :is(.field > input[type='range'], .input[type='range']):active:not(:disabled)::-moz-range-thumb {
361
+ scale: 1.15;
362
+ }
363
+
364
+ @media (prefers-reduced-motion: reduce) {
365
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])):active {
366
+ scale: none;
367
+ }
368
+ :is(.field > input[type='range'], .input[type='range']):active::-webkit-slider-thumb {
369
+ scale: none;
370
+ }
371
+ :is(.field > input[type='range'], .input[type='range']):active::-moz-range-thumb {
372
+ scale: none;
373
+ }
374
+ }
375
+
283
376
  /* ---- Anchored surfaces: scale in from the anchor, leave faster. */
284
377
  [data-popover]:not([popover]) {
285
378
  transition-property: opacity, scale, translate, visibility;
@@ -1,2 +1,2 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  (()=>{const A=new WeakMap,C=new Set,_=["var(--chart-1)","var(--chart-2)","var(--chart-3)","var(--chart-4)","var(--chart-5)"];let E=null;const N=e=>e&&typeof e=="object"&&Array.isArray(e.datasets),w=e=>{if(typeof e=="string"){const r=Array.from(document.querySelectorAll(e));if(r.length===0)throw new Error(`Chart target not found: ${e}`);return r}if(e instanceof HTMLCanvasElement)return[e];if(e instanceof Element){const r=e.matches("canvas")?e:e.querySelector("canvas");if(r)return[r]}if(e instanceof NodeList||Array.isArray(e))return Array.from(e).flatMap(w);throw new Error("Chart target must be a selector, canvas, element, NodeList, or array.")},x=(e,r,t,o)=>r[t]!==void 0?r[t]:e.dataset[o],j=(e,r,t,o,n)=>{const a=x(e,r,t,o);return a===void 0?n:typeof a=="boolean"?a:a!=="false"},v=(e,r)=>{const t=e.getAttribute(r);if(t)try{return JSON.parse(t)}catch(o){console.error(`Invalid JSON in ${r}:`,o);return}},h=e=>_[e%_.length],B=e=>N(e)?{...e,labels:Array.isArray(e.labels)?[...e.labels]:e.labels,datasets:e.datasets.map(r=>({...r,data:Array.isArray(r.data)?[...r.data]:r.data,backgroundColor:Array.isArray(r.backgroundColor)?[...r.backgroundColor]:r.backgroundColor,borderColor:Array.isArray(r.borderColor)?[...r.borderColor]:r.borderColor,hoverBackgroundColor:Array.isArray(r.hoverBackgroundColor)?[...r.hoverBackgroundColor]:r.hoverBackgroundColor,hoverBorderColor:Array.isArray(r.hoverBorderColor)?[...r.hoverBorderColor]:r.hoverBorderColor}))}:e,y=e=>!e||typeof e!="object"||Array.isArray(e)?e:Object.fromEntries(Object.entries(e).map(([r,t])=>[r,t&&typeof t=="object"&&!Array.isArray(t)?y(t):t])),p=(e,r)=>{if(Array.isArray(e))return e.map(n=>p(n,r));if(typeof e!="string")return e;const t=document.createElement("span");t.style.color=e,t.style.display="none",(r.parentElement||document.body).appendChild(t);const o=getComputedStyle(t).color;return t.remove(),o||e},S=(e,r,t)=>{const o=document.createElement("canvas");o.width=1,o.height=1;const n=o.getContext("2d",{willReadFrequently:!0});if(!n)return e;n.clearRect(0,0,1,1),n.fillStyle="#000",n.fillStyle=p(e,t),n.fillRect(0,0,1,1);const[a,c,l,s]=n.getImageData(0,0,1,1).data;return`rgba(${a}, ${c}, ${l}, ${s/255*r})`},M=(e,r,{from:t=.4,to:o}={})=>{if(o===void 0)return S(e,t,r);let n=null;return({chart:a})=>{if(n||(n=[S(e,t,r),S(e,o,r)]),!a.chartArea)return n[0];const c=a.ctx.createLinearGradient(0,a.chartArea.top,0,a.chartArea.bottom);return c.addColorStop(0,n[0]),c.addColorStop(1,n[1]),c}},q=(e,r)=>(e.datasets?.forEach(t=>{t.borderColor=p(t.borderColor,r),t.backgroundColor=p(t.backgroundColor,r),t.hoverBorderColor=p(t.hoverBorderColor,r),t.hoverBackgroundColor=p(t.hoverBackgroundColor,r)}),e),V=(e,r)=>(Object.values(e||{}).forEach(t=>{["border","grid","ticks","angleLines","pointLabels"].forEach(o=>{t[o]?.color!==void 0&&(t[o].color=p(t[o].color,r))})}),e),T=(e,r)=>p(`var(${r})`,e),J=(e,r)=>`color-mix(in oklab, ${e} ${r*100}%, transparent)`,K=(e,r,t=0)=>{const o=getComputedStyle(e).getPropertyValue(r).trim();if(!o)return t;const n=Number.parseFloat(o);return Number.isFinite(n)?n:t},D=(e,r,{barRadius:t,element:o})=>(e.datasets?.forEach(n=>{(r==="bar"||n.type==="bar")&&n.borderRadius===void 0&&(n.borderRadius=t),n._basecoatSurface&&(n.backgroundColor=M(n.borderColor||n.backgroundColor,o,n._basecoatSurface),delete n._basecoatSurface)}),e),z=e=>!["pie","doughnut","polarArea","radar"].includes(e),O=(e,r)=>{const t=Array.from(e.classList).filter(o=>o!=="chart");t.length!==0&&(r.classList.add(...t),e.classList.remove(...t))},G=e=>{if(e.parentElement?.classList.contains("chart"))return e.parentElement.dataset.basecoatChartContainer="true",O(e,e.parentElement),e.parentElement;const r=document.createElement("div");return r.className="chart",r.dataset.basecoatChartContainer="true",O(e,r),e.insertAdjacentElement("beforebegin",r),r.append(e),r},W=e=>Object.entries(e||{}),k=(e,r)=>{if(e&&typeof e=="object")return e[r]},H=({type:e,labelKey:r,data:t,series:o})=>{if(N(t))return B(t);const n=Array.isArray(t)?t:[],a=W(o),c=n.map(l=>k(l,r));if(e==="pie"||e==="doughnut"||e==="polarArea"){const[l,s={}]=a[0]||[];return{labels:c,datasets:[{label:s.label||l||"Value",data:n.map(i=>k(i,l)),backgroundColor:n.map((i,d)=>i?.color||i?.fill||h(d)),borderColor:n.map((i,d)=>i?.color||i?.fill||h(d)),...s.dataset||{}}]}}return{labels:c,datasets:a.map(([l,s],i)=>{const d=s.color||h(i),u=s.dataset||{},b=s.surface===!0?{from:.4}:s.surface==="gradient"?{from:.8,to:.1}:s.surface;return{label:s.label||l,data:n.map(f=>k(f,l)),borderColor:d,backgroundColor:s.backgroundColor||d,fill:e==="line"?!1:void 0,type:s.type,yAxisID:s.axis,hidden:s.hidden,...u,...b&&s.backgroundColor===void 0&&u.backgroundColor===void 0?{_basecoatSurface:b}:{}}})}},U=e=>typeof e=="number"?e.toLocaleString():String(e),X=e=>{const r=e.element?.options?.backgroundColor||e.element?.options?.borderColor;if(typeof r=="string")return r;const t=Array.isArray(e.dataset.backgroundColor)?e.dataset.backgroundColor[e.dataIndex]:e.dataset.backgroundColor;if(typeof t=="string")return t;const o=Array.isArray(e.dataset.borderColor)?e.dataset.borderColor[e.dataIndex]:e.dataset.borderColor;return typeof o=="string"?o:h(e.datasetIndex)},Y=e=>{let r=e._basecoatChartTooltip;return r||(r=document.createElement("div"),r.className="chart-tooltip",r.hidden=!0,r.setAttribute("role","status"),r.setAttribute("aria-live","polite"),document.body.appendChild(r),e._basecoatChartTooltip=r,r)},Q=e=>{const{chart:r,tooltip:t}=e,o=Y(r.canvas);if(t.opacity===0){o.hidden=!0;return}const n=[];if(t.title?.length){const l=document.createElement("div");l.className="chart-tooltip-title",l.textContent=t.title.join(", "),n.push(l)}const a=document.createElement("div");a.className="chart-tooltip-items",t.dataPoints.forEach(l=>{const s=X(l),i=l.formattedValue||U(l.raw),d=document.createElement("div");d.className="chart-tooltip-item";const u=document.createElement("span");u.className="chart-tooltip-indicator",u.style.setProperty("--chart-indicator-color",s);const b=document.createElement("span");b.className="chart-tooltip-label",b.textContent=l.dataset.label||l.label;const f=document.createElement("span");f.className="chart-tooltip-value",f.textContent=i,d.append(u,b,f),a.append(d)}),n.push(a);const c=r.canvas.getBoundingClientRect();o.replaceChildren(...n),o.hidden=!1,o.style.left=`${c.left+t.caretX}px`,o.style.top=`${c.top+t.caretY}px`},Z=(e,r)=>({id:`basecoatLegend-${Math.random().toString(36).slice(2)}`,afterUpdate(t){if(!r)return;let o=e._basecoatChartLegend;o||(o=document.createElement("ul"),o.className="chart-legend",e._basecoatChartContainer.insertAdjacentElement("afterend",o),e._basecoatChartLegend=o);const n=t.options.plugins.legend.labels.generateLabels(t);o.replaceChildren(...n.map(a=>{const c=document.createElement("span");c.className="chart-legend-item";const l=document.createElement("span");l.className="chart-legend-indicator";const s=typeof a.fillStyle=="string"?a.fillStyle:typeof a.strokeStyle=="string"?a.strokeStyle:h(a.datasetIndex||a.index||0);l.style.setProperty("--chart-indicator-color",s);const i=document.createElement("span");i.textContent=a.text,c.append(l,i);const d=document.createElement("li");return d.append(c),d}))}}),$=e=>{e._basecoatChartTooltip?.remove(),e._basecoatChartLegend?.remove(),delete e._basecoatChartTooltip,delete e._basecoatChartLegend},I=(e,r={})=>{const t=r.Chart||window.Chart;if(!t)throw new Error("Chart.js is required before calling basecoat.chart().");const o=A.get(e);o&&o.destroy(),$(e);const n=x(e,r,"type","chartType")||"bar",a=x(e,r,"labelKey","chartLabelKey")||"label",c=j(e,r,"legend","chartLegend",!1),l=j(e,r,"tooltip","chartTooltip",!0),s=r.data||v(e,"data-chart-data")||[],i=r.series||v(e,"data-chart-series")||{},d=r.chartData?B(r.chartData):H({type:n,labelKey:a,data:s,series:i}),u=r.options||{},b=Z(e,c),f=G(e),F=T(e,"--border"),R=p(J("var(--border)",.5),e),P=T(e,"--muted-foreground"),oe=K(e,"--chart-bar-radius"),ne={...z(n)?{x:{border:{display:!1,color:F},grid:{display:!1,color:R},ticks:{color:P,padding:8},...y(u.scales?.x||{})},y:{border:{display:!1,color:F},grid:{color:R},ticks:{display:!1,color:P},...y(u.scales?.y||{})}}:{},...Object.fromEntries(Object.entries(u.scales||{}).filter(([g])=>g!=="x"&&g!=="y").map(([g,ae])=>[g,y(ae)]))};e.classList.remove("chart"),e._basecoatChartContainer=f,e.dataset.chartLegend=String(c);const m=new t(e,{type:n,data:q(D(d,n,{barRadius:oe,element:e}),e),options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},...u,scales:V(ne,e),plugins:{...u.plugins,legend:{display:!1,...u.plugins?.legend||{}},tooltip:{enabled:!1,external:l?Q:void 0,...u.plugins?.tooltip||{}}}},plugins:[b,...r.plugins||[]]});return A.set(e,m),C.add(e),e.dataset.chartInitialized="true",e.chart=m,e._basecoatChartConfig=r,e._destroy=()=>{m.destroy(),$(e),A.delete(e),C.delete(e),e.removeAttribute("data-chart-initialized"),delete e._basecoatChartContainer,delete e._basecoatChartConfig,delete e.chart,delete e._destroy},m},ee=(e,r={})=>{const o=w(e).map(n=>I(n,r));return o.length===1?o[0]:o},re=()=>{E=null,Array.from(C).forEach(e=>{if(!e.isConnected){e._destroy?.(),C.delete(e);return}I(e,e._basecoatChartConfig||{})})},L=()=>{E===null&&(E=requestAnimationFrame(re))},te=()=>{new MutationObserver(r=>{r.some(t=>t.attributeName==="class"||t.attributeName==="data-style-variant")&&L()}).observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-style-variant"]}),document.addEventListener("basecoat:themechange",L),document.addEventListener("basecoat:stylechange",L)};window.auvyx&&(window.auvyx.chart=ee),te()})();
package/dist/auvyx.css CHANGED
@@ -473,6 +473,62 @@ html[data-motion='off'] {
473
473
  translate: none;
474
474
  }
475
475
  }
476
+ :is( .field > input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']), .input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']), .field > textarea, .textarea, .field > select, select.select, .select:not(select) > button, .combobox > input[role='combobox'], .input-group, .input-otp ) {
477
+ transition: color var(--motion-fast) var(--motion-ease-standard), background-color var(--motion-fast) var(--motion-ease-standard), border-color var(--motion-fast) var(--motion-ease-standard), box-shadow var(--motion-fast) var(--motion-ease-standard);
478
+ }
479
+ :is( .field > input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']), .input:is([type='text'], [type='email'], [type='password'], [type='number'], [type='file'], [type='tel'], [type='url'], [type='search'], [type='date'], [type='datetime-local'], [type='month'], [type='week'], [type='time']), .field > textarea, .textarea, .field > select, select.select, .select:not(select) > button, .combobox > input[role='combobox'], .input-group, .input-otp ):hover:not(:focus, :focus-within, :disabled, :has(:disabled), [aria-invalid='true'], [aria-expanded='true']) {
480
+ border-color: var(--ring);
481
+ @supports (color: color-mix(in lab, red, red)) {
482
+ border-color: color-mix(in oklch, var(--ring) 70%, var(--input));
483
+ }
484
+ }
485
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])) {
486
+ transition: color var(--motion-fast) var(--motion-ease-standard), background-color var(--motion-fast) var(--motion-ease-standard), border-color var(--motion-fast) var(--motion-ease-standard), box-shadow var(--motion-fast) var(--motion-ease-standard), scale var(--motion-spring-snappy-duration) var(--motion-spring-snappy);
487
+ }
488
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])):not([role='switch']):hover:not(:checked, :focus-visible, :disabled, [aria-invalid='true']) {
489
+ border-color: var(--ring);
490
+ @supports (color: color-mix(in lab, red, red)) {
491
+ border-color: color-mix(in oklch, var(--ring) 70%, var(--input));
492
+ }
493
+ }
494
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio']))[role='switch']:hover:not(:checked, :disabled, [aria-invalid='true']) {
495
+ background-color: var(--input);
496
+ @supports (color: color-mix(in lab, red, red)) {
497
+ background-color: color-mix(in oklch, var(--input), var(--foreground) 12%);
498
+ }
499
+ }
500
+ :is(.dark, .dark *) :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio']))[role='switch']:hover:not(:checked, :disabled, [aria-invalid='true']) {
501
+ background-color: var(--input);
502
+ @supports (color: color-mix(in lab, red, red)) {
503
+ background-color: color-mix(in oklch, var(--input), var(--foreground) 18%);
504
+ }
505
+ }
506
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])):active:not(:disabled) {
507
+ scale: 0.92;
508
+ }
509
+ :is(.field > input[type='range'], .input[type='range'])::-webkit-slider-thumb {
510
+ transition: scale var(--motion-spring-snappy-duration) var(--motion-spring-snappy), box-shadow var(--motion-fast) var(--motion-ease-standard);
511
+ }
512
+ :is(.field > input[type='range'], .input[type='range'])::-moz-range-thumb {
513
+ transition: scale var(--motion-spring-snappy-duration) var(--motion-spring-snappy), box-shadow var(--motion-fast) var(--motion-ease-standard);
514
+ }
515
+ :is(.field > input[type='range'], .input[type='range']):active:not(:disabled)::-webkit-slider-thumb {
516
+ scale: 1.15;
517
+ }
518
+ :is(.field > input[type='range'], .input[type='range']):active:not(:disabled)::-moz-range-thumb {
519
+ scale: 1.15;
520
+ }
521
+ @media (prefers-reduced-motion: reduce) {
522
+ :is(.field > input:is([type='checkbox'], [type='radio']), .input:is([type='checkbox'], [type='radio'])):active {
523
+ scale: none;
524
+ }
525
+ :is(.field > input[type='range'], .input[type='range']):active::-webkit-slider-thumb {
526
+ scale: none;
527
+ }
528
+ :is(.field > input[type='range'], .input[type='range']):active::-moz-range-thumb {
529
+ scale: none;
530
+ }
531
+ }
476
532
  [data-popover]:not([popover]) {
477
533
  transition-property: opacity, scale, translate, visibility;
478
534
  transition-duration: var(--motion-base);
package/dist/auvyx.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @auvyx/ui v0.1.1 | MIT License | see LICENSE */
1
+ /*! @auvyx/ui v0.1.2 | MIT License | see LICENSE */
2
2
  (() => {
3
3
  const componentRegistry = {};
4
4
  let observer = null;