@liketysplit/react-luna 0.1.2 → 0.1.4

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 (55) hide show
  1. package/LICENSE +9 -9
  2. package/dist/components/index.d.ts +13 -0
  3. package/dist/components/layout-shared.d.ts +18 -0
  4. package/dist/components/luna-autocomplete/LunaAutocomplete.d.ts +16 -0
  5. package/dist/components/luna-autocomplete/LunaAutocomplete.props.d.ts +19 -0
  6. package/dist/components/luna-autocomplete/index.d.ts +2 -0
  7. package/dist/components/luna-button/LunaButton.d.ts +28 -0
  8. package/dist/components/luna-button/LunaButton.props.d.ts +30 -0
  9. package/dist/components/luna-button/index.d.ts +2 -0
  10. package/dist/components/luna-card/LunaCard.d.ts +18 -0
  11. package/dist/components/luna-card/LunaCard.props.d.ts +18 -0
  12. package/dist/components/luna-card/index.d.ts +2 -0
  13. package/dist/components/luna-column/LunaColumn.d.ts +10 -0
  14. package/dist/components/luna-column/LunaColumn.props.d.ts +10 -0
  15. package/dist/components/luna-column/index.d.ts +2 -0
  16. package/dist/components/luna-divider/LunaDivider.d.ts +13 -0
  17. package/dist/components/luna-divider/LunaDivider.props.d.ts +16 -0
  18. package/dist/components/luna-divider/index.d.ts +2 -0
  19. package/dist/components/luna-grid/LunaGrid.d.ts +11 -0
  20. package/dist/components/luna-grid/LunaGrid.props.d.ts +11 -0
  21. package/dist/components/luna-grid/index.d.ts +2 -0
  22. package/dist/components/luna-header/LunaHeader.d.ts +10 -0
  23. package/dist/components/luna-header/LunaHeader.props.d.ts +11 -0
  24. package/dist/components/luna-header/index.d.ts +2 -0
  25. package/dist/components/luna-input/LunaInput.d.ts +12 -0
  26. package/dist/components/luna-input/LunaInput.props.d.ts +11 -0
  27. package/dist/components/luna-input/index.d.ts +2 -0
  28. package/dist/components/luna-multiselect/LunaMultiselect.d.ts +16 -0
  29. package/dist/components/luna-multiselect/LunaMultiselect.props.d.ts +19 -0
  30. package/dist/components/luna-multiselect/index.d.ts +2 -0
  31. package/dist/components/luna-row/LunaRow.d.ts +11 -0
  32. package/dist/components/luna-row/LunaRow.props.d.ts +11 -0
  33. package/dist/components/luna-row/index.d.ts +2 -0
  34. package/dist/components/luna-select/LunaSelect.d.ts +13 -0
  35. package/dist/components/luna-select/LunaSelect.props.d.ts +16 -0
  36. package/dist/components/luna-select/index.d.ts +2 -0
  37. package/dist/components/luna-text/LunaText.d.ts +15 -0
  38. package/dist/components/luna-text/LunaText.props.d.ts +16 -0
  39. package/dist/components/luna-text/index.d.ts +2 -0
  40. package/dist/components/luna-textarea/LunaTextarea.d.ts +16 -0
  41. package/dist/components/luna-textarea/LunaTextarea.props.d.ts +15 -0
  42. package/dist/components/luna-textarea/index.d.ts +2 -0
  43. package/dist/components/useParentBackgroundVar.d.ts +2 -0
  44. package/dist/index.d.ts +2 -0
  45. package/dist/index.js +2296 -564
  46. package/dist/style.css +1 -1
  47. package/dist/theme/base.d.ts +2 -0
  48. package/dist/theme/base.test.d.ts +1 -0
  49. package/dist/theme/index.d.ts +4 -0
  50. package/dist/theme/merge.d.ts +2 -0
  51. package/dist/theme/provider.d.ts +19 -0
  52. package/dist/theme/resolve.d.ts +5 -0
  53. package/dist/theme/types.d.ts +162 -0
  54. package/dist/theme/vars.d.ts +2 -0
  55. package/package.json +67 -67
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .luna-button{--luna-btn-loader-gap: .28rem;--luna-btn-loader-min-width: 4.35rem;--luna-btn-loader-moon-size: .58rem;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--luna-btn-size-medium-gap, var(--luna-space-2));min-height:var(--luna-btn-size-medium-min-height, 2.5rem);padding:var(--luna-btn-size-medium-padding-y, var(--luna-space-2)) var(--luna-btn-size-medium-padding-x, var(--luna-space-4));border:1px solid transparent;border-radius:var(--luna-btn-radius, var(--luna-radius-md));background:var(--luna-btn-bg, var(--luna-btn-bg-default, var(--luna-color-primary-600)));color:var(--luna-btn-fg-default, #ffffff);box-shadow:var(--luna-shadow-md);font-family:var(--luna-font-family);font-size:var(--luna-btn-size-medium-font-size, var(--luna-font-size-sm, .875rem));font-weight:var(--luna-btn-font-weight, 600);line-height:1;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;transition:background-color var(--luna-motion-base),border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),color var(--luna-motion-base),opacity var(--luna-motion-base),transform var(--luna-motion-fast)}.luna-button:hover{background:var( --luna-btn-hover-bg, color-mix(in srgb, var(--luna-btn-bg, var(--luna-btn-bg-default, var(--luna-color-primary-600))) 88%, #000000) )}.luna-button:focus-visible{outline:2px solid var(--luna-color-accent-400);outline-offset:2px}.luna-button:active{transform:translateY(1px)}.luna-button:disabled,.luna-button[data-disabled=true]{cursor:not-allowed;opacity:.56}.luna-button--block{display:flex;width:100%}.luna-button--absolute{position:absolute}.luna-button--fixed{position:fixed}.luna-button--outline{color:var(--luna-btn-outline-fg, var(--luna-foreground));border-color:var(--luna-btn-outline-border, var(--luna-border))}.luna-button--flat{background:transparent;color:var(--luna-btn-flat-fg, var(--luna-foreground))}.luna-button--flat:hover{background:transparent}.luna-button--depressed{box-shadow:none}.luna-button--rounded{border-radius:var(--luna-radius-pill)}.luna-button--info{background:transparent;box-shadow:none;border-color:transparent;color:var(--luna-btn-info-color, var(--luna-btn-info-fg, var(--luna-color-primary-500)));min-height:auto;padding:0;text-decoration:underline;text-underline-offset:.18em}.luna-button--info:hover{background:transparent;color:var(--luna-btn-info-hover-fg, color-mix(in srgb, var(--luna-btn-info-color, var(--luna-btn-info-fg, var(--luna-color-primary-500))) 84%, #000000))}.luna-button--fab{border-radius:999px;min-width:var(--luna-btn-size-medium-min-height, 2.5rem);padding-inline:0}.luna-button--light{background:var(--luna-background);color:var(--luna-foreground)}.luna-button--dark{background:var(--luna-foreground);color:var(--luna-background)}.luna-button[data-size=x-small]{--luna-btn-loader-gap: .22rem;--luna-btn-loader-min-width: 3.5rem;--luna-btn-loader-moon-size: .48rem;gap:var(--luna-btn-size-x-small-gap, var(--luna-space-1));min-height:var(--luna-btn-size-x-small-min-height, 1.75rem);padding:var(--luna-btn-size-x-small-padding-y, var(--luna-space-1)) var(--luna-btn-size-x-small-padding-x, var(--luna-space-2));font-size:var(--luna-btn-size-x-small-font-size, .75rem)}.luna-button[data-size=small]{--luna-btn-loader-gap: .24rem;--luna-btn-loader-min-width: 3.9rem;--luna-btn-loader-moon-size: .52rem;gap:var(--luna-btn-size-small-gap, var(--luna-space-1));min-height:var(--luna-btn-size-small-min-height, 2rem);padding:var(--luna-btn-size-small-padding-y, var(--luna-space-1)) var(--luna-btn-size-small-padding-x, var(--luna-space-3));font-size:var(--luna-btn-size-small-font-size, .75rem)}.luna-button[data-size=medium]{gap:var(--luna-btn-size-medium-gap, var(--luna-space-2));min-height:var(--luna-btn-size-medium-min-height, 2.5rem);padding:var(--luna-btn-size-medium-padding-y, var(--luna-space-2)) var(--luna-btn-size-medium-padding-x, var(--luna-space-4));font-size:var(--luna-btn-size-medium-font-size, .875rem)}.luna-button[data-size=large]{--luna-btn-loader-gap: .32rem;--luna-btn-loader-min-width: 4.9rem;--luna-btn-loader-moon-size: .64rem;gap:var(--luna-btn-size-large-gap, var(--luna-space-2));min-height:var(--luna-btn-size-large-min-height, 3rem);padding:var(--luna-btn-size-large-padding-y, var(--luna-space-2)) var(--luna-btn-size-large-padding-x, var(--luna-space-5));font-size:var(--luna-btn-size-large-font-size, 1rem)}.luna-button[data-size=x-large]{--luna-btn-loader-gap: .36rem;--luna-btn-loader-min-width: 5.35rem;--luna-btn-loader-moon-size: .7rem;gap:var(--luna-btn-size-x-large-gap, var(--luna-space-3));min-height:var(--luna-btn-size-x-large-min-height, 3.5rem);padding:var(--luna-btn-size-x-large-padding-y, var(--luna-space-3)) var(--luna-btn-size-x-large-padding-x, var(--luna-space-6));font-size:var(--luna-btn-size-x-large-font-size, 1.125rem)}.luna-button__icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:inherit;position:relative;z-index:1}.luna-button__content{display:inline-flex;align-items:center;position:relative;z-index:1;transition:opacity .18s ease,transform .18s ease}.luna-button[data-loading=true] .luna-button__content,.luna-button[data-loading=true] .luna-button__icon{opacity:0;transform:scale(.97)}.luna-button__loader{position:absolute;top:0;right:0;bottom:0;left:0;display:inline-flex;align-items:center;justify-content:center;pointer-events:none;z-index:2;opacity:0;transition:opacity .18s ease,transform .18s ease;transform:scale(.97)}.luna-button[data-loading=true] .luna-button__loader{opacity:1;transform:scale(1)}.luna-button__loader-phases{display:inline-flex;align-items:center;justify-content:center;gap:var(--luna-btn-loader-gap);min-width:var(--luna-btn-loader-min-width)}.luna-button__moon{width:var(--luna-btn-loader-moon-size);height:var(--luna-btn-loader-moon-size);border-radius:999px;flex:0 0 auto;box-shadow:0 0 0 1px #ffffff0d;will-change:transform,opacity,filter;animation:luna-button-lunar-pulse 1.8s infinite ease-in-out}.luna-button__moon:nth-child(2){animation-delay:.18s}.luna-button__moon:nth-child(3){animation-delay:.36s}.luna-button__moon:nth-child(4){animation-delay:.54s}.luna-button__moon:nth-child(5){animation-delay:.72s}.luna-button__moon--new{background:color-mix(in srgb,currentColor 58%,transparent)}.luna-button__moon--waxing{background:linear-gradient(90deg,color-mix(in srgb,currentColor 62%,transparent) 50%,#ffffff29 50%)}.luna-button__moon--full{background:color-mix(in srgb,currentColor 88%,#ffffff)}.luna-button__moon--waning{background:linear-gradient(90deg,#ffffff29 50%,color-mix(in srgb,currentColor 88%,#ffffff) 50%)}.luna-button__moon--faint{background:color-mix(in srgb,currentColor 30%,transparent)}.luna-button__loader-star{width:calc(100% - 4px);height:calc(100% - 4px);border-radius:inherit;position:relative;overflow:hidden}.luna-button__loader-star:before{content:"";position:absolute;width:220%;height:220%;top:-60%;left:-60%;background-image:conic-gradient(transparent 0deg,transparent 258deg,rgb(255 255 255 / .06) 286deg,currentColor 318deg,rgb(255 255 255 / .14) 334deg,transparent 356deg,transparent 360deg);animation:luna-button-loading-star 2.4s linear infinite}.luna-button__loader-star:after{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:inherit;background:var(--luna-btn-bg, var(--luna-btn-bg-default, var(--luna-color-primary-600)))}.luna-button.is-bouncing{animation:luna-button-bounce 3s infinite}.luna-button.is-wiggling{animation:luna-button-wiggle 4s infinite}.luna-button.is-pulsing{animation:luna-button-pulse 2s infinite}.luna-button[data-loading-animation=lunar] .luna-button__moon{animation-name:luna-button-lunar-pulse}.luna-button[data-loading-animation=loading-star] .luna-button__loader-star{display:block}@keyframes luna-button-lunar-pulse{0%,to{transform:translateY(0) scale(.96);opacity:.42;filter:brightness(.95)}50%{transform:translateY(-1px) scale(1);opacity:1;filter:brightness(1.08)}}@keyframes luna-button-loading-star{to{transform:rotate(360deg)}}@keyframes luna-button-bounce{0%,24%,to{transform:translateY(0)}6%{transform:translateY(-10px)}12%{transform:translateY(2px)}18%{transform:translateY(-4px)}}@keyframes luna-button-wiggle{0%,16%,to{transform:rotate(0)}4%{transform:rotate(-3deg)}8%{transform:rotate(2deg)}12%{transform:rotate(-1.5deg)}}@keyframes luna-button-pulse{0%,to{transform:scale(1);box-shadow:var(--luna-shadow-md)}10%{transform:scale(1.02);box-shadow:var(--luna-shadow-md),0 0 18px #8cb4ff38}20%{transform:scale(1);box-shadow:var(--luna-shadow-md)}}
1
+ .luna-button{--luna-btn-loader-gap: .28rem;--luna-btn-loader-min-width: 4.35rem;--luna-btn-loader-moon-size: .58rem;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--luna-btn-size-medium-gap, var(--luna-space-2));min-height:var(--luna-btn-size-medium-min-height, 2.5rem);padding:var(--luna-btn-size-medium-padding-y, var(--luna-space-2)) var(--luna-btn-size-medium-padding-x, var(--luna-space-4));border:1px solid transparent;border-radius:var(--luna-btn-radius, var(--luna-radius-md));background:var(--luna-btn-bg, var(--luna-btn-bg-default, var(--luna-color-primary-600)));color:var(--luna-btn-fg-default, #ffffff);box-shadow:var(--luna-shadow-md);font-family:var(--luna-font-family);font-size:var(--luna-btn-size-medium-font-size, var(--luna-font-size-sm, .875rem));font-weight:var(--luna-btn-font-weight, 600);line-height:1;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;overflow:hidden;transition:background-color var(--luna-motion-base),border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),color var(--luna-motion-base),opacity var(--luna-motion-base),transform var(--luna-motion-fast)}.luna-button:hover{background:var( --luna-btn-hover-bg, color-mix(in srgb, var(--luna-btn-bg, var(--luna-btn-bg-default, var(--luna-color-primary-600))) 88%, #000000) )}.luna-button:focus-visible{outline:2px solid var(--luna-color-accent-400);outline-offset:2px}.luna-button:active{transform:translateY(1px)}.luna-button:disabled,.luna-button[data-disabled=true]{cursor:not-allowed;opacity:.56}.luna-button--block{display:flex;width:100%}.luna-button--absolute{position:absolute}.luna-button--fixed{position:fixed}.luna-button--outline{color:var(--luna-btn-outline-fg, var(--luna-foreground));border-color:var(--luna-btn-outline-border, var(--luna-border))}.luna-button--flat{background:transparent;color:var(--luna-btn-flat-fg, var(--luna-foreground))}.luna-button--flat:hover{background:transparent}.luna-button--depressed{box-shadow:none}.luna-button--rounded{border-radius:var(--luna-radius-pill)}.luna-button--info{background:transparent;box-shadow:none;border-color:transparent;color:var(--luna-btn-info-color, var(--luna-btn-info-fg, var(--luna-color-primary-500)));min-height:auto;padding:0;text-decoration:underline;text-underline-offset:.18em}.luna-button--info:hover{background:transparent;color:var(--luna-btn-info-hover-fg, color-mix(in srgb, var(--luna-btn-info-color, var(--luna-btn-info-fg, var(--luna-color-primary-500))) 84%, #000000))}.luna-button--fab{border-radius:999px;min-width:var(--luna-btn-size-medium-min-height, 2.5rem);padding-inline:0}.luna-button--light{background:var(--luna-background);color:var(--luna-foreground)}.luna-button--dark{background:var(--luna-foreground);color:var(--luna-background)}.luna-button[data-size=x-small]{--luna-btn-loader-gap: .22rem;--luna-btn-loader-min-width: 3.5rem;--luna-btn-loader-moon-size: .48rem;gap:var(--luna-btn-size-x-small-gap, var(--luna-space-1));min-height:var(--luna-btn-size-x-small-min-height, 1.75rem);padding:var(--luna-btn-size-x-small-padding-y, var(--luna-space-1)) var(--luna-btn-size-x-small-padding-x, var(--luna-space-2));font-size:var(--luna-btn-size-x-small-font-size, .75rem)}.luna-button[data-size=small]{--luna-btn-loader-gap: .24rem;--luna-btn-loader-min-width: 3.9rem;--luna-btn-loader-moon-size: .52rem;gap:var(--luna-btn-size-small-gap, var(--luna-space-1));min-height:var(--luna-btn-size-small-min-height, 2rem);padding:var(--luna-btn-size-small-padding-y, var(--luna-space-1)) var(--luna-btn-size-small-padding-x, var(--luna-space-3));font-size:var(--luna-btn-size-small-font-size, .75rem)}.luna-button[data-size=medium]{gap:var(--luna-btn-size-medium-gap, var(--luna-space-2));min-height:var(--luna-btn-size-medium-min-height, 2.5rem);padding:var(--luna-btn-size-medium-padding-y, var(--luna-space-2)) var(--luna-btn-size-medium-padding-x, var(--luna-space-4));font-size:var(--luna-btn-size-medium-font-size, .875rem)}.luna-button[data-size=large]{--luna-btn-loader-gap: .32rem;--luna-btn-loader-min-width: 4.9rem;--luna-btn-loader-moon-size: .64rem;gap:var(--luna-btn-size-large-gap, var(--luna-space-2));min-height:var(--luna-btn-size-large-min-height, 3rem);padding:var(--luna-btn-size-large-padding-y, var(--luna-space-2)) var(--luna-btn-size-large-padding-x, var(--luna-space-5));font-size:var(--luna-btn-size-large-font-size, 1rem)}.luna-button[data-size=x-large]{--luna-btn-loader-gap: .36rem;--luna-btn-loader-min-width: 5.35rem;--luna-btn-loader-moon-size: .7rem;gap:var(--luna-btn-size-x-large-gap, var(--luna-space-3));min-height:var(--luna-btn-size-x-large-min-height, 3.5rem);padding:var(--luna-btn-size-x-large-padding-y, var(--luna-space-3)) var(--luna-btn-size-x-large-padding-x, var(--luna-space-6));font-size:var(--luna-btn-size-x-large-font-size, 1.125rem)}.luna-button__icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:inherit;position:relative;z-index:1}.luna-button__content{display:inline-flex;align-items:center;position:relative;z-index:1;transition:opacity .18s ease,transform .18s ease}.luna-button[data-loading=true] .luna-button__content,.luna-button[data-loading=true] .luna-button__icon{opacity:0;transform:scale(.97)}.luna-button__loader{position:absolute;top:0;right:0;bottom:0;left:0;display:inline-flex;align-items:center;justify-content:center;pointer-events:none;z-index:2;opacity:0;transition:opacity .18s ease,transform .18s ease;transform:scale(.97)}.luna-button[data-loading=true] .luna-button__loader{opacity:1;transform:scale(1)}.luna-button__loader-phases{display:inline-flex;align-items:center;justify-content:center;gap:var(--luna-btn-loader-gap);min-width:var(--luna-btn-loader-min-width)}.luna-button__moon{width:var(--luna-btn-loader-moon-size);height:var(--luna-btn-loader-moon-size);border-radius:999px;flex:0 0 auto;box-shadow:0 0 0 1px #ffffff0d;will-change:transform,opacity,filter;animation:luna-button-lunar-pulse 1.8s infinite ease-in-out}.luna-button__moon:nth-child(2){animation-delay:.18s}.luna-button__moon:nth-child(3){animation-delay:.36s}.luna-button__moon:nth-child(4){animation-delay:.54s}.luna-button__moon:nth-child(5){animation-delay:.72s}.luna-button__moon--new{background:color-mix(in srgb,currentColor 58%,transparent)}.luna-button__moon--waxing{background:linear-gradient(90deg,color-mix(in srgb,currentColor 62%,transparent) 50%,#ffffff29 50%)}.luna-button__moon--full{background:color-mix(in srgb,currentColor 88%,#ffffff)}.luna-button__moon--waning{background:linear-gradient(90deg,#ffffff29 50%,color-mix(in srgb,currentColor 88%,#ffffff) 50%)}.luna-button__moon--faint{background:color-mix(in srgb,currentColor 30%,transparent)}.luna-button__loader-star{width:calc(100% - 4px);height:calc(100% - 4px);border-radius:inherit;position:relative;overflow:hidden}.luna-button__loader-star:before{content:"";position:absolute;width:220%;height:220%;top:-60%;left:-60%;background-image:conic-gradient(transparent 0deg,transparent 258deg,rgb(255 255 255 / .06) 286deg,currentColor 318deg,rgb(255 255 255 / .14) 334deg,transparent 356deg,transparent 360deg);animation:luna-button-loading-star 2.4s linear infinite}.luna-button__loader-star:after{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:inherit;background:var(--luna-btn-bg, var(--luna-btn-bg-default, var(--luna-color-primary-600)))}.luna-button.is-bouncing{animation:luna-button-bounce 3s infinite}.luna-button.is-wiggling{animation:luna-button-wiggle 4s infinite}.luna-button.is-pulsing{animation:luna-button-pulse 2s infinite}.luna-button[data-loading-animation=lunar] .luna-button__moon{animation-name:luna-button-lunar-pulse}.luna-button[data-loading-animation=loading-star] .luna-button__loader-star{display:block}@keyframes luna-button-lunar-pulse{0%,to{transform:translateY(0) scale(.96);opacity:.42;filter:brightness(.95)}50%{transform:translateY(-1px) scale(1);opacity:1;filter:brightness(1.08)}}@keyframes luna-button-loading-star{to{transform:rotate(360deg)}}@keyframes luna-button-bounce{0%,24%,to{transform:translateY(0)}6%{transform:translateY(-10px)}12%{transform:translateY(2px)}18%{transform:translateY(-4px)}}@keyframes luna-button-wiggle{0%,16%,to{transform:rotate(0)}4%{transform:rotate(-3deg)}8%{transform:rotate(2deg)}12%{transform:rotate(-1.5deg)}}@keyframes luna-button-pulse{0%,to{transform:scale(1);box-shadow:var(--luna-shadow-md)}10%{transform:scale(1.02);box-shadow:var(--luna-shadow-md),0 0 18px #8cb4ff38}20%{transform:scale(1);box-shadow:var(--luna-shadow-md)}}.luna-column{display:flex;flex-direction:column;gap:var(--luna-layout-gap, 0);align-items:var(--luna-layout-align, stretch);justify-content:var(--luna-layout-justify, flex-start)}.luna-column--inline{display:inline-flex}.luna-column__item{box-sizing:border-box;width:calc((var(--luna-layout-span-xs, 12) / 12) * 100%);max-width:calc((var(--luna-layout-span-xs, 12) / 12) * 100%);min-width:0}@media (min-width: 576px){.luna-column__item{width:calc((var(--luna-layout-span-sm, var(--luna-layout-span-xs, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-sm, var(--luna-layout-span-xs, 12)) / 12) * 100%)}}@media (min-width: 768px){.luna-column__item{width:calc((var(--luna-layout-span-md, var(--luna-layout-span-sm, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-md, var(--luna-layout-span-sm, 12)) / 12) * 100%)}}@media (min-width: 992px){.luna-column__item{width:calc((var(--luna-layout-span-lg, var(--luna-layout-span-md, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-lg, var(--luna-layout-span-md, 12)) / 12) * 100%)}}@media (min-width: 1200px){.luna-column__item{width:calc((var(--luna-layout-span-xl, var(--luna-layout-span-lg, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-xl, var(--luna-layout-span-lg, 12)) / 12) * 100%)}}.luna-row{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--luna-layout-gap, 0);align-items:var(--luna-layout-align, stretch);justify-content:var(--luna-layout-justify, flex-start)}.luna-row--no-wrap{flex-wrap:nowrap}.luna-row--inline{display:inline-flex}.luna-row__item{box-sizing:border-box;flex:0 0 calc((var(--luna-layout-span-xs, 12) / 12) * 100%);max-width:calc((var(--luna-layout-span-xs, 12) / 12) * 100%);min-width:0}.luna-row__item[style*="--luna-layout-span-xs: auto"]{flex:0 0 auto;max-width:none}@media (min-width: 576px){.luna-row__item{flex-basis:calc((var(--luna-layout-span-sm, var(--luna-layout-span-xs, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-sm, var(--luna-layout-span-xs, 12)) / 12) * 100%)}.luna-row__item[style*="--luna-layout-span-sm: auto"]{flex-basis:auto;max-width:none}}@media (min-width: 768px){.luna-row__item{flex-basis:calc((var(--luna-layout-span-md, var(--luna-layout-span-sm, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-md, var(--luna-layout-span-sm, 12)) / 12) * 100%)}.luna-row__item[style*="--luna-layout-span-md: auto"]{flex-basis:auto;max-width:none}}@media (min-width: 992px){.luna-row__item{flex-basis:calc((var(--luna-layout-span-lg, var(--luna-layout-span-md, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-lg, var(--luna-layout-span-md, 12)) / 12) * 100%)}.luna-row__item[style*="--luna-layout-span-lg: auto"]{flex-basis:auto;max-width:none}}@media (min-width: 1200px){.luna-row__item{flex-basis:calc((var(--luna-layout-span-xl, var(--luna-layout-span-lg, 12)) / 12) * 100%);max-width:calc((var(--luna-layout-span-xl, var(--luna-layout-span-lg, 12)) / 12) * 100%)}.luna-row__item[style*="--luna-layout-span-xl: auto"]{flex-basis:auto;max-width:none}}.luna-card{display:grid;gap:var(--luna-card-gap, var(--luna-card-gap-default, 1rem));padding:var(--luna-card-padding, var(--luna-card-padding-default, 1rem));border:1px solid var(--luna-card-border, var(--luna-border));border-radius:var(--luna-card-radius, var(--luna-radius-lg));background:var(--luna-card-bg-override, var(--luna-card-bg, var(--luna-surface)));color:var(--luna-card-fg, var(--luna-foreground));box-shadow:var(--luna-card-shadow, var(--luna-shadow-sm));transition:border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),background-color var(--luna-motion-base),transform var(--luna-motion-fast)}.luna-card--outlined{border-color:var(--luna-card-border, var(--luna-border))}.luna-card--elevated{box-shadow:var(--luna-card-elevated-shadow, var(--luna-shadow-md))}.luna-card--flat{box-shadow:none}.luna-card--rounded{border-radius:var(--luna-radius-pill)}.luna-card--interactive{cursor:pointer}.luna-card--interactive:hover{border-color:var(--luna-card-hover-border, var(--luna-card-border, var(--luna-border)));box-shadow:var(--luna-card-hover-shadow, var(--luna-card-shadow, var(--luna-shadow-sm)));transform:translateY(-1px)}.luna-card__header-content{margin:0}.luna-card__actions,.luna-card__header,.luna-card__body{min-width:0}.luna-text{--luna-text-current-font-size: var(--luna-text-variant-body-font-size, var(--luna-font-size-md, 1rem));--luna-text-current-font-weight: var(--luna-text-variant-body-font-weight, 400);--luna-text-current-line-height: var(--luna-text-variant-body-line-height, 1.6);--luna-text-current-letter-spacing: var(--luna-text-variant-body-letter-spacing, normal);--luna-text-current-text-transform: var(--luna-text-variant-body-text-transform, none);display:block;margin:0;color:var(--luna-text-color, var(--luna-text-fg, var(--luna-foreground)));font-family:var(--luna-font-family);font-size:var(--luna-text-current-font-size);font-weight:var(--luna-text-current-font-weight);line-height:var(--luna-text-current-line-height);letter-spacing:var(--luna-text-current-letter-spacing);text-transform:var(--luna-text-current-text-transform);text-align:var(--luna-text-align, inherit);text-decoration:none}.luna-text--inline{display:inline}.luna-text--muted{color:var(--luna-text-muted-fg, var(--luna-muted))}.luna-text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.luna-text--surface{background:var(--luna-text-surface-bg, var(--luna-surface));border:1px solid var(--luna-text-surface-border, var(--luna-border));border-radius:var(--luna-radius-sm);padding:.08em .42em}.luna-text--italic{font-style:italic}.luna-text--underline{text-decoration:underline;text-underline-offset:.16em}.luna-text[data-variant=body]{--luna-text-current-font-size: var(--luna-text-variant-body-font-size, 1rem);--luna-text-current-font-weight: var(--luna-text-variant-body-font-weight, 400);--luna-text-current-line-height: var(--luna-text-variant-body-line-height, 1.6);--luna-text-current-letter-spacing: var(--luna-text-variant-body-letter-spacing, normal);--luna-text-current-text-transform: var(--luna-text-variant-body-text-transform, none)}.luna-text[data-variant=body-small]{--luna-text-current-font-size: var(--luna-text-variant-body-small-font-size, .875rem);--luna-text-current-font-weight: var(--luna-text-variant-body-small-font-weight, 400);--luna-text-current-line-height: var(--luna-text-variant-body-small-line-height, 1.6);--luna-text-current-letter-spacing: var(--luna-text-variant-body-small-letter-spacing, normal);--luna-text-current-text-transform: var(--luna-text-variant-body-small-text-transform, none)}.luna-text[data-variant=caption]{--luna-text-current-font-size: var(--luna-text-variant-caption-font-size, .75rem);--luna-text-current-font-weight: var(--luna-text-variant-caption-font-weight, 500);--luna-text-current-line-height: var(--luna-text-variant-caption-line-height, 1.4);--luna-text-current-letter-spacing: var(--luna-text-variant-caption-letter-spacing, .01em);--luna-text-current-text-transform: var(--luna-text-variant-caption-text-transform, none)}.luna-text[data-variant=label]{--luna-text-current-font-size: var(--luna-text-variant-label-font-size, .875rem);--luna-text-current-font-weight: var(--luna-text-variant-label-font-weight, 600);--luna-text-current-line-height: var(--luna-text-variant-label-line-height, 1.4);--luna-text-current-letter-spacing: var(--luna-text-variant-label-letter-spacing, .01em);--luna-text-current-text-transform: var(--luna-text-variant-label-text-transform, none)}.luna-text[data-variant=title]{--luna-text-current-font-size: var(--luna-text-variant-title-font-size, 1.25rem);--luna-text-current-font-weight: var(--luna-text-variant-title-font-weight, 600);--luna-text-current-line-height: var(--luna-text-variant-title-line-height, 1.1);--luna-text-current-letter-spacing: var(--luna-text-variant-title-letter-spacing, normal);--luna-text-current-text-transform: var(--luna-text-variant-title-text-transform, none)}.luna-text[data-variant=display]{--luna-text-current-font-size: var(--luna-text-variant-display-font-size, 1.5rem);--luna-text-current-font-weight: var(--luna-text-variant-display-font-weight, 700);--luna-text-current-line-height: var(--luna-text-variant-display-line-height, 1.1);--luna-text-current-letter-spacing: var(--luna-text-variant-display-letter-spacing, -.02em);--luna-text-current-text-transform: var(--luna-text-variant-display-text-transform, none)}.luna-divider{position:relative;border:0;color:var(--luna-divider-line-color, var(--luna-divider-default, var(--luna-border)));margin:0;flex:0 0 auto}.luna-divider--horizontal{display:grid;align-items:center;gap:var(--luna-space-3, .75rem);margin-block:var(--luna-divider-spacing, var(--luna-divider-spacing-default, 1rem))}.luna-divider--horizontal:before,.luna-divider--horizontal:after{content:"";display:block;border-top:1px solid currentColor}.luna-divider--horizontal:not(.luna-divider--labeled){grid-template-columns:minmax(0,1fr)}.luna-divider--horizontal:not(.luna-divider--labeled):after{display:none}.luna-divider--horizontal.luna-divider--label-start{grid-template-columns:max-content minmax(0,1fr)}.luna-divider--horizontal.luna-divider--label-start:before{display:none}.luna-divider--horizontal.luna-divider--label-center{grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr)}.luna-divider--horizontal.luna-divider--label-end{grid-template-columns:minmax(0,1fr) max-content}.luna-divider--horizontal.luna-divider--label-end:after{display:none}.luna-divider--vertical{display:block;width:1px;min-width:1px;height:100%;min-height:3rem;background:currentColor;margin-inline:var(--luna-divider-spacing, var(--luna-divider-spacing-default, 1rem))}.luna-divider--muted{color:var(--luna-divider-muted, var(--luna-border))}.luna-divider--strong{color:var(--luna-divider-strong, var(--luna-foreground))}.luna-divider--inset.luna-divider--horizontal{margin-inline:var(--luna-divider-inset, var(--luna-divider-inset-default, 1rem))}.luna-divider--inset.luna-divider--vertical{margin-block:var(--luna-divider-inset, var(--luna-divider-inset-default, 1rem))}.luna-divider__label{grid-column:2;min-width:0;padding-inline:var(--luna-space-2, .5rem);background:var(--luna-divider-label-bg, var(--luna-background));color:var(--luna-divider-label-fg, var(--luna-muted))}.luna-divider--label-start .luna-divider__label{grid-column:1}.luna-divider--label-center .luna-divider__label,.luna-divider--label-end .luna-divider__label{grid-column:2}.luna-header{display:grid;gap:var(--luna-header-gap, .5rem);justify-items:var(--luna-header-align, start);text-align:var(--luna-header-text-align, left);min-width:0}.luna-header__title,.luna-header__subtitle{min-width:0;margin:0}.luna-input-field{display:inline-grid;gap:var(--luna-space-2, .5rem);min-width:0}.luna-input-field--full-width{display:grid;width:100%}.luna-input-field__label{color:var(--luna-input-label-fg, var(--luna-foreground))}.luna-input-field__label--inset{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;display:inline-flex;align-items:center;max-width:calc(100% - (var(--luna-input-current-padding-x, .75rem) * 2));padding-inline:var(--luna-space-1, .25rem);color:var(--luna-input-placeholder, var(--luna-muted));line-height:1;transform:translateY(-50%);transition:top var(--luna-motion-base),transform var(--luna-motion-base),color var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-input-field__control{box-sizing:border-box;position:relative;display:flex;align-items:center;gap:var(--luna-input-current-gap, var(--luna-input-size-md-gap, .5rem));height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.75rem));min-height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.75rem));padding-inline:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, 1rem));padding-block:var(--luna-input-current-padding-y, var(--luna-input-size-md-padding-y, .5rem));border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));color:var(--luna-input-fg, var(--luna-foreground));transition:border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-input-field__content{display:flex;align-items:center;flex:1 1 auto;min-width:0}.luna-input-field__control:hover{border-color:var(--luna-input-hover-border, var(--luna-input-border, var(--luna-border)))}.luna-input-field__control:focus-within{border-color:var(--luna-input-focus-border, var(--luna-color-primary-500));box-shadow:0 0 0 3px var(--luna-input-focus-ring, rgba(99, 102, 241, .18))}.luna-input-field--invalid .luna-input-field__control{border-color:var(--luna-input-error-border, var(--luna-color-danger-500))}.luna-input-field--invalid .luna-input-field__control:focus-within{border-color:var(--luna-input-error-border, var(--luna-color-danger-500));box-shadow:0 0 0 3px var(--luna-input-error-focus-ring, rgba(239, 68, 68, .18))}.luna-input-field--disabled .luna-input-field__control{background:var(--luna-input-disabled-bg, var(--luna-surface));color:var(--luna-input-disabled-fg, var(--luna-muted));border-color:var(--luna-input-disabled-border, var(--luna-border))}.luna-input-field__leading,.luna-input-field__trailing{display:inline-flex;align-items:center;color:var(--luna-input-placeholder, var(--luna-muted));flex:0 0 auto}.luna-input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:inherit;font:inherit;font-size:var(--luna-input-current-font-size, var(--luna-input-size-md-font-size, .875rem));line-height:1;min-height:1em;padding:0;margin:0;transition:transform var(--luna-motion-base)}.luna-input-field--inset-label .luna-input-field__control{padding-top:var(--luna-input-current-padding-y, .25rem)}.luna-input-field--inset-label-active .luna-input-field__control{padding-top:calc(var(--luna-input-current-padding-y, .25rem) + var(--luna-space-2, .5rem))}.luna-input-field--inset-label-active .luna-input-field__label--inset{top:0;background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-bg, var(--luna-surface)) 50% 100%);transform:translateY(-50%)}.luna-input-field--disabled.luna-input-field--inset-label-active .luna-input-field__label--inset{background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-disabled-bg, var(--luna-surface)) 50% 100%)}.luna-input-field--inset-label-active .luna-input{transform:translateY(calc(var(--luna-space-2, .5rem) * -.5))}.luna-input::placeholder{color:var(--luna-input-placeholder, var(--luna-muted))}.luna-input:disabled{cursor:not-allowed}.luna-input-field__message{min-width:0}.luna-input-field__message--help{color:var(--luna-input-help-fg, var(--luna-muted))}.luna-input-field__message--error{color:var(--luna-input-error-fg, var(--luna-color-danger-600))}.luna-input-field[data-size=sm]{--luna-input-current-min-height: var(--luna-input-size-sm-min-height, 2rem);--luna-input-current-padding-x: var(--luna-input-size-sm-padding-x, .5rem);--luna-input-current-padding-y: var(--luna-input-size-sm-padding-y, .25rem);--luna-input-current-font-size: var(--luna-input-size-sm-font-size, .75rem);--luna-input-current-gap: var(--luna-input-size-sm-gap, .25rem)}.luna-input-field[data-size=md]{--luna-input-current-min-height: var(--luna-input-size-md-min-height, 2.5rem);--luna-input-current-padding-x: var(--luna-input-size-md-padding-x, 1rem);--luna-input-current-padding-y: var(--luna-input-size-md-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-md-font-size, .875rem);--luna-input-current-gap: var(--luna-input-size-md-gap, .5rem)}.luna-input-field[data-size=lg]{--luna-input-current-min-height: var(--luna-input-size-lg-min-height, 3rem);--luna-input-current-padding-x: var(--luna-input-size-lg-padding-x, 1.25rem);--luna-input-current-padding-y: var(--luna-input-size-lg-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-lg-font-size, 1rem);--luna-input-current-gap: var(--luna-input-size-lg-gap, .5rem)}.luna-textarea-field{display:inline-grid;gap:var(--luna-space-2, .5rem);min-width:0}.luna-textarea-field--full-width{display:grid;width:100%}.luna-textarea-field__label{color:var(--luna-input-label-fg, var(--luna-foreground))}.luna-textarea-field__label--inset{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;display:inline-flex;align-items:center;max-width:calc(100% - (var(--luna-input-current-padding-x, .75rem) * 2));padding-inline:var(--luna-space-1, .25rem);color:var(--luna-input-placeholder, var(--luna-muted));line-height:1;transform:translateY(-50%);transition:top var(--luna-motion-base),transform var(--luna-motion-base),color var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-textarea-field__control{position:relative;display:block;min-height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));padding-inline:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));padding-block:var(--luna-input-current-padding-y, var(--luna-input-size-md-padding-y, .25rem));border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));color:var(--luna-input-fg, var(--luna-foreground));transition:border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-textarea-field__control:hover{border-color:var(--luna-input-hover-border, var(--luna-input-border, var(--luna-border)))}.luna-textarea-field__control:focus-within{border-color:var(--luna-input-focus-border, var(--luna-color-primary-500));box-shadow:0 0 0 3px var(--luna-input-focus-ring, rgba(99, 102, 241, .18))}.luna-textarea-field--invalid .luna-textarea-field__control{border-color:var(--luna-input-error-border, var(--luna-color-danger-500))}.luna-textarea-field--invalid .luna-textarea-field__control:focus-within{border-color:var(--luna-input-error-border, var(--luna-color-danger-500));box-shadow:0 0 0 3px var(--luna-input-error-focus-ring, rgba(239, 68, 68, .18))}.luna-textarea-field--disabled .luna-textarea-field__control{background:var(--luna-input-disabled-bg, var(--luna-surface));color:var(--luna-input-disabled-fg, var(--luna-muted));border-color:var(--luna-input-disabled-border, var(--luna-border))}.luna-textarea{display:block;width:100%;min-width:0;min-height:100%;border:0;outline:0;background:transparent;color:inherit;font:inherit;font-size:var(--luna-input-current-font-size, var(--luna-input-size-md-font-size, .875rem));line-height:1.5;padding:0;margin:0;resize:var(--luna-textarea-resize, vertical)}.luna-textarea::placeholder{color:var(--luna-input-placeholder, var(--luna-muted))}.luna-textarea:disabled{cursor:not-allowed}.luna-textarea-field--inset-label .luna-textarea-field__control{padding-top:var(--luna-input-current-padding-y, .25rem)}.luna-textarea-field--inset-label-active .luna-textarea-field__control{padding-top:calc(var(--luna-input-current-padding-y, .25rem) + var(--luna-space-2, .5rem))}.luna-textarea-field--inset-label-active .luna-textarea-field__label--inset{top:0;background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-bg, var(--luna-surface)) 50% 100%);transform:translateY(-50%)}.luna-textarea-field--disabled.luna-textarea-field--inset-label-active .luna-textarea-field__label--inset{background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-disabled-bg, var(--luna-surface)) 50% 100%)}.luna-textarea-field__message{min-width:0}.luna-textarea-field__message--help{color:var(--luna-input-help-fg, var(--luna-muted))}.luna-textarea-field__message--error{color:var(--luna-input-error-fg, var(--luna-color-danger-600))}.luna-textarea-field[data-size=sm]{--luna-input-current-min-height: max(var(--luna-input-size-sm-min-height, 2rem), 4.5rem);--luna-input-current-padding-x: var(--luna-input-size-sm-padding-x, .5rem);--luna-input-current-padding-y: var(--luna-input-size-sm-padding-y, .25rem);--luna-input-current-font-size: var(--luna-input-size-sm-font-size, .75rem)}.luna-textarea-field[data-size=md]{--luna-input-current-min-height: max(var(--luna-input-size-md-min-height, 2.5rem), 5.5rem);--luna-input-current-padding-x: var(--luna-input-size-md-padding-x, 1rem);--luna-input-current-padding-y: var(--luna-input-size-md-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-md-font-size, .875rem)}.luna-textarea-field[data-size=lg]{--luna-input-current-min-height: max(var(--luna-input-size-lg-min-height, 3rem), 6.5rem);--luna-input-current-padding-x: var(--luna-input-size-lg-padding-x, 1.25rem);--luna-input-current-padding-y: var(--luna-input-size-lg-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-lg-font-size, 1rem)}.luna-select-field{display:inline-grid;gap:var(--luna-space-2, .5rem);min-width:0;min-inline-size:var(--luna-select-min-width, 12rem)}.luna-select-field--full-width{display:grid;width:100%}.luna-select-field__label{color:var(--luna-input-label-fg, var(--luna-foreground))}.luna-select-field__label--inset{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;pointer-events:none;display:inline-flex;align-items:center;max-width:calc(100% - (var(--luna-input-current-padding-x, .75rem) * 2));padding-inline:var(--luna-space-1, .25rem);color:var(--luna-input-placeholder, var(--luna-muted));line-height:1;transform:translateY(-50%);transition:top var(--luna-motion-base),transform var(--luna-motion-base),color var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-select-field__control{box-sizing:border-box;position:relative;display:flex;align-items:center;height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));min-height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));padding-inline:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));padding-block:var(--luna-input-current-padding-y, var(--luna-input-size-md-padding-y, .25rem));border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));color:var(--luna-input-fg, var(--luna-foreground));cursor:pointer;transition:border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-select-field__control:after{content:"";position:absolute;top:50%;right:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));width:.55rem;height:.55rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-50%) rotate(45deg);pointer-events:none;opacity:.75}.luna-select-field__control:hover{border-color:var(--luna-input-hover-border, var(--luna-input-border, var(--luna-border)))}.luna-select-field__control:focus-within{border-color:var(--luna-input-focus-border, var(--luna-color-primary-500));box-shadow:0 0 0 3px var(--luna-input-focus-ring, rgba(99, 102, 241, .18))}.luna-select-field--invalid .luna-select-field__control{border-color:var(--luna-input-error-border, var(--luna-color-danger-500))}.luna-select-field--invalid .luna-select-field__control:focus-within{border-color:var(--luna-input-error-border, var(--luna-color-danger-500));box-shadow:0 0 0 3px var(--luna-input-error-focus-ring, rgba(239, 68, 68, .18))}.luna-select-field--disabled .luna-select-field__control{background:var(--luna-input-disabled-bg, var(--luna-surface));color:var(--luna-input-disabled-fg, var(--luna-muted));border-color:var(--luna-input-disabled-border, var(--luna-border));cursor:not-allowed}.luna-select{display:flex;align-items:center;width:100%;min-width:0;min-height:calc(var(--luna-input-current-min-height, 2.375rem) - (var(--luna-input-current-padding-y, .25rem) * 2));border:0;outline:0;background:transparent;color:inherit;font:inherit;font-size:var(--luna-input-current-font-size, var(--luna-input-size-md-font-size, .875rem));line-height:1;padding:0;margin:0;padding-right:calc(var(--luna-input-current-padding-x, .75rem) + 1rem);text-align:left;cursor:pointer}.luna-select-field--has-selection .luna-select{padding-left:calc(var(--luna-input-current-padding-x, .75rem) + 1rem)}.luna-select__value{display:flex;align-items:center;min-width:0;min-height:1em;line-height:1;transition:opacity var(--luna-motion-base),transform var(--luna-motion-base)}.luna-select__value--placeholder{color:var(--luna-input-placeholder, var(--luna-muted))}.luna-select-field--open .luna-select__value{opacity:0}.luna-select__native{position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;opacity:0;pointer-events:none}.luna-select__clear{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;display:inline-flex;align-items:center;justify-content:center;width:.9rem;height:.9rem;padding:0;border:0;background:transparent;color:var(--luna-input-placeholder, var(--luna-muted));transform:translateY(-50%);cursor:pointer;transition:background-color var(--luna-motion-base),color var(--luna-motion-base)}.luna-select__clear:before,.luna-select__clear:after{content:"";position:absolute;width:.75rem;height:1.5px;border-radius:999px;background:currentColor}.luna-select__clear:before{transform:rotate(45deg)}.luna-select__clear:after{transform:rotate(-45deg)}.luna-select__clear:hover{color:var(--luna-input-fg, var(--luna-foreground))}.luna-select__clear:focus-visible{outline:0;color:var(--luna-input-fg, var(--luna-foreground))}.luna-select__clear:disabled{cursor:not-allowed;color:var(--luna-input-disabled-fg, var(--luna-muted))}.luna-select__listbox{position:absolute;top:calc(100% + var(--luna-space-1, .25rem));left:0;right:0;z-index:10;display:grid;gap:var(--luna-space-1, .25rem);padding:var(--luna-space-1, .25rem);border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));box-shadow:var(--luna-shadow-md)}.luna-select__option{min-width:0;padding:.55rem .75rem;border-radius:var(--luna-radius-sm);color:var(--luna-input-fg, var(--luna-foreground));cursor:pointer}.luna-select__option--highlighted{background:color-mix(in srgb,var(--luna-input-bg, var(--luna-surface)) 70%,var(--luna-foreground) 8%)}.luna-select__option--selected{background:color-mix(in srgb,var(--luna-input-bg, var(--luna-surface)) 40%,var(--luna-color-primary-500) 12%)}.luna-select__option--disabled{color:var(--luna-input-disabled-fg, var(--luna-muted));cursor:not-allowed}.luna-select-field--inset-label .luna-select-field__control{padding-top:var(--luna-input-current-padding-y, .25rem)}.luna-select-field--inset-label-active .luna-select-field__control{padding-top:calc(var(--luna-input-current-padding-y, .25rem) + var(--luna-space-2, .5rem))}.luna-select-field--inset-label-active .luna-select-field__label--inset{top:0;background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-bg, var(--luna-surface)) 50% 100%);transform:translateY(-50%)}.luna-select-field--disabled.luna-select-field--inset-label-active .luna-select-field__label--inset{background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-disabled-bg, var(--luna-surface)) 50% 100%)}.luna-select-field--inset-label-active .luna-select__value{transform:translateY(calc(var(--luna-space-2, .5rem) * -.5))}.luna-select:disabled{cursor:not-allowed}.luna-select-field__message{min-width:0}.luna-select-field__message--help{color:var(--luna-input-help-fg, var(--luna-muted))}.luna-select-field__message--error{color:var(--luna-input-error-fg, var(--luna-color-danger-600))}.luna-select-field[data-size=sm]{--luna-input-current-min-height: var(--luna-input-size-sm-min-height, 2rem);--luna-input-current-padding-x: var(--luna-input-size-sm-padding-x, .5rem);--luna-input-current-padding-y: var(--luna-input-size-sm-padding-y, .25rem);--luna-input-current-font-size: var(--luna-input-size-sm-font-size, .75rem)}.luna-select-field[data-size=md]{--luna-input-current-min-height: var(--luna-input-size-md-min-height, 2.5rem);--luna-input-current-padding-x: var(--luna-input-size-md-padding-x, 1rem);--luna-input-current-padding-y: var(--luna-input-size-md-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-md-font-size, .875rem)}.luna-select-field[data-size=lg]{--luna-input-current-min-height: var(--luna-input-size-lg-min-height, 3rem);--luna-input-current-padding-x: var(--luna-input-size-lg-padding-x, 1.25rem);--luna-input-current-padding-y: var(--luna-input-size-lg-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-lg-font-size, 1rem)}.luna-multiselect-field{display:inline-grid;gap:var(--luna-space-2, .5rem);min-width:0;min-inline-size:var(--luna-select-min-width, 12rem)}.luna-multiselect-field--full-width{display:grid;width:100%}.luna-multiselect-field__label{color:var(--luna-input-label-fg, var(--luna-foreground))}.luna-multiselect-field__label--inset{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;pointer-events:none;display:inline-flex;align-items:center;max-width:calc(100% - (var(--luna-input-current-padding-x, .75rem) * 2));padding-inline:var(--luna-space-1, .25rem);color:var(--luna-input-placeholder, var(--luna-muted));line-height:1;transform:translateY(-50%);transition:top var(--luna-motion-base),transform var(--luna-motion-base),color var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-multiselect-field__control{box-sizing:border-box;position:relative;display:flex;align-items:center;height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));min-height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));padding-inline:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));padding-block:var(--luna-input-current-padding-y, var(--luna-input-size-md-padding-y, .25rem));border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));color:var(--luna-input-fg, var(--luna-foreground));cursor:pointer;transition:border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-multiselect-field__control:after{content:"";position:absolute;top:50%;right:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));width:.55rem;height:.55rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-50%) rotate(45deg);pointer-events:none;opacity:.75}.luna-multiselect-field__control:hover{border-color:var(--luna-input-hover-border, var(--luna-input-border, var(--luna-border)))}.luna-multiselect-field__control:focus-within{border-color:var(--luna-input-focus-border, var(--luna-color-primary-500));box-shadow:0 0 0 3px var(--luna-input-focus-ring, rgba(99, 102, 241, .18))}.luna-multiselect-field--invalid .luna-multiselect-field__control{border-color:var(--luna-input-error-border, var(--luna-color-danger-500))}.luna-multiselect-field--invalid .luna-multiselect-field__control:focus-within{border-color:var(--luna-input-error-border, var(--luna-color-danger-500));box-shadow:0 0 0 3px var(--luna-input-error-focus-ring, rgba(239, 68, 68, .18))}.luna-multiselect-field--disabled .luna-multiselect-field__control{background:var(--luna-input-disabled-bg, var(--luna-surface));color:var(--luna-input-disabled-fg, var(--luna-muted));border-color:var(--luna-input-disabled-border, var(--luna-border));cursor:not-allowed}.luna-multiselect{display:flex;align-items:center;width:100%;min-width:0;min-height:calc(var(--luna-input-current-min-height, 2.375rem) - (var(--luna-input-current-padding-y, .25rem) * 2));border:0;outline:0;background:transparent;color:inherit;font:inherit;font-size:var(--luna-input-current-font-size, var(--luna-input-size-md-font-size, .875rem));line-height:1;padding:0;margin:0;padding-right:calc(var(--luna-input-current-padding-x, .75rem) + 1rem);text-align:left;cursor:pointer}.luna-multiselect-field--has-selection .luna-multiselect{padding-left:calc(var(--luna-input-current-padding-x, .75rem) + 1rem)}.luna-multiselect__value{display:flex;align-items:center;min-width:0;min-height:1em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity var(--luna-motion-base),transform var(--luna-motion-base)}.luna-multiselect-field--open .luna-multiselect__value{opacity:0}.luna-multiselect__value--placeholder{color:var(--luna-input-placeholder, var(--luna-muted))}.luna-multiselect__native{position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;opacity:0;pointer-events:none}.luna-multiselect__clear{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;display:inline-flex;align-items:center;justify-content:center;width:.9rem;height:.9rem;padding:0;border:0;background:transparent;color:var(--luna-input-placeholder, var(--luna-muted));transform:translateY(-50%);cursor:pointer;transition:background-color var(--luna-motion-base),color var(--luna-motion-base)}.luna-multiselect__clear:before,.luna-multiselect__clear:after{content:"";position:absolute;width:.75rem;height:1.5px;border-radius:999px;background:currentColor}.luna-multiselect__clear:before{transform:rotate(45deg)}.luna-multiselect__clear:after{transform:rotate(-45deg)}.luna-multiselect__clear:hover,.luna-multiselect__clear:focus-visible{outline:0;color:var(--luna-input-fg, var(--luna-foreground))}.luna-multiselect__listbox{position:absolute;top:calc(100% + var(--luna-space-1, .25rem));left:0;right:0;z-index:10;display:grid;gap:var(--luna-space-1, .25rem);padding:var(--luna-space-1, .25rem);border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));box-shadow:var(--luna-shadow-md)}.luna-multiselect__option{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--luna-space-2, .5rem);min-width:0;padding:.55rem .75rem;border-radius:var(--luna-radius-sm);color:var(--luna-input-fg, var(--luna-foreground));cursor:pointer}.luna-multiselect__option--highlighted{background:color-mix(in srgb,var(--luna-input-bg, var(--luna-surface)) 70%,var(--luna-foreground) 8%)}.luna-multiselect__option--selected{background:color-mix(in srgb,var(--luna-input-bg, var(--luna-surface)) 40%,var(--luna-color-primary-500) 12%)}.luna-multiselect__option--disabled{color:var(--luna-input-disabled-fg, var(--luna-muted));cursor:not-allowed}.luna-multiselect__option-indicator{position:relative;display:inline-flex;width:.8rem;height:.8rem;opacity:0;justify-self:end}.luna-multiselect__option--selected .luna-multiselect__option-indicator{opacity:.9}.luna-multiselect__option-indicator:after{content:"";position:absolute;left:.18rem;top:0;width:.25rem;height:.5rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg)}.luna-multiselect__option-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.luna-multiselect-field--inset-label .luna-multiselect-field__control{padding-top:var(--luna-input-current-padding-y, .25rem)}.luna-multiselect-field--inset-label-active .luna-multiselect-field__control{padding-top:calc(var(--luna-input-current-padding-y, .25rem) + var(--luna-space-2, .5rem))}.luna-multiselect-field--inset-label-active .luna-multiselect-field__label--inset{top:0;background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-bg, var(--luna-surface)) 50% 100%);transform:translateY(-50%)}.luna-multiselect-field--disabled.luna-multiselect-field--inset-label-active .luna-multiselect-field__label--inset{background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-disabled-bg, var(--luna-surface)) 50% 100%)}.luna-multiselect-field--inset-label-active .luna-multiselect__value{transform:translateY(calc(var(--luna-space-2, .5rem) * -.5))}.luna-multiselect:disabled{cursor:not-allowed}.luna-multiselect-field__message{min-width:0}.luna-multiselect-field__message--help{color:var(--luna-input-help-fg, var(--luna-muted))}.luna-multiselect-field__message--error{color:var(--luna-input-error-fg, var(--luna-color-danger-600))}.luna-multiselect-field[data-size=sm]{--luna-input-current-min-height: var(--luna-input-size-sm-min-height, 2rem);--luna-input-current-padding-x: var(--luna-input-size-sm-padding-x, .5rem);--luna-input-current-padding-y: var(--luna-input-size-sm-padding-y, .25rem);--luna-input-current-font-size: var(--luna-input-size-sm-font-size, .75rem)}.luna-multiselect-field[data-size=md]{--luna-input-current-min-height: var(--luna-input-size-md-min-height, 2.5rem);--luna-input-current-padding-x: var(--luna-input-size-md-padding-x, 1rem);--luna-input-current-padding-y: var(--luna-input-size-md-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-md-font-size, .875rem)}.luna-multiselect-field[data-size=lg]{--luna-input-current-min-height: var(--luna-input-size-lg-min-height, 3rem);--luna-input-current-padding-x: var(--luna-input-size-lg-padding-x, 1.25rem);--luna-input-current-padding-y: var(--luna-input-size-lg-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-lg-font-size, 1rem)}.luna-autocomplete-field{display:inline-grid;gap:var(--luna-space-2, .5rem);min-width:0;min-inline-size:var(--luna-select-min-width, 12rem)}.luna-autocomplete-field--full-width{display:grid;width:100%}.luna-autocomplete-field__label{color:var(--luna-input-label-fg, var(--luna-foreground))}.luna-autocomplete-field__label--inset{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;pointer-events:none;display:inline-flex;align-items:center;max-width:calc(100% - (var(--luna-input-current-padding-x, .75rem) * 2));padding-inline:var(--luna-space-1, .25rem);color:var(--luna-input-placeholder, var(--luna-muted));line-height:1;transform:translateY(-50%);transition:top var(--luna-motion-base),transform var(--luna-motion-base),color var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-autocomplete-field__control{box-sizing:border-box;position:relative;display:flex;align-items:center;height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));min-height:var(--luna-input-current-min-height, var(--luna-input-size-md-min-height, 2.375rem));padding-inline:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));padding-block:var(--luna-input-current-padding-y, var(--luna-input-size-md-padding-y, .25rem));border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));color:var(--luna-input-fg, var(--luna-foreground));cursor:text;transition:border-color var(--luna-motion-base),box-shadow var(--luna-motion-base),background-color var(--luna-motion-base)}.luna-autocomplete-field__control:after{content:"";position:absolute;top:50%;right:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));width:.55rem;height:.55rem;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-50%) rotate(45deg);pointer-events:none;opacity:.75}.luna-autocomplete-field__control:hover{border-color:var(--luna-input-hover-border, var(--luna-input-border, var(--luna-border)))}.luna-autocomplete-field__control:focus-within{border-color:var(--luna-input-focus-border, var(--luna-color-primary-500));box-shadow:0 0 0 3px var(--luna-input-focus-ring, rgba(99, 102, 241, .18))}.luna-autocomplete-field--invalid .luna-autocomplete-field__control{border-color:var(--luna-input-error-border, var(--luna-color-danger-500))}.luna-autocomplete-field--invalid .luna-autocomplete-field__control:focus-within{border-color:var(--luna-input-error-border, var(--luna-color-danger-500));box-shadow:0 0 0 3px var(--luna-input-error-focus-ring, rgba(239, 68, 68, .18))}.luna-autocomplete-field--disabled .luna-autocomplete-field__control{background:var(--luna-input-disabled-bg, var(--luna-surface));color:var(--luna-input-disabled-fg, var(--luna-muted));border-color:var(--luna-input-disabled-border, var(--luna-border));cursor:not-allowed}.luna-autocomplete{display:flex;align-items:center;width:100%;min-width:0;min-height:calc(var(--luna-input-current-min-height, 2.375rem) - (var(--luna-input-current-padding-y, .25rem) * 2));border:0;outline:0;background:transparent;color:inherit;font:inherit;font-size:var(--luna-input-current-font-size, var(--luna-input-size-md-font-size, .875rem));line-height:1;padding:0;margin:0;padding-right:calc(var(--luna-input-current-padding-x, .75rem) + 1rem);text-align:left}.luna-autocomplete-field--has-selection .luna-autocomplete,.luna-autocomplete-field--has-query .luna-autocomplete{padding-left:calc(var(--luna-input-current-padding-x, .75rem) + 1rem)}.luna-autocomplete::placeholder{color:var(--luna-input-placeholder, var(--luna-muted))}.luna-autocomplete__hidden{position:absolute;top:0;right:0;bottom:0;left:0;width:0;height:0;opacity:0;pointer-events:none}.luna-autocomplete__clear{position:absolute;top:50%;left:var(--luna-input-current-padding-x, var(--luna-input-size-md-padding-x, .75rem));z-index:1;display:inline-flex;align-items:center;justify-content:center;width:.9rem;height:.9rem;padding:0;border:0;background:transparent;color:var(--luna-input-placeholder, var(--luna-muted));transform:translateY(-50%);cursor:pointer;transition:background-color var(--luna-motion-base),color var(--luna-motion-base)}.luna-autocomplete__clear:before,.luna-autocomplete__clear:after{content:"";position:absolute;width:.75rem;height:1.5px;border-radius:999px;background:currentColor}.luna-autocomplete__clear:before{transform:rotate(45deg)}.luna-autocomplete__clear:after{transform:rotate(-45deg)}.luna-autocomplete__clear:hover,.luna-autocomplete__clear:focus-visible{outline:0;color:var(--luna-input-fg, var(--luna-foreground))}.luna-autocomplete__listbox{position:absolute;top:calc(100% + var(--luna-space-1, .25rem));left:0;right:0;z-index:10;display:grid;gap:var(--luna-space-1, .25rem);padding:var(--luna-space-1, .25rem);border:1px solid var(--luna-input-border, var(--luna-border));border-radius:var(--luna-input-radius, var(--luna-radius-md));background:var(--luna-input-bg, var(--luna-surface));box-shadow:var(--luna-shadow-md)}.luna-autocomplete__option,.luna-autocomplete__empty{min-width:0;padding:.55rem .75rem;border-radius:var(--luna-radius-sm)}.luna-autocomplete__option{color:var(--luna-input-fg, var(--luna-foreground));cursor:pointer}.luna-autocomplete__option--highlighted{background:color-mix(in srgb,var(--luna-input-bg, var(--luna-surface)) 70%,var(--luna-foreground) 8%)}.luna-autocomplete__option--selected{background:color-mix(in srgb,var(--luna-input-bg, var(--luna-surface)) 40%,var(--luna-color-primary-500) 12%)}.luna-autocomplete__option--disabled{color:var(--luna-input-disabled-fg, var(--luna-muted));cursor:not-allowed}.luna-autocomplete__empty{color:var(--luna-input-help-fg, var(--luna-muted))}.luna-autocomplete-field--inset-label .luna-autocomplete-field__control{padding-top:var(--luna-input-current-padding-y, .25rem)}.luna-autocomplete-field--inset-label-active .luna-autocomplete-field__control{padding-top:calc(var(--luna-input-current-padding-y, .25rem) + var(--luna-space-2, .5rem))}.luna-autocomplete-field--inset-label-active .luna-autocomplete-field__label--inset{top:0;background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-bg, var(--luna-surface)) 50% 100%);transform:translateY(-50%)}.luna-autocomplete-field--disabled.luna-autocomplete-field--inset-label-active .luna-autocomplete-field__label--inset{background:linear-gradient(to bottom,var(--luna-container-bg, var(--luna-background, transparent)) 0 50%,var(--luna-input-disabled-bg, var(--luna-surface)) 50% 100%)}.luna-autocomplete-field--inset-label-active .luna-autocomplete{transform:translateY(calc(var(--luna-space-2, .5rem) * -.5))}.luna-autocomplete-field__message{min-width:0}.luna-autocomplete-field__message--help{color:var(--luna-input-help-fg, var(--luna-muted))}.luna-autocomplete-field__message--error{color:var(--luna-input-error-fg, var(--luna-color-danger-600))}.luna-autocomplete-field[data-size=sm]{--luna-input-current-min-height: var(--luna-input-size-sm-min-height, 2rem);--luna-input-current-padding-x: var(--luna-input-size-sm-padding-x, .5rem);--luna-input-current-padding-y: var(--luna-input-size-sm-padding-y, .25rem);--luna-input-current-font-size: var(--luna-input-size-sm-font-size, .75rem)}.luna-autocomplete-field[data-size=md]{--luna-input-current-min-height: var(--luna-input-size-md-min-height, 2.5rem);--luna-input-current-padding-x: var(--luna-input-size-md-padding-x, 1rem);--luna-input-current-padding-y: var(--luna-input-size-md-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-md-font-size, .875rem)}.luna-autocomplete-field[data-size=lg]{--luna-input-current-min-height: var(--luna-input-size-lg-min-height, 3rem);--luna-input-current-padding-x: var(--luna-input-size-lg-padding-x, 1.25rem);--luna-input-current-padding-y: var(--luna-input-size-lg-padding-y, .5rem);--luna-input-current-font-size: var(--luna-input-size-lg-font-size, 1rem)}.luna-grid{display:grid;gap:var(--luna-layout-gap, 0);grid-template-columns:repeat(var(--luna-grid-columns, 12),minmax(0,1fr));align-items:var(--luna-layout-align, stretch);justify-items:var(--luna-layout-justify, stretch)}.luna-grid--inline{display:inline-grid}.luna-grid__item{box-sizing:border-box;grid-column:span var(--luna-layout-span-xs, 12);min-width:0}@media (min-width: 576px){.luna-grid__item{grid-column:span var(--luna-layout-span-sm, var(--luna-layout-span-xs, 12))}}@media (min-width: 768px){.luna-grid__item{grid-column:span var(--luna-layout-span-md, var(--luna-layout-span-sm, 12))}}@media (min-width: 992px){.luna-grid__item{grid-column:span var(--luna-layout-span-lg, var(--luna-layout-span-md, 12))}}@media (min-width: 1200px){.luna-grid__item{grid-column:span var(--luna-layout-span-xl, var(--luna-layout-span-lg, 12))}}
@@ -0,0 +1,2 @@
1
+ import type { Theme } from "./types";
2
+ export declare const lunarTheme: Theme;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export * from "./base";
3
+ export * from "./provider";
4
+ export * from "./resolve";
@@ -0,0 +1,2 @@
1
+ import type { DeepPartial } from "./types";
2
+ export declare function deepMerge<T>(base: T, override?: DeepPartial<T>): T;
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import type { DeepPartial, Theme, ThemeMode } from "./types";
3
+ export type ThemeProviderProps = {
4
+ children: React.ReactNode;
5
+ mode?: ThemeMode;
6
+ theme?: DeepPartial<Theme>;
7
+ colors?: Record<string, string>;
8
+ className?: string;
9
+ style?: React.CSSProperties;
10
+ };
11
+ type ThemeContextValue = {
12
+ theme: Theme;
13
+ mode: ThemeMode;
14
+ vars: Record<string, string>;
15
+ setMode: (mode: ThemeMode) => void;
16
+ };
17
+ export declare function ThemeProvider({ children, mode: controlledMode, theme, colors, className, style }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function useTheme(): ThemeContextValue;
19
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { Theme, ThemeMode, ThemeModeTokens } from "./types";
2
+ export declare function isRawColor(value: string): boolean;
3
+ export declare function resolveTokenValue(theme: Theme, token: string): string;
4
+ export declare function resolveModeTokens(theme: Theme, mode: ThemeMode): ThemeModeTokens;
5
+ export declare function resolveScaleValue(scale: Record<string, string>, value?: string): string | undefined;
@@ -0,0 +1,162 @@
1
+ export type ColorScale = {
2
+ 50: string;
3
+ 100: string;
4
+ 200: string;
5
+ 300: string;
6
+ 400: string;
7
+ 500: string;
8
+ 600: string;
9
+ 700: string;
10
+ 800: string;
11
+ 900: string;
12
+ };
13
+ export type ThemeColors = {
14
+ scale: Record<string, ColorScale>;
15
+ custom: Record<string, string>;
16
+ };
17
+ export type ThemeModeTokens = {
18
+ background: string;
19
+ foreground: string;
20
+ surface: string;
21
+ border: string;
22
+ muted: string;
23
+ };
24
+ export type ThemeModes = {
25
+ light: ThemeModeTokens;
26
+ dark: ThemeModeTokens;
27
+ };
28
+ export type ThemeTypography = {
29
+ fontFamily: string;
30
+ sizes: Record<string, string>;
31
+ weights: Record<string, number>;
32
+ lineHeights: Record<string, string>;
33
+ };
34
+ export type ThemeSpacing = Record<string, string>;
35
+ export type ThemeRadii = Record<string, string>;
36
+ export type ThemeShadows = Record<string, string>;
37
+ export type ThemeMotion = Record<string, string>;
38
+ export type ThemeButtonSizeProfile = {
39
+ paddingX?: string;
40
+ paddingY?: string;
41
+ fontSize?: string;
42
+ minHeight?: string;
43
+ gap?: string;
44
+ iconSize?: string;
45
+ };
46
+ export type ThemeButtonModeTokens = {
47
+ bg?: string;
48
+ fg?: string;
49
+ hoverBg?: string;
50
+ outlineFg?: string;
51
+ outlineBorder?: string;
52
+ outlineHoverBg?: string;
53
+ flatFg?: string;
54
+ infoFg?: string;
55
+ infoHoverFg?: string;
56
+ };
57
+ export type ThemeTextVariantProfile = {
58
+ fontSize?: string;
59
+ fontWeight?: string | number;
60
+ lineHeight?: string;
61
+ letterSpacing?: string;
62
+ textTransform?: string;
63
+ };
64
+ export type ThemeTextModeTokens = {
65
+ fg?: string;
66
+ mutedFg?: string;
67
+ surfaceBg?: string;
68
+ surfaceBorder?: string;
69
+ };
70
+ export type ThemeCardModeTokens = {
71
+ bg?: string;
72
+ fg?: string;
73
+ border?: string;
74
+ shadow?: string;
75
+ elevatedShadow?: string;
76
+ hoverBorder?: string;
77
+ hoverShadow?: string;
78
+ };
79
+ export type ThemeDividerModeTokens = {
80
+ default?: string;
81
+ muted?: string;
82
+ strong?: string;
83
+ labelBg?: string;
84
+ labelFg?: string;
85
+ };
86
+ export type ThemeInputSizeProfile = {
87
+ minHeight?: string;
88
+ paddingX?: string;
89
+ paddingY?: string;
90
+ fontSize?: string;
91
+ gap?: string;
92
+ };
93
+ export type ThemeInputModeTokens = {
94
+ bg?: string;
95
+ fg?: string;
96
+ border?: string;
97
+ hoverBorder?: string;
98
+ focusBorder?: string;
99
+ focusRing?: string;
100
+ placeholder?: string;
101
+ disabledBg?: string;
102
+ disabledFg?: string;
103
+ disabledBorder?: string;
104
+ errorBorder?: string;
105
+ errorFocusRing?: string;
106
+ helpFg?: string;
107
+ errorFg?: string;
108
+ labelFg?: string;
109
+ };
110
+ export type ThemeComponents = {
111
+ button?: {
112
+ defaultSize?: string;
113
+ defaultIconDirection?: "left" | "right";
114
+ radius?: string;
115
+ fontWeight?: number;
116
+ sizes?: Record<string, ThemeButtonSizeProfile>;
117
+ modes?: Partial<Record<ThemeMode, ThemeButtonModeTokens>>;
118
+ colors?: Record<string, {
119
+ bg?: string;
120
+ fg?: string;
121
+ border?: string;
122
+ }>;
123
+ };
124
+ text?: {
125
+ defaultVariant?: string;
126
+ variants?: Record<string, ThemeTextVariantProfile>;
127
+ modes?: Partial<Record<ThemeMode, ThemeTextModeTokens>>;
128
+ };
129
+ card?: {
130
+ defaultPadding?: string;
131
+ defaultGap?: string;
132
+ radius?: string;
133
+ modes?: Partial<Record<ThemeMode, ThemeCardModeTokens>>;
134
+ };
135
+ divider?: {
136
+ defaultSpacing?: string;
137
+ defaultInset?: string;
138
+ modes?: Partial<Record<ThemeMode, ThemeDividerModeTokens>>;
139
+ };
140
+ input?: {
141
+ defaultSize?: string;
142
+ radius?: string;
143
+ sizes?: Record<string, ThemeInputSizeProfile>;
144
+ modes?: Partial<Record<ThemeMode, ThemeInputModeTokens>>;
145
+ };
146
+ };
147
+ export type Theme = {
148
+ colors: ThemeColors;
149
+ modes: ThemeModes;
150
+ typography: ThemeTypography;
151
+ spacing: ThemeSpacing;
152
+ radii: ThemeRadii;
153
+ shadows: ThemeShadows;
154
+ motion: ThemeMotion;
155
+ components: ThemeComponents;
156
+ };
157
+ export type ThemeMode = "light" | "dark";
158
+ type Primitive = string | number | boolean | null | undefined;
159
+ export type DeepPartial<T> = T extends Primitive ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : {
160
+ [K in keyof T]?: DeepPartial<T[K]>;
161
+ };
162
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { Theme } from "./types";
2
+ export declare function buildThemeVars(theme: Theme, mode: "light" | "dark"): Record<string, string>;
package/package.json CHANGED
@@ -1,67 +1,67 @@
1
- {
2
- "name": "@liketysplit/react-luna",
3
- "version": "0.1.2",
4
- "private": false,
5
- "type": "module",
6
- "description": "Self-sufficient React component library with a lunar theme.",
7
- "main": "./dist/index.js",
8
- "module": "./dist/index.js",
9
- "types": "./dist/index.d.ts",
10
- "files": [
11
- "dist",
12
- "README.md",
13
- "LICENSE"
14
- ],
15
- "exports": {
16
- ".": {
17
- "types": "./dist/index.d.ts",
18
- "import": "./dist/index.js"
19
- },
20
- "./styles.css": "./dist/style.css"
21
- },
22
- "repository": {
23
- "type": "git",
24
- "url": "git+https://github.com/liketysplit/react-luna.git"
25
- },
26
- "bugs": {
27
- "url": "https://github.com/liketysplit/react-luna/issues"
28
- },
29
- "homepage": "https://github.com/liketysplit/react-luna#readme",
30
- "publishConfig": {
31
- "access": "public"
32
- },
33
- "scripts": {
34
- "dev": "vite",
35
- "build": "tsc -p tsconfig.build.json && vite build",
36
- "preview": "vite preview",
37
- "test": "vitest run",
38
- "test:watch": "vitest",
39
- "changeset": "changeset",
40
- "version-packages": "changeset version",
41
- "release": "changeset publish",
42
- "storybook": "storybook dev -p 6006",
43
- "storybook:build": "storybook build"
44
- },
45
- "peerDependencies": {
46
- "react": ">=18.0.0",
47
- "react-dom": ">=18.0.0"
48
- },
49
- "devDependencies": {
50
- "@storybook/addon-essentials": "^8.5.0",
51
- "@storybook/react": "^8.5.0",
52
- "@storybook/react-vite": "^8.5.0",
53
- "@changesets/cli": "^2.29.6",
54
- "@testing-library/jest-dom": "^6.9.1",
55
- "@testing-library/react": "^16.3.2",
56
- "@testing-library/user-event": "^14.6.1",
57
- "@types/react": "^18.2.0",
58
- "@types/react-dom": "^18.2.0",
59
- "@vitejs/plugin-react": "^4.3.0",
60
- "jsdom": "^24.1.3",
61
- "react": "^18.2.0",
62
- "react-dom": "^18.2.0",
63
- "typescript": "^5.5.0",
64
- "vite": "^5.4.0",
65
- "vitest": "^2.0.0"
66
- }
67
- }
1
+ {
2
+ "name": "@liketysplit/react-luna",
3
+ "version": "0.1.4",
4
+ "private": false,
5
+ "type": "module",
6
+ "description": "Self-sufficient React component library with a lunar theme.",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js"
19
+ },
20
+ "./styles.css": "./dist/style.css"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/liketysplit/react-luna.git"
25
+ },
26
+ "bugs": {
27
+ "url": "https://github.com/liketysplit/react-luna/issues"
28
+ },
29
+ "homepage": "https://github.com/liketysplit/react-luna#readme",
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "scripts": {
34
+ "dev": "vite",
35
+ "build": "tsc -p tsconfig.build.json && vite build",
36
+ "preview": "vite preview",
37
+ "test": "vitest run",
38
+ "test:watch": "vitest",
39
+ "changeset": "changeset",
40
+ "version-packages": "changeset version",
41
+ "release": "changeset publish",
42
+ "storybook": "storybook dev -p 6006",
43
+ "storybook:build": "storybook build"
44
+ },
45
+ "peerDependencies": {
46
+ "react": ">=18.0.0",
47
+ "react-dom": ">=18.0.0"
48
+ },
49
+ "devDependencies": {
50
+ "@storybook/addon-essentials": "^8.5.0",
51
+ "@storybook/react": "^8.5.0",
52
+ "@storybook/react-vite": "^8.5.0",
53
+ "@changesets/cli": "^2.29.6",
54
+ "@testing-library/jest-dom": "^6.9.1",
55
+ "@testing-library/react": "^16.3.2",
56
+ "@testing-library/user-event": "^14.6.1",
57
+ "@types/react": "^18.2.0",
58
+ "@types/react-dom": "^18.2.0",
59
+ "@vitejs/plugin-react": "^4.3.0",
60
+ "jsdom": "^24.1.3",
61
+ "react": "^18.2.0",
62
+ "react-dom": "^18.2.0",
63
+ "typescript": "^5.5.0",
64
+ "vite": "^5.4.0",
65
+ "vitest": "^2.0.0"
66
+ }
67
+ }