@dev-dga/css 0.10.0 → 0.10.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @dev-dga/css
2
2
 
3
+ ## 0.10.1
4
+
5
+ ### Patch Changes
6
+
7
+ - **Progress — the determinate indicator transitions on `inline-size`** (was `transform`), backing the React RTL-fill fix: the indicator fills from the track's inline-start, so it mirrors for free in RTL. Released in lockstep with `@dev-dga/react` and `@dev-dga/tokens`.
8
+
3
9
  ## 0.10.0
4
10
 
5
11
  ### Patch Changes
@@ -1,2 +1,2 @@
1
- @layer ddga-components{.ddga-progress{background-color:var(--ddga-gray-200);border-radius:var(--ddga-radius-full);inline-size:100%;position:relative;overflow:hidden}.ddga-progress--sm{block-size:4px}.ddga-progress--md{block-size:8px}.ddga-progress--lg{block-size:12px}.ddga-progress--primary{--ddga-progress-color:var(--ddga-color-primary)}.ddga-progress--success{--ddga-progress-color:var(--ddga-color-success)}.ddga-progress--warning{--ddga-progress-color:var(--ddga-color-warning)}.ddga-progress--destructive{--ddga-progress-color:var(--ddga-color-destructive)}.ddga-progress__indicator{background-color:var(--ddga-progress-color,var(--ddga-color-primary));border-radius:inherit;block-size:100%;inline-size:100%;transition:transform .2s ease-out}.ddga-progress[data-state=indeterminate] .ddga-progress__indicator{inline-size:40%;transition:none;animation:1.4s cubic-bezier(.65,.05,.36,1) infinite ddga-progress-slide;transform:translate(-100%)}@keyframes ddga-progress-slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}[dir=rtl] .ddga-progress[data-state=indeterminate] .ddga-progress__indicator{animation-name:ddga-progress-slide-rtl}@keyframes ddga-progress-slide-rtl{0%{transform:translate(100%)}to{transform:translate(-350%)}}.ddga-circular-progress{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.ddga-circular-progress--primary{--ddga-progress-color:var(--ddga-color-primary)}.ddga-circular-progress--success{--ddga-progress-color:var(--ddga-color-success)}.ddga-circular-progress--warning{--ddga-progress-color:var(--ddga-color-warning)}.ddga-circular-progress--destructive{--ddga-progress-color:var(--ddga-color-destructive)}.ddga-circular-progress__svg{display:block}.ddga-circular-progress__track{stroke:var(--ddga-gray-200)}.ddga-circular-progress__indicator{stroke:var(--ddga-progress-color,var(--ddga-color-primary));transition:stroke-dashoffset .2s ease-out}.ddga-circular-progress__segment{stroke:var(--ddga-gray-200);transition:stroke .2s}.ddga-circular-progress__segment--filled{stroke:var(--ddga-progress-color,var(--ddga-color-primary))}.ddga-circular-progress[data-state=indeterminate]:not([data-segmented]) .ddga-circular-progress__svg{transition:none;animation:1.4s linear infinite ddga-circular-progress-spin}@keyframes ddga-circular-progress-spin{to{transform:rotate(360deg)}}.ddga-circular-progress__label{font-size:var(--ddga-font-size-xs);font-weight:var(--ddga-font-weight-medium);color:var(--ddga-text-secondary);justify-content:center;align-items:center;line-height:1;display:flex;position:absolute;inset:0}.ddga-circular-progress--sm .ddga-circular-progress__label{font-size:.625rem}.ddga-circular-progress--lg .ddga-circular-progress__label{font-size:var(--ddga-font-size-sm)}[data-theme=dark] .ddga-progress{background-color:var(--ddga-color-border)}[data-theme=dark] .ddga-circular-progress__track,[data-theme=dark] .ddga-circular-progress__segment{stroke:var(--ddga-color-border)}@media (prefers-reduced-motion:reduce){.ddga-progress[data-state=indeterminate] .ddga-progress__indicator,.ddga-circular-progress[data-state=indeterminate] .ddga-circular-progress__svg{animation:none}.ddga-progress__indicator,.ddga-circular-progress__indicator,.ddga-circular-progress__segment{transition:none}}@media (forced-colors:active){.ddga-progress{border:1px solid canvastext}.ddga-progress__indicator{background-color:highlight}.ddga-circular-progress__track,.ddga-circular-progress__segment{stroke:graytext}.ddga-circular-progress__indicator,.ddga-circular-progress__segment--filled{stroke:highlight}}}
1
+ @layer ddga-components{.ddga-progress{background-color:var(--ddga-gray-200);border-radius:var(--ddga-radius-full);inline-size:100%;position:relative;overflow:hidden}.ddga-progress--sm{block-size:4px}.ddga-progress--md{block-size:8px}.ddga-progress--lg{block-size:12px}.ddga-progress--primary{--ddga-progress-color:var(--ddga-color-primary)}.ddga-progress--success{--ddga-progress-color:var(--ddga-color-success)}.ddga-progress--warning{--ddga-progress-color:var(--ddga-color-warning)}.ddga-progress--destructive{--ddga-progress-color:var(--ddga-color-destructive)}.ddga-progress__indicator{background-color:var(--ddga-progress-color,var(--ddga-color-primary));border-radius:inherit;block-size:100%;inline-size:100%;transition:inline-size .2s ease-out}.ddga-progress[data-state=indeterminate] .ddga-progress__indicator{inline-size:40%;transition:none;animation:1.4s cubic-bezier(.65,.05,.36,1) infinite ddga-progress-slide;transform:translate(-100%)}@keyframes ddga-progress-slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}[dir=rtl] .ddga-progress[data-state=indeterminate] .ddga-progress__indicator{animation-name:ddga-progress-slide-rtl}@keyframes ddga-progress-slide-rtl{0%{transform:translate(100%)}to{transform:translate(-350%)}}.ddga-circular-progress{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.ddga-circular-progress--primary{--ddga-progress-color:var(--ddga-color-primary)}.ddga-circular-progress--success{--ddga-progress-color:var(--ddga-color-success)}.ddga-circular-progress--warning{--ddga-progress-color:var(--ddga-color-warning)}.ddga-circular-progress--destructive{--ddga-progress-color:var(--ddga-color-destructive)}.ddga-circular-progress__svg{display:block}.ddga-circular-progress__track{stroke:var(--ddga-gray-200)}.ddga-circular-progress__indicator{stroke:var(--ddga-progress-color,var(--ddga-color-primary));transition:stroke-dashoffset .2s ease-out}.ddga-circular-progress__segment{stroke:var(--ddga-gray-200);transition:stroke .2s}.ddga-circular-progress__segment--filled{stroke:var(--ddga-progress-color,var(--ddga-color-primary))}.ddga-circular-progress[data-state=indeterminate]:not([data-segmented]) .ddga-circular-progress__svg{transition:none;animation:1.4s linear infinite ddga-circular-progress-spin}@keyframes ddga-circular-progress-spin{to{transform:rotate(360deg)}}.ddga-circular-progress__label{font-size:var(--ddga-font-size-xs);font-weight:var(--ddga-font-weight-medium);color:var(--ddga-text-secondary);justify-content:center;align-items:center;line-height:1;display:flex;position:absolute;inset:0}.ddga-circular-progress--sm .ddga-circular-progress__label{font-size:.625rem}.ddga-circular-progress--lg .ddga-circular-progress__label{font-size:var(--ddga-font-size-sm)}[data-theme=dark] .ddga-progress{background-color:var(--ddga-color-border)}[data-theme=dark] .ddga-circular-progress__track,[data-theme=dark] .ddga-circular-progress__segment{stroke:var(--ddga-color-border)}@media (prefers-reduced-motion:reduce){.ddga-progress[data-state=indeterminate] .ddga-progress__indicator,.ddga-circular-progress[data-state=indeterminate] .ddga-circular-progress__svg{animation:none}.ddga-progress__indicator,.ddga-circular-progress__indicator,.ddga-circular-progress__segment{transition:none}}@media (forced-colors:active){.ddga-progress{border:1px solid canvastext}.ddga-progress__indicator{background-color:highlight}.ddga-circular-progress__track,.ddga-circular-progress__segment{stroke:graytext}.ddga-circular-progress__indicator,.ddga-circular-progress__segment--filled{stroke:highlight}}}
2
2
  /*# sourceMappingURL=progress.css.map */
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAAA,uBAGE,8IAQA,kCAGA,kCAGA,mCAIA,wEAGA,wEAGA,wEAGA,gFAIA,yLAUA,sMAOA,2FAUA,oHAIA,+FAWA,sHAQA,iFAGA,iFAGA,iFAGA,yFAIA,2CAIA,2DAIA,yIAMA,mFAIA,qGAMA,gLAMA,oEAMA,6OAYA,6EAGA,8FAUA,2EAGA,oIAMA,uCACE,iKAIA,+GAWF,8BACE,2CAGA,qDAGA,gFAIA","sources":["src/components/progress.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Linear (Radix Progress) ─── */\n\n .ddga-progress {\n position: relative;\n overflow: hidden;\n inline-size: 100%;\n background-color: var(--ddga-gray-200);\n border-radius: var(--ddga-radius-full);\n }\n\n .ddga-progress--sm {\n block-size: 4px;\n }\n .ddga-progress--md {\n block-size: 8px;\n }\n .ddga-progress--lg {\n block-size: 12px;\n }\n\n .ddga-progress--primary {\n --ddga-progress-color: var(--ddga-color-primary);\n }\n .ddga-progress--success {\n --ddga-progress-color: var(--ddga-color-success);\n }\n .ddga-progress--warning {\n --ddga-progress-color: var(--ddga-color-warning);\n }\n .ddga-progress--destructive {\n --ddga-progress-color: var(--ddga-color-destructive);\n }\n\n .ddga-progress__indicator {\n block-size: 100%;\n inline-size: 100%;\n background-color: var(--ddga-progress-color, var(--ddga-color-primary));\n transition: transform 200ms ease-out;\n border-radius: inherit;\n }\n\n /* Indeterminate: slide a 40%-wide pill across the track. The track has\n overflow:hidden so the off-track portions get clipped. */\n .ddga-progress[data-state='indeterminate'] .ddga-progress__indicator {\n inline-size: 40%;\n transform: translateX(-100%);\n animation: ddga-progress-slide 1.4s cubic-bezier(0.65, 0.05, 0.36, 1) infinite;\n transition: none;\n }\n\n @keyframes ddga-progress-slide {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(350%);\n }\n }\n\n /* RTL: reverse the slide so motion still tracks reading direction. */\n [dir='rtl'] .ddga-progress[data-state='indeterminate'] .ddga-progress__indicator {\n animation-name: ddga-progress-slide-rtl;\n }\n\n @keyframes ddga-progress-slide-rtl {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(-350%);\n }\n }\n\n /* ─── Circular (custom SVG) ─── */\n\n .ddga-circular-progress {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .ddga-circular-progress--primary {\n --ddga-progress-color: var(--ddga-color-primary);\n }\n .ddga-circular-progress--success {\n --ddga-progress-color: var(--ddga-color-success);\n }\n .ddga-circular-progress--warning {\n --ddga-progress-color: var(--ddga-color-warning);\n }\n .ddga-circular-progress--destructive {\n --ddga-progress-color: var(--ddga-color-destructive);\n }\n\n .ddga-circular-progress__svg {\n display: block;\n }\n\n .ddga-circular-progress__track {\n stroke: var(--ddga-gray-200);\n }\n\n .ddga-circular-progress__indicator {\n stroke: var(--ddga-progress-color, var(--ddga-color-primary));\n transition: stroke-dashoffset 200ms ease-out;\n }\n\n /* Segmented (radial stepper): each arc is track-colored until filled. */\n .ddga-circular-progress__segment {\n stroke: var(--ddga-gray-200);\n transition: stroke 200ms ease;\n }\n .ddga-circular-progress__segment--filled {\n stroke: var(--ddga-progress-color, var(--ddga-color-primary));\n }\n\n /* Only the continuous (non-segmented) ring spins when indeterminate — a\n segmented ring is determinate, so don't rotate its empty arcs. */\n .ddga-circular-progress[data-state='indeterminate']:not([data-segmented])\n .ddga-circular-progress__svg {\n animation: ddga-circular-progress-spin 1.4s linear infinite;\n transition: none;\n }\n\n @keyframes ddga-circular-progress-spin {\n 100% {\n transform: rotate(360deg);\n }\n }\n\n .ddga-circular-progress__label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--ddga-font-size-xs);\n font-weight: var(--ddga-font-weight-medium);\n color: var(--ddga-text-secondary);\n line-height: 1;\n }\n\n .ddga-circular-progress--sm .ddga-circular-progress__label {\n font-size: 0.625rem;\n }\n .ddga-circular-progress--lg .ddga-circular-progress__label {\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Dark mode ─── */\n /* The unfilled track is built from the raw `--ddga-gray-200` tint, which the\n dark theme does NOT remap (only semantic `--ddga-color-*` tokens adapt).\n Left alone it renders as a bright light band on dark surfaces, so map the\n track to the semantic border gray. The indicator stays `--ddga-color-*`\n (already dark-aware). */\n [data-theme='dark'] .ddga-progress {\n background-color: var(--ddga-color-border);\n }\n [data-theme='dark'] .ddga-circular-progress__track,\n [data-theme='dark'] .ddga-circular-progress__segment {\n stroke: var(--ddga-color-border);\n }\n\n /* Reduced motion: drop indeterminate animations, keep static state visible. */\n @media (prefers-reduced-motion: reduce) {\n .ddga-progress[data-state='indeterminate'] .ddga-progress__indicator,\n .ddga-circular-progress[data-state='indeterminate'] .ddga-circular-progress__svg {\n animation: none;\n }\n .ddga-progress__indicator,\n .ddga-circular-progress__indicator,\n .ddga-circular-progress__segment {\n transition: none;\n }\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n /* background/stroke colors are overridden by the system, which would make the\n fill indistinguishable from the track. Pin the fill to Highlight and the\n track to a dim system color so progress stays readable. */\n @media (forced-colors: active) {\n .ddga-progress {\n border: 1px solid CanvasText;\n }\n .ddga-progress__indicator {\n background-color: Highlight;\n }\n .ddga-circular-progress__track,\n .ddga-circular-progress__segment {\n stroke: GrayText;\n }\n .ddga-circular-progress__indicator,\n .ddga-circular-progress__segment--filled {\n stroke: Highlight;\n }\n }\n}\n"],"names":[]}
1
+ {"version":3,"mappings":"AAAA,uBAGE,8IAQA,kCAGA,kCAGA,mCAIA,wEAGA,wEAGA,wEAGA,gFAIA,2LAcA,sMAOA,2FAUA,oHAIA,+FAWA,sHAQA,iFAGA,iFAGA,iFAGA,yFAIA,2CAIA,2DAIA,yIAMA,mFAIA,qGAMA,gLAMA,oEAMA,6OAYA,6EAGA,8FAUA,2EAGA,oIAMA,uCACE,iKAIA,+GAWF,8BACE,2CAGA,qDAGA,gFAIA","sources":["src/components/progress.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Linear (Radix Progress) ─── */\n\n .ddga-progress {\n position: relative;\n overflow: hidden;\n inline-size: 100%;\n background-color: var(--ddga-gray-200);\n border-radius: var(--ddga-radius-full);\n }\n\n .ddga-progress--sm {\n block-size: 4px;\n }\n .ddga-progress--md {\n block-size: 8px;\n }\n .ddga-progress--lg {\n block-size: 12px;\n }\n\n .ddga-progress--primary {\n --ddga-progress-color: var(--ddga-color-primary);\n }\n .ddga-progress--success {\n --ddga-progress-color: var(--ddga-color-success);\n }\n .ddga-progress--warning {\n --ddga-progress-color: var(--ddga-color-warning);\n }\n .ddga-progress--destructive {\n --ddga-progress-color: var(--ddga-color-destructive);\n }\n\n .ddga-progress__indicator {\n block-size: 100%;\n /* Determinate fill: the component sets `inline-size: <pct>%` inline. Anchored\n to the track's inline-start, it mirrors for free in RTL (logical, no JS\n direction read). `100%` here is the no-JS/SSR fallback before the inline\n value lands; the indeterminate rule below overrides it to 40%. */\n inline-size: 100%;\n background-color: var(--ddga-progress-color, var(--ddga-color-primary));\n transition: inline-size 200ms ease-out;\n border-radius: inherit;\n }\n\n /* Indeterminate: slide a 40%-wide pill across the track. The track has\n overflow:hidden so the off-track portions get clipped. */\n .ddga-progress[data-state='indeterminate'] .ddga-progress__indicator {\n inline-size: 40%;\n transform: translateX(-100%);\n animation: ddga-progress-slide 1.4s cubic-bezier(0.65, 0.05, 0.36, 1) infinite;\n transition: none;\n }\n\n @keyframes ddga-progress-slide {\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(350%);\n }\n }\n\n /* RTL: reverse the slide so motion still tracks reading direction. */\n [dir='rtl'] .ddga-progress[data-state='indeterminate'] .ddga-progress__indicator {\n animation-name: ddga-progress-slide-rtl;\n }\n\n @keyframes ddga-progress-slide-rtl {\n 0% {\n transform: translateX(100%);\n }\n 100% {\n transform: translateX(-350%);\n }\n }\n\n /* ─── Circular (custom SVG) ─── */\n\n .ddga-circular-progress {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .ddga-circular-progress--primary {\n --ddga-progress-color: var(--ddga-color-primary);\n }\n .ddga-circular-progress--success {\n --ddga-progress-color: var(--ddga-color-success);\n }\n .ddga-circular-progress--warning {\n --ddga-progress-color: var(--ddga-color-warning);\n }\n .ddga-circular-progress--destructive {\n --ddga-progress-color: var(--ddga-color-destructive);\n }\n\n .ddga-circular-progress__svg {\n display: block;\n }\n\n .ddga-circular-progress__track {\n stroke: var(--ddga-gray-200);\n }\n\n .ddga-circular-progress__indicator {\n stroke: var(--ddga-progress-color, var(--ddga-color-primary));\n transition: stroke-dashoffset 200ms ease-out;\n }\n\n /* Segmented (radial stepper): each arc is track-colored until filled. */\n .ddga-circular-progress__segment {\n stroke: var(--ddga-gray-200);\n transition: stroke 200ms ease;\n }\n .ddga-circular-progress__segment--filled {\n stroke: var(--ddga-progress-color, var(--ddga-color-primary));\n }\n\n /* Only the continuous (non-segmented) ring spins when indeterminate — a\n segmented ring is determinate, so don't rotate its empty arcs. */\n .ddga-circular-progress[data-state='indeterminate']:not([data-segmented])\n .ddga-circular-progress__svg {\n animation: ddga-circular-progress-spin 1.4s linear infinite;\n transition: none;\n }\n\n @keyframes ddga-circular-progress-spin {\n 100% {\n transform: rotate(360deg);\n }\n }\n\n .ddga-circular-progress__label {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--ddga-font-size-xs);\n font-weight: var(--ddga-font-weight-medium);\n color: var(--ddga-text-secondary);\n line-height: 1;\n }\n\n .ddga-circular-progress--sm .ddga-circular-progress__label {\n font-size: 0.625rem;\n }\n .ddga-circular-progress--lg .ddga-circular-progress__label {\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Dark mode ─── */\n /* The unfilled track is built from the raw `--ddga-gray-200` tint, which the\n dark theme does NOT remap (only semantic `--ddga-color-*` tokens adapt).\n Left alone it renders as a bright light band on dark surfaces, so map the\n track to the semantic border gray. The indicator stays `--ddga-color-*`\n (already dark-aware). */\n [data-theme='dark'] .ddga-progress {\n background-color: var(--ddga-color-border);\n }\n [data-theme='dark'] .ddga-circular-progress__track,\n [data-theme='dark'] .ddga-circular-progress__segment {\n stroke: var(--ddga-color-border);\n }\n\n /* Reduced motion: drop indeterminate animations, keep static state visible. */\n @media (prefers-reduced-motion: reduce) {\n .ddga-progress[data-state='indeterminate'] .ddga-progress__indicator,\n .ddga-circular-progress[data-state='indeterminate'] .ddga-circular-progress__svg {\n animation: none;\n }\n .ddga-progress__indicator,\n .ddga-circular-progress__indicator,\n .ddga-circular-progress__segment {\n transition: none;\n }\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n /* background/stroke colors are overridden by the system, which would make the\n fill indistinguishable from the track. Pin the fill to Highlight and the\n track to a dim system color so progress stays readable. */\n @media (forced-colors: active) {\n .ddga-progress {\n border: 1px solid CanvasText;\n }\n .ddga-progress__indicator {\n background-color: Highlight;\n }\n .ddga-circular-progress__track,\n .ddga-circular-progress__segment {\n stroke: GrayText;\n }\n .ddga-circular-progress__indicator,\n .ddga-circular-progress__segment--filled {\n stroke: Highlight;\n }\n }\n}\n"],"names":[]}