@dev-dga/css 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/components/accordion.css +2 -0
  3. package/dist/components/accordion.css.map +1 -0
  4. package/dist/components/badge.css +1 -1
  5. package/dist/components/badge.css.map +1 -1
  6. package/dist/components/breadcrumb.css +2 -0
  7. package/dist/components/breadcrumb.css.map +1 -0
  8. package/dist/components/button.css +1 -1
  9. package/dist/components/button.css.map +1 -1
  10. package/dist/components/combobox.css +2 -0
  11. package/dist/components/combobox.css.map +1 -0
  12. package/dist/components/date-picker.css +2 -0
  13. package/dist/components/date-picker.css.map +1 -0
  14. package/dist/components/description-list.css +2 -0
  15. package/dist/components/description-list.css.map +1 -0
  16. package/dist/components/drawer.css +2 -0
  17. package/dist/components/drawer.css.map +1 -0
  18. package/dist/components/dropdown-menu.css +2 -0
  19. package/dist/components/dropdown-menu.css.map +1 -0
  20. package/dist/components/file-upload.css +2 -0
  21. package/dist/components/file-upload.css.map +1 -0
  22. package/dist/components/number-input.css +2 -0
  23. package/dist/components/number-input.css.map +1 -0
  24. package/dist/components/pagination.css +2 -0
  25. package/dist/components/pagination.css.map +1 -0
  26. package/dist/components/progress.css +2 -0
  27. package/dist/components/progress.css.map +1 -0
  28. package/dist/components/rating.css +2 -0
  29. package/dist/components/rating.css.map +1 -0
  30. package/dist/components/skeleton.css +2 -0
  31. package/dist/components/skeleton.css.map +1 -0
  32. package/dist/components/slider.css +2 -0
  33. package/dist/components/slider.css.map +1 -0
  34. package/dist/components/spinner.css +2 -0
  35. package/dist/components/spinner.css.map +1 -0
  36. package/dist/components/steps.css +2 -0
  37. package/dist/components/steps.css.map +1 -0
  38. package/dist/components/tabs.css +2 -0
  39. package/dist/components/tabs.css.map +1 -0
  40. package/dist/components/toggle.css +2 -0
  41. package/dist/components/toggle.css.map +1 -0
  42. package/dist/index.css +1 -1
  43. package/dist/index.css.map +1 -1
  44. package/package.json +4 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # @dev-dga/css
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - **Per-component CSS for the 7 new components in `@dev-dga/react@0.6.0`:** `components/date-picker.css`, `components/file-upload.css`, `components/slider.css`, `components/number-input.css`, `components/rating.css`, `components/toggle.css`, `components/description-list.css`. Each lives in `@layer ddga-components` and uses logical properties (`inline-size` / `inset-inline-*`) so it's RTL-correct without per-side overrides; direction-sensitive bits (Slider/Rating fill, NumberInput digit direction, Toggle segmented radii, DescriptionList layout) flip via logical props, and animations respect `prefers-reduced-motion` + `forced-colors`.
8
+ - **New overridable component CSS variables:** `--ddga-rating-color` (star fill, defaults to gold-500) and `--ddga-dl-term-width` (DescriptionList term column).
9
+ - No token-value changes; all new component CSS resolves existing `var(--ddga-*)` tokens.
10
+
11
+ ## 0.5.0
12
+
13
+ ### Minor Changes
14
+
15
+ - **Per-component CSS for the 11 new components landing in `@dev-dga/react@0.5.0`.**
16
+ - **Navigation:** `components/tabs.css`, `components/breadcrumb.css`, `components/pagination.css`, `components/accordion.css`, `components/steps.css`.
17
+ - **Next-wave:** `components/spinner.css`, `components/skeleton.css`, `components/progress.css`, `components/dropdown-menu.css`, `components/drawer.css`, `components/combobox.css`.
18
+ Each file lives in `@layer ddga-components`; layout uses logical properties (`inline-size`/`block-size`/`inset-inline-*`/`inset-block-*`) so every component is RTL-correct without per-side overrides. Indeterminate / slide animations branch on `[dir]` where direction matters (Drawer slide-in, Progress indeterminate sweep, Skeleton wave shimmer); `prefers-reduced-motion` drops all animations.
19
+
20
+ - **Button destructive sub-variants + `inverted` modifier.** New `ddga-button--destructive-outline`, `ddga-button--destructive-subtle`, `ddga-button--destructive-ghost` selectors plus an `ddga-button--inverted` modifier for non-filled variants on colored / dark surfaces. CSS-only — Button's existing variant cascade unchanged.
21
+
22
+ - **Spinner CSS extracted out of `button.css` into `components/spinner.css`.** `.ddga-spinner`, `@keyframes ddga-spin`, and the spinner clause of `prefers-reduced-motion` moved into the new file so the public Spinner component can be styled on its own. The class name is unchanged; existing assertions that query `.ddga-spinner` still match.
23
+
24
+ - **Badge close-button styles.** New `.ddga-badge__close` selector for the dismissible chip pattern — sized to fit inside `sm`/`md` badges, hover + `:focus-visible` ring, currentColor-aware so the affordance tracks the badge tone.
25
+
26
+ ### Patch Changes
27
+
28
+ - **Navigation icon flips for RTL.** Breadcrumb and Pagination chevrons flip via `[dir='rtl'] transform: scaleX(-1)` so "back" and "forward" always point along the reading axis. Same pattern reused in DropdownMenu's submenu chevron.
29
+ - **Drawer overlay z-index pinned to `60`** (panel at `61`) to match Modal's stack — Toast (`70`) stays above either.
30
+
31
+ ## 0.4.0
32
+
33
+ ### Minor Changes
34
+
35
+ - **Per-component CSS for the 8 components in the display + feedback batches.** Each file ships under `@layer ddga-components`:
36
+ - **Display:** `components/card.css` (variants `default` / `outline` / `elevated` / `filled` / `gradient` / `ghost`, padding scale, `interactive` hover ring, `orientation` horizontal/vertical, `CardImage` aspect-ratio), `components/badge.css` (8 solid + 6 subtle variants + `dot` + icon slots), `components/divider.css` (solid/dashed + logical `labelPosition`), `components/avatar.css` (sizes + shapes + status corner + `AvatarFallback` color schemes + `AvatarGroup` cascade).
37
+ - **Feedback / overlay:** `components/tooltip.css` (Radix Tooltip content + arrow, size variants), `components/alert.css` (4 variants on a tonal palette + accent edge + dismissible close-button), `components/modal.css` (Radix Dialog overlay + content box, size caps with viewport min/max, physical-axis centering for direction-agnostic translate), `components/toast.css` (Radix Toast viewport + per-variant accent edge, 6 logical positions, z-index 70 above Modal).
38
+
3
39
  ## 0.3.0
4
40
 
5
41
  ### Minor Changes
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-accordion{inline-size:100%;color:var(--ddga-text-primary);border-block-end:1px solid var(--ddga-color-border);flex-direction:column;display:flex}.ddga-accordion__item{border-block-start:1px solid var(--ddga-color-border)}.ddga-accordion__header{margin:0;display:flex}.ddga-accordion__trigger{appearance:none;justify-content:space-between;align-items:center;gap:var(--ddga-space-3);inline-size:100%;padding-block:var(--ddga-space-4);color:var(--ddga-text-primary);text-align:start;cursor:pointer;background:0 0;border:0;margin:0;font-family:inherit;font-weight:500;transition:color .15s;display:inline-flex}.ddga-accordion__trigger:hover{color:var(--ddga-color-primary)}.ddga-accordion__trigger:focus-visible{box-shadow:0 0 0 2px var(--ddga-color-ring);border-radius:var(--ddga-radius-sm);outline:none}.ddga-accordion__chevron{block-size:1em;inline-size:1em;color:var(--ddga-text-tertiary);flex-shrink:0;transition:transform .2s}.ddga-accordion__trigger[data-state=open] .ddga-accordion__chevron{transform:rotate(180deg)}.ddga-accordion__content{color:var(--ddga-text-secondary);overflow:hidden}.ddga-accordion__content[data-state=open]{animation:.2s ease-out ddga-accordion-down}.ddga-accordion__content[data-state=closed]{animation:.2s ease-out ddga-accordion-up}.ddga-accordion__content-inner{padding-block-end:var(--ddga-space-4);line-height:1.5}@keyframes ddga-accordion-down{0%{block-size:0}to{block-size:var(--radix-accordion-content-height)}}@keyframes ddga-accordion-up{0%{block-size:var(--radix-accordion-content-height)}to{block-size:0}}.ddga-accordion--sm .ddga-accordion__trigger{padding-block:var(--ddga-space-3);font-size:var(--ddga-font-size-sm)}.ddga-accordion--md .ddga-accordion__trigger{padding-block:var(--ddga-space-4);font-size:var(--ddga-font-size-base)}@media (prefers-reduced-motion:reduce){.ddga-accordion__content[data-state=open],.ddga-accordion__content[data-state=closed]{animation:none}.ddga-accordion__chevron{transition:none}}@media (forced-colors:active){.ddga-accordion,.ddga-accordion__item{border-color:canvastext}.ddga-accordion__trigger:focus-visible{outline-offset:2px;outline:2px solid highlight}}}
2
+ /*# sourceMappingURL=accordion.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAQE,uJAUA,4EAMA,8CAOA,mVAmBA,+DAIA,oIAQA,+HAQA,4FAMA,0EAKA,qFAGA,qFAIA,qFAKA,oGAQA,kGAWA,kHAIA,oHAOA,uCACE,qGAIA,0CAOF,8BACE,8DAIA","sources":["src/components/accordion.css"],"sourcesContent":["@layer ddga-components {\n /* Size lives on the root; per-part visuals cascade. Radix exposes\n `--radix-accordion-content-height` on the Content element when open so\n we can animate the disclosure cleanly; the inner wrapper carries the\n padding so the animated container can clip without padding popping. */\n\n /* ─── Root ─── */\n\n .ddga-accordion {\n display: flex;\n flex-direction: column;\n inline-size: 100%;\n color: var(--ddga-text-primary);\n border-block-end: 1px solid var(--ddga-color-border);\n }\n\n /* ─── Item ─── */\n\n .ddga-accordion__item {\n border-block-start: 1px solid var(--ddga-color-border);\n }\n\n /* ─── Header (wraps the trigger button) ─── */\n\n .ddga-accordion__header {\n display: flex;\n margin: 0;\n }\n\n /* ─── Trigger (the disclosure button) ─── */\n\n .ddga-accordion__trigger {\n appearance: none;\n background: transparent;\n border: 0;\n margin: 0;\n inline-size: 100%;\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ddga-space-3);\n padding-block: var(--ddga-space-4);\n color: var(--ddga-text-primary);\n font-family: inherit;\n font-weight: 500;\n text-align: start;\n cursor: pointer;\n transition: color 150ms ease;\n }\n\n .ddga-accordion__trigger:hover {\n color: var(--ddga-color-primary);\n }\n\n .ddga-accordion__trigger:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--ddga-color-ring);\n border-radius: var(--ddga-radius-sm);\n }\n\n /* ─── Chevron ─── */\n\n .ddga-accordion__chevron {\n flex-shrink: 0;\n inline-size: 1em;\n block-size: 1em;\n color: var(--ddga-text-tertiary);\n transition: transform 200ms ease;\n }\n\n .ddga-accordion__trigger[data-state='open'] .ddga-accordion__chevron {\n transform: rotate(180deg);\n }\n\n /* ─── Content (animated disclosure) ─── */\n\n .ddga-accordion__content {\n overflow: hidden;\n color: var(--ddga-text-secondary);\n }\n\n .ddga-accordion__content[data-state='open'] {\n animation: ddga-accordion-down 200ms ease-out;\n }\n .ddga-accordion__content[data-state='closed'] {\n animation: ddga-accordion-up 200ms ease-out;\n }\n\n .ddga-accordion__content-inner {\n padding-block-end: var(--ddga-space-4);\n line-height: 1.5;\n }\n\n @keyframes ddga-accordion-down {\n from {\n block-size: 0;\n }\n to {\n block-size: var(--radix-accordion-content-height);\n }\n }\n @keyframes ddga-accordion-up {\n from {\n block-size: var(--radix-accordion-content-height);\n }\n to {\n block-size: 0;\n }\n }\n\n /* ─── Sizes (cascade from root) ─── */\n\n .ddga-accordion--sm .ddga-accordion__trigger {\n padding-block: var(--ddga-space-3);\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-accordion--md .ddga-accordion__trigger {\n padding-block: var(--ddga-space-4);\n font-size: var(--ddga-font-size-base);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-accordion__content[data-state='open'],\n .ddga-accordion__content[data-state='closed'] {\n animation: none;\n }\n .ddga-accordion__chevron {\n transition: none;\n }\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-accordion,\n .ddga-accordion__item {\n border-color: CanvasText;\n }\n .ddga-accordion__trigger:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n"],"names":[]}
@@ -1,2 +1,2 @@
1
- @layer ddga-components{.ddga-badge{justify-content:center;align-items:center;gap:var(--ddga-space-1);border-radius:var(--ddga-radius-full);font-weight:var(--ddga-font-weight-medium);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;font-family:inherit;line-height:1.4;display:inline-flex}.ddga-badge--sm{height:20px;padding-inline:var(--ddga-space-2);font-size:var(--ddga-font-size-xs)}.ddga-badge--md{height:24px;padding-inline:var(--ddga-space-2);font-size:var(--ddga-font-size-xs)}.ddga-badge--default{background-color:var(--ddga-gray-100);color:var(--ddga-gray-700)}.ddga-badge--primary{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-badge--secondary{background-color:var(--ddga-color-secondary);color:var(--ddga-color-secondary-foreground)}.ddga-badge--destructive{background-color:var(--ddga-color-destructive);color:var(--ddga-color-destructive-foreground)}.ddga-badge--success{background-color:var(--ddga-color-success);color:var(--ddga-color-success-foreground)}.ddga-badge--warning{background-color:var(--ddga-color-warning);color:var(--ddga-color-warning-foreground)}.ddga-badge--info{background-color:var(--ddga-color-info);color:var(--ddga-color-info-foreground)}.ddga-badge--primary-subtle{background-color:var(--ddga-sa-100);color:var(--ddga-sa-800)}.ddga-badge--secondary-subtle{background-color:var(--ddga-gray-100);color:var(--ddga-gray-700)}.ddga-badge--destructive-subtle{background-color:var(--ddga-error-100);color:var(--ddga-error-700)}.ddga-badge--success-subtle{background-color:var(--ddga-success-100);color:var(--ddga-success-700)}.ddga-badge--warning-subtle{background-color:var(--ddga-warning-100);color:var(--ddga-warning-700)}.ddga-badge--info-subtle{background-color:var(--ddga-info-100);color:var(--ddga-info-700)}.ddga-badge--outline{color:var(--ddga-color-foreground);border-color:var(--ddga-color-border);background-color:#0000}.ddga-badge__dot{border-radius:var(--ddga-radius-full);background-color:currentColor;flex-shrink:0;block-size:.5em;inline-size:.5em}.ddga-badge__icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ddga-badge__icon>svg,.ddga-badge>svg{width:.875em;height:.875em;display:block}.ddga-badge svg{flex-shrink:0;align-self:center}@media (forced-colors:active){.ddga-badge{border:1px solid canvastext}}}
1
+ @layer ddga-components{.ddga-badge{justify-content:center;align-items:center;gap:var(--ddga-space-1);border-radius:var(--ddga-radius-full);font-weight:var(--ddga-font-weight-medium);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;font-family:inherit;line-height:1.4;display:inline-flex}.ddga-badge--sm{height:20px;padding-inline:var(--ddga-space-2);font-size:var(--ddga-font-size-xs)}.ddga-badge--md{height:24px;padding-inline:var(--ddga-space-2);font-size:var(--ddga-font-size-xs)}.ddga-badge--default{background-color:var(--ddga-gray-100);color:var(--ddga-gray-700)}.ddga-badge--primary{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-badge--secondary{background-color:var(--ddga-color-secondary);color:var(--ddga-color-secondary-foreground)}.ddga-badge--destructive{background-color:var(--ddga-color-destructive);color:var(--ddga-color-destructive-foreground)}.ddga-badge--success{background-color:var(--ddga-color-success);color:var(--ddga-color-success-foreground)}.ddga-badge--warning{background-color:var(--ddga-color-warning);color:var(--ddga-color-warning-foreground)}.ddga-badge--info{background-color:var(--ddga-color-info);color:var(--ddga-color-info-foreground)}.ddga-badge--primary-subtle{background-color:var(--ddga-sa-100);color:var(--ddga-sa-800)}.ddga-badge--secondary-subtle{background-color:var(--ddga-gray-100);color:var(--ddga-gray-700)}.ddga-badge--destructive-subtle{background-color:var(--ddga-error-100);color:var(--ddga-error-700)}.ddga-badge--success-subtle{background-color:var(--ddga-success-100);color:var(--ddga-success-700)}.ddga-badge--warning-subtle{background-color:var(--ddga-warning-100);color:var(--ddga-warning-700)}.ddga-badge--info-subtle{background-color:var(--ddga-info-100);color:var(--ddga-info-700)}.ddga-badge--outline{color:var(--ddga-color-foreground);border-color:var(--ddga-color-border);background-color:#0000}.ddga-badge__dot{border-radius:var(--ddga-radius-full);background-color:currentColor;flex-shrink:0;block-size:.5em;inline-size:.5em}.ddga-badge__icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ddga-badge__icon>svg,.ddga-badge>svg{width:.875em;height:.875em;display:block}.ddga-badge svg{flex-shrink:0;align-self:center}.ddga-badge__close{border-radius:var(--ddga-radius-full);block-size:1.5em;inline-size:1.5em;color:inherit;cursor:pointer;font:inherit;appearance:none;background-color:#0000;border:0;justify-content:center;align-items:center;margin-inline:.125em -.25em;padding:0;display:inline-flex}.ddga-badge__close>svg{block-size:.75em;inline-size:.75em}.ddga-badge__close:hover{background-color:color-mix(in srgb, currentColor 18%, transparent)}.ddga-badge__close:focus-visible{outline:2px solid var(--ddga-color-ring);outline-offset:1px}@media (forced-colors:active){.ddga-badge{border:1px solid canvastext}}}
2
2
  /*# sourceMappingURL=badge.css.map */
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAAA,uBAGE,2SAgBA,kGAMA,kGAQA,sFAKA,2GAKA,iHAKA,uHAKA,2GAKA,2GAKA,kGAOA,yFAKA,+FAKA,mGAKA,mGAKA,mGAKA,0FAOA,qHAQA,oIAUA,8FAOA,+EAOA,gDAOA,8BACE","sources":["src/components/badge.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Base ─── */\n\n .ddga-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ddga-space-1);\n border: 1px solid transparent;\n border-radius: var(--ddga-radius-full);\n font-weight: var(--ddga-font-weight-medium);\n font-family: inherit;\n line-height: 1.4;\n white-space: nowrap;\n user-select: none;\n }\n\n /* ─── Sizes ─── */\n\n .ddga-badge--sm {\n height: 20px;\n padding-inline: var(--ddga-space-2);\n font-size: var(--ddga-font-size-xs);\n }\n\n .ddga-badge--md {\n height: 24px;\n padding-inline: var(--ddga-space-2);\n font-size: var(--ddga-font-size-xs);\n }\n\n /* ─── Solid variants ─── */\n\n .ddga-badge--default {\n background-color: var(--ddga-gray-100);\n color: var(--ddga-gray-700);\n }\n\n .ddga-badge--primary {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n\n .ddga-badge--secondary {\n background-color: var(--ddga-color-secondary);\n color: var(--ddga-color-secondary-foreground);\n }\n\n .ddga-badge--destructive {\n background-color: var(--ddga-color-destructive);\n color: var(--ddga-color-destructive-foreground);\n }\n\n .ddga-badge--success {\n background-color: var(--ddga-color-success);\n color: var(--ddga-color-success-foreground);\n }\n\n .ddga-badge--warning {\n background-color: var(--ddga-color-warning);\n color: var(--ddga-color-warning-foreground);\n }\n\n .ddga-badge--info {\n background-color: var(--ddga-color-info);\n color: var(--ddga-color-info-foreground);\n }\n\n /* ─── Subtle (tonal) variants ─── */\n\n .ddga-badge--primary-subtle {\n background-color: var(--ddga-sa-100);\n color: var(--ddga-sa-800);\n }\n\n .ddga-badge--secondary-subtle {\n background-color: var(--ddga-gray-100);\n color: var(--ddga-gray-700);\n }\n\n .ddga-badge--destructive-subtle {\n background-color: var(--ddga-error-100);\n color: var(--ddga-error-700);\n }\n\n .ddga-badge--success-subtle {\n background-color: var(--ddga-success-100);\n color: var(--ddga-success-700);\n }\n\n .ddga-badge--warning-subtle {\n background-color: var(--ddga-warning-100);\n color: var(--ddga-warning-700);\n }\n\n .ddga-badge--info-subtle {\n background-color: var(--ddga-info-100);\n color: var(--ddga-info-700);\n }\n\n /* ─── Outline ─── */\n\n .ddga-badge--outline {\n background-color: transparent;\n color: var(--ddga-color-foreground);\n border-color: var(--ddga-color-border);\n }\n\n /* ─── Dot ─── */\n\n .ddga-badge__dot {\n inline-size: 0.5em;\n block-size: 0.5em;\n border-radius: var(--ddga-radius-full);\n background-color: currentColor;\n flex-shrink: 0;\n }\n\n /* ─── Icons inside badge ─── */\n\n .ddga-badge__icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .ddga-badge__icon > svg,\n .ddga-badge > svg {\n width: 0.875em;\n height: 0.875em;\n display: block;\n }\n\n .ddga-badge svg {\n flex-shrink: 0;\n align-self: center;\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-badge {\n border: 1px solid CanvasText;\n }\n }\n}\n"],"names":[]}
1
+ {"version":3,"mappings":"AAAA,uBAGE,2SAgBA,kGAMA,kGAQA,sFAKA,2GAKA,iHAKA,uHAKA,2GAKA,2GAKA,kGAOA,yFAKA,+FAKA,mGAKA,mGAKA,mGAKA,0FAOA,qHAQA,oIAUA,8FAOA,+EAOA,gDAOA,0RAmBA,0DAKA,4FAIA,6FAOA,8BACE","sources":["src/components/badge.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Base ─── */\n\n .ddga-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ddga-space-1);\n border: 1px solid transparent;\n border-radius: var(--ddga-radius-full);\n font-weight: var(--ddga-font-weight-medium);\n font-family: inherit;\n line-height: 1.4;\n white-space: nowrap;\n user-select: none;\n }\n\n /* ─── Sizes ─── */\n\n .ddga-badge--sm {\n height: 20px;\n padding-inline: var(--ddga-space-2);\n font-size: var(--ddga-font-size-xs);\n }\n\n .ddga-badge--md {\n height: 24px;\n padding-inline: var(--ddga-space-2);\n font-size: var(--ddga-font-size-xs);\n }\n\n /* ─── Solid variants ─── */\n\n .ddga-badge--default {\n background-color: var(--ddga-gray-100);\n color: var(--ddga-gray-700);\n }\n\n .ddga-badge--primary {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n\n .ddga-badge--secondary {\n background-color: var(--ddga-color-secondary);\n color: var(--ddga-color-secondary-foreground);\n }\n\n .ddga-badge--destructive {\n background-color: var(--ddga-color-destructive);\n color: var(--ddga-color-destructive-foreground);\n }\n\n .ddga-badge--success {\n background-color: var(--ddga-color-success);\n color: var(--ddga-color-success-foreground);\n }\n\n .ddga-badge--warning {\n background-color: var(--ddga-color-warning);\n color: var(--ddga-color-warning-foreground);\n }\n\n .ddga-badge--info {\n background-color: var(--ddga-color-info);\n color: var(--ddga-color-info-foreground);\n }\n\n /* ─── Subtle (tonal) variants ─── */\n\n .ddga-badge--primary-subtle {\n background-color: var(--ddga-sa-100);\n color: var(--ddga-sa-800);\n }\n\n .ddga-badge--secondary-subtle {\n background-color: var(--ddga-gray-100);\n color: var(--ddga-gray-700);\n }\n\n .ddga-badge--destructive-subtle {\n background-color: var(--ddga-error-100);\n color: var(--ddga-error-700);\n }\n\n .ddga-badge--success-subtle {\n background-color: var(--ddga-success-100);\n color: var(--ddga-success-700);\n }\n\n .ddga-badge--warning-subtle {\n background-color: var(--ddga-warning-100);\n color: var(--ddga-warning-700);\n }\n\n .ddga-badge--info-subtle {\n background-color: var(--ddga-info-100);\n color: var(--ddga-info-700);\n }\n\n /* ─── Outline ─── */\n\n .ddga-badge--outline {\n background-color: transparent;\n color: var(--ddga-color-foreground);\n border-color: var(--ddga-color-border);\n }\n\n /* ─── Dot ─── */\n\n .ddga-badge__dot {\n inline-size: 0.5em;\n block-size: 0.5em;\n border-radius: var(--ddga-radius-full);\n background-color: currentColor;\n flex-shrink: 0;\n }\n\n /* ─── Icons inside badge ─── */\n\n .ddga-badge__icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .ddga-badge__icon > svg,\n .ddga-badge > svg {\n width: 0.875em;\n height: 0.875em;\n display: block;\n }\n\n .ddga-badge svg {\n flex-shrink: 0;\n align-self: center;\n }\n\n /* ─── Close button (dismissible) ─── */\n\n .ddga-badge__close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1.5em;\n block-size: 1.5em;\n margin-inline-start: 0.125em;\n margin-inline-end: -0.25em;\n padding: 0;\n border: 0;\n border-radius: var(--ddga-radius-full);\n background-color: transparent;\n color: inherit;\n cursor: pointer;\n font: inherit;\n -webkit-appearance: none;\n appearance: none;\n }\n\n .ddga-badge__close > svg {\n inline-size: 0.75em;\n block-size: 0.75em;\n }\n\n .ddga-badge__close:hover {\n background-color: color-mix(in srgb, currentColor 18%, transparent);\n }\n\n .ddga-badge__close:focus-visible {\n outline: 2px solid var(--ddga-color-ring);\n outline-offset: 1px;\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-badge {\n border: 1px solid CanvasText;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-breadcrumb{color:var(--ddga-text-secondary);font-family:inherit;line-height:1.4}.ddga-breadcrumb__list{align-items:center;gap:var(--ddga-space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.ddga-breadcrumb__item{align-items:center;gap:var(--ddga-space-2);display:inline-flex}.ddga-breadcrumb__link{color:var(--ddga-text-secondary);border-radius:var(--ddga-radius-sm);text-decoration:none;transition:color .15s}.ddga-breadcrumb__link:hover{color:var(--ddga-text-primary);text-underline-offset:2px;text-decoration:underline}.ddga-breadcrumb__link:focus-visible{color:var(--ddga-text-primary);box-shadow:0 0 0 2px var(--ddga-color-ring);outline:none}.ddga-breadcrumb__page{color:var(--ddga-text-primary);font-weight:500}.ddga-breadcrumb__separator{color:var(--ddga-text-tertiary);align-items:center;display:inline-flex}.ddga-breadcrumb__separator>svg{block-size:1em;inline-size:1em}[dir=rtl] .ddga-breadcrumb__separator>svg{transform:scaleX(-1)}.ddga-breadcrumb__ellipsis{inline-size:1.5em;color:var(--ddga-text-tertiary);justify-content:center;align-items:center;display:inline-flex}.ddga-breadcrumb__ellipsis>svg{block-size:1em;inline-size:1em}.ddga-breadcrumb--sm{font-size:var(--ddga-font-size-xs)}.ddga-breadcrumb--md{font-size:var(--ddga-font-size-sm)}@media (prefers-reduced-motion:reduce){.ddga-breadcrumb__link{transition:none}}@media (forced-colors:active){.ddga-breadcrumb__link,.ddga-breadcrumb__link:hover{color:linktext}.ddga-breadcrumb__link:focus-visible{outline-offset:2px;outline:2px solid highlight}.ddga-breadcrumb__page{color:canvastext}}}
2
+ /*# sourceMappingURL=breadcrumb.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBASE,sFAQA,iIAcA,sFAQA,uIAOA,gHAMA,6HAQA,sEAOA,mGAMA,+DAQA,+DAMA,2IAQA,8DAOA,wDAIA,wDAMA,uCACE,wCAOF,8BACE,mEAMA,oFAIA","sources":["src/components/breadcrumb.css"],"sourcesContent":["@layer ddga-components {\n /* Size lives on the root (.ddga-breadcrumb--{sm,md}). All descendant\n selectors cascade from there. Logical properties handle the RTL flip\n for spacing; the separator chevron flips via `[dir='rtl'] transform`\n because chevrons are visual-direction glyphs that CSS logical\n properties don't auto-mirror. */\n\n /* ─── Root (nav) ─── */\n\n .ddga-breadcrumb {\n color: var(--ddga-text-secondary);\n font-family: inherit;\n line-height: 1.4;\n }\n\n /* ─── List (ol) ─── */\n\n .ddga-breadcrumb__list {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n /* Spacing between items + separator handled at item level via gap so\n wrapped lines stay readable. */\n gap: var(--ddga-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n /* ─── Item (li) ─── */\n\n .ddga-breadcrumb__item {\n display: inline-flex;\n align-items: center;\n gap: var(--ddga-space-2);\n }\n\n /* ─── Link (a) ─── */\n\n .ddga-breadcrumb__link {\n color: var(--ddga-text-secondary);\n text-decoration: none;\n border-radius: var(--ddga-radius-sm);\n transition: color 150ms ease;\n }\n\n .ddga-breadcrumb__link:hover {\n color: var(--ddga-text-primary);\n text-decoration: underline;\n text-underline-offset: 2px;\n }\n\n .ddga-breadcrumb__link:focus-visible {\n outline: none;\n color: var(--ddga-text-primary);\n box-shadow: 0 0 0 2px var(--ddga-color-ring);\n }\n\n /* ─── Page (current) ─── */\n\n .ddga-breadcrumb__page {\n color: var(--ddga-text-primary);\n font-weight: 500;\n }\n\n /* ─── Separator (li, decorative) ─── */\n\n .ddga-breadcrumb__separator {\n display: inline-flex;\n align-items: center;\n color: var(--ddga-text-tertiary);\n }\n\n .ddga-breadcrumb__separator > svg {\n inline-size: 1em;\n block-size: 1em;\n }\n\n /* RTL flip — chevron's geometry encodes direction. Only target the icon\n (and any other svg child) so consumer-supplied custom separators (`/`,\n `·`) that aren't direction-encoded stay un-flipped. */\n [dir='rtl'] .ddga-breadcrumb__separator > svg {\n transform: scaleX(-1);\n }\n\n /* ─── Ellipsis ─── */\n\n .ddga-breadcrumb__ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1.5em;\n color: var(--ddga-text-tertiary);\n }\n\n .ddga-breadcrumb__ellipsis > svg {\n inline-size: 1em;\n block-size: 1em;\n }\n\n /* ─── Sizes (cascade from root) ─── */\n\n .ddga-breadcrumb--sm {\n font-size: var(--ddga-font-size-xs);\n }\n\n .ddga-breadcrumb--md {\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-breadcrumb__link {\n transition: none;\n }\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-breadcrumb__link {\n color: LinkText;\n }\n .ddga-breadcrumb__link:hover {\n color: LinkText;\n }\n .ddga-breadcrumb__link:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n .ddga-breadcrumb__page {\n color: CanvasText;\n }\n }\n}\n"],"names":[]}
@@ -1,2 +1,2 @@
1
- @layer ddga-components{.ddga-button{justify-content:center;align-items:center;gap:var(--ddga-space-1);border-radius:var(--ddga-radius-sm);font-weight:var(--ddga-font-weight-medium);cursor:pointer;border:1px solid #0000;font-family:inherit;line-height:1.6;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,opacity .15s;display:inline-flex}.ddga-button--primary{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-button--primary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-primary-hover)}.ddga-button--secondary{background-color:var(--ddga-color-secondary);color:var(--ddga-color-secondary-foreground)}.ddga-button--secondary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-secondary-hover)}.ddga-button--outline{color:var(--ddga-color-foreground);border-color:var(--ddga-color-border);background-color:#0000}.ddga-button--outline:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-muted)}.ddga-button--ghost{color:var(--ddga-color-foreground);background-color:#0000}.ddga-button--ghost:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-muted)}.ddga-button--destructive{background-color:var(--ddga-color-destructive);color:var(--ddga-color-destructive-foreground)}.ddga-button--destructive:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-destructive-hover)}.ddga-button--sm{height:32px;padding-inline:var(--ddga-space-3);font-size:var(--ddga-font-size-sm)}.ddga-button--md{height:36px;padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-base)}.ddga-button--lg{height:40px;padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-lg)}.ddga-button--icon{width:40px;height:40px;font-size:var(--ddga-font-size-base);padding:0}.ddga-button--icon-sm{width:28px;height:28px;font-size:var(--ddga-font-size-sm);padding:0}.ddga-button--full-width{flex:1 0 100%;inline-size:100%}.ddga-button--loading{cursor:wait;position:relative}.ddga-button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ddga-button__icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ddga-button svg{flex-shrink:0;align-self:center}.ddga-spinner{flex-shrink:0;animation:.6s linear infinite ddga-spin}@keyframes ddga-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ddga-spinner{animation-duration:1.5s}.ddga-button{transition:none}}.ddga-button:disabled,.ddga-button[aria-disabled=true]{opacity:.5;cursor:not-allowed}.ddga-button:focus-visible{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring);outline:none}[dir=rtl] .ddga-icon-flip{transform:scaleX(-1)}@media (forced-colors:active){.ddga-button{border:1px solid buttontext}.ddga-button:focus-visible{outline:2px solid highlight}.ddga-button:disabled,.ddga-button[aria-disabled=true]{color:graytext;border-color:graytext}}}
1
+ @layer ddga-components{.ddga-button{justify-content:center;align-items:center;gap:var(--ddga-space-1);border-radius:var(--ddga-radius-sm);font-weight:var(--ddga-font-weight-medium);cursor:pointer;border:1px solid #0000;font-family:inherit;line-height:1.6;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,opacity .15s;display:inline-flex}.ddga-button--primary{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-button--primary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-primary-hover)}.ddga-button--secondary{background-color:var(--ddga-color-secondary);color:var(--ddga-color-secondary-foreground)}.ddga-button--secondary:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-secondary-hover)}.ddga-button--outline{color:var(--ddga-color-foreground);border-color:var(--ddga-color-border);background-color:#0000}.ddga-button--outline:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-muted)}.ddga-button--ghost{color:var(--ddga-color-foreground);background-color:#0000}.ddga-button--ghost:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-muted)}.ddga-button--destructive{background-color:var(--ddga-color-destructive);color:var(--ddga-color-destructive-foreground)}.ddga-button--destructive:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-color-destructive-hover)}.ddga-button--destructive-outline{color:var(--ddga-color-destructive);border-color:var(--ddga-color-destructive);background-color:#0000}.ddga-button--destructive-outline:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-error-50)}.ddga-button--destructive-subtle{background-color:var(--ddga-error-50);color:var(--ddga-color-destructive)}.ddga-button--destructive-subtle:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-error-100)}.ddga-button--destructive-ghost{color:var(--ddga-color-destructive);background-color:#0000}.ddga-button--destructive-ghost:hover:not(:disabled):not([aria-disabled=true]){background-color:var(--ddga-error-50)}.ddga-button--sm{height:32px;padding-inline:var(--ddga-space-3);font-size:var(--ddga-font-size-sm)}.ddga-button--md{height:36px;padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-base)}.ddga-button--lg{height:40px;padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-lg)}.ddga-button--icon{width:40px;height:40px;font-size:var(--ddga-font-size-base);padding:0}.ddga-button--icon-sm{width:28px;height:28px;font-size:var(--ddga-font-size-sm);padding:0}.ddga-button--full-width{flex:1 0 100%;inline-size:100%}.ddga-button--inverted.ddga-button--outline,.ddga-button--inverted.ddga-button--ghost{color:#fff;background-color:#0000}.ddga-button--inverted.ddga-button--outline{border-color:#fff6}.ddga-button--inverted.ddga-button--outline:hover:not(:disabled):not([aria-disabled=true]),.ddga-button--inverted.ddga-button--ghost:hover:not(:disabled):not([aria-disabled=true]){background-color:#ffffff1f}.ddga-button--inverted.ddga-button--outline:hover:not(:disabled):not([aria-disabled=true]){border-color:#fff9}.ddga-button--inverted.ddga-button--destructive-outline,.ddga-button--inverted.ddga-button--destructive-ghost{color:var(--ddga-error-200)}.ddga-button--inverted.ddga-button--destructive-outline{border-color:var(--ddga-error-300)}.ddga-button--inverted.ddga-button--destructive-outline:hover:not(:disabled):not([aria-disabled=true]),.ddga-button--inverted.ddga-button--destructive-ghost:hover:not(:disabled):not([aria-disabled=true]){background-color:#ffffff14}.ddga-button--loading{cursor:wait;position:relative}.ddga-button__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ddga-button__icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ddga-button svg{flex-shrink:0;align-self:center}@media (prefers-reduced-motion:reduce){.ddga-button{transition:none}}.ddga-button:disabled,.ddga-button[aria-disabled=true]{opacity:.5;cursor:not-allowed}.ddga-button:focus-visible{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring);outline:none}[dir=rtl] .ddga-icon-flip{transform:scaleX(-1)}@media (forced-colors:active){.ddga-button{border:1px solid buttontext}.ddga-button:focus-visible{outline:2px solid highlight}.ddga-button:disabled,.ddga-button[aria-disabled=true]{color:graytext;border-color:graytext}}}
2
2
  /*# sourceMappingURL=button.css.map */
@@ -1 +1 @@
1
- {"version":3,"mappings":"AAAA,uBAGE,4VAqBA,4GAIA,sHAMA,kHAIA,0HAMA,sHAKA,8GAMA,8EAIA,4GAMA,wHAIA,8HAMA,mGAKA,qGAKA,mGAKA,yFAQA,0FASA,wDAOA,oDAOA,6EAOA,+FAUA,iDAOA,oEAKA,yEASA,uCACE,sCAGA,8BASF,qFAMA,wHAQA,+CAMA,8BACE,yCAGA,uDAGA","sources":["src/components/button.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Base ─── */\n\n .ddga-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ddga-space-1);\n border: 1px solid transparent;\n border-radius: var(--ddga-radius-sm);\n font-weight: var(--ddga-font-weight-medium);\n font-family: inherit;\n line-height: 1.6;\n cursor: pointer;\n text-decoration: none;\n transition:\n background-color 150ms ease,\n border-color 150ms ease,\n color 150ms ease,\n opacity 150ms ease;\n }\n\n /* ─── Variant: Primary ─── */\n\n .ddga-button--primary {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n .ddga-button--primary:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-primary-hover);\n }\n\n /* ─── Variant: Secondary ─── */\n\n .ddga-button--secondary {\n background-color: var(--ddga-color-secondary);\n color: var(--ddga-color-secondary-foreground);\n }\n .ddga-button--secondary:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-secondary-hover);\n }\n\n /* ─── Variant: Outline ─── */\n\n .ddga-button--outline {\n background-color: transparent;\n color: var(--ddga-color-foreground);\n border-color: var(--ddga-color-border);\n }\n .ddga-button--outline:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-muted);\n }\n\n /* ─── Variant: Ghost ─── */\n\n .ddga-button--ghost {\n background-color: transparent;\n color: var(--ddga-color-foreground);\n }\n .ddga-button--ghost:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-muted);\n }\n\n /* ─── Variant: Destructive ─── */\n\n .ddga-button--destructive {\n background-color: var(--ddga-color-destructive);\n color: var(--ddga-color-destructive-foreground);\n }\n .ddga-button--destructive:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-destructive-hover);\n }\n\n /* ─── Sizes ─── */\n\n .ddga-button--sm {\n height: 32px;\n padding-inline: var(--ddga-space-3);\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-button--md {\n height: 36px;\n padding-inline: var(--ddga-space-4);\n font-size: var(--ddga-font-size-base);\n }\n .ddga-button--lg {\n height: 40px;\n padding-inline: var(--ddga-space-4);\n font-size: var(--ddga-font-size-lg);\n }\n .ddga-button--icon {\n height: 40px;\n width: 40px;\n padding: 0;\n font-size: var(--ddga-font-size-base);\n }\n /* Compact square icon button , fits inside form fields as an adornment\n (sm/md field interiors) without overflowing the field border. */\n .ddga-button--icon-sm {\n height: 28px;\n width: 28px;\n padding: 0;\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Full Width ─── */\n\n .ddga-button--full-width {\n inline-size: 100%;\n flex: 1 0 100%;\n }\n\n /* ─── Loading ─── */\n\n .ddga-button--loading {\n position: relative;\n cursor: wait;\n }\n\n /* ─── Child elements ─── */\n\n .ddga-button__text {\n /* Truncate long text */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .ddga-button__icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n /* Block-level SVGs (see reset) must not be flex-stretched on the cross\n axis , that distorts a square icon into a tall one. Pin them square\n to their intrinsic size and keep them centered. */\n .ddga-button svg {\n flex-shrink: 0;\n align-self: center;\n }\n\n /* ─── Spinner ─── */\n\n .ddga-spinner {\n animation: ddga-spin 600ms linear infinite;\n flex-shrink: 0;\n }\n\n @keyframes ddga-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-spinner {\n animation-duration: 1.5s;\n }\n .ddga-button {\n transition: none;\n }\n }\n\n /* ─── States ─── */\n\n /* Match `:disabled` (native button) and `[aria-disabled='true']` (asChild\n mode rendered as <a> or similar where native `disabled` has no effect). */\n .ddga-button:disabled,\n .ddga-button[aria-disabled='true'] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .ddga-button:focus-visible {\n outline: none;\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n\n /* ─── RTL directional icon flip ─── */\n\n [dir='rtl'] .ddga-icon-flip {\n transform: scaleX(-1);\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-button {\n border: 1px solid ButtonText;\n }\n .ddga-button:focus-visible {\n outline: 2px solid Highlight;\n }\n .ddga-button:disabled,\n .ddga-button[aria-disabled='true'] {\n color: GrayText;\n border-color: GrayText;\n }\n }\n}\n"],"names":[]}
1
+ {"version":3,"mappings":"AAAA,uBAGE,4VAqBA,4GAIA,sHAMA,kHAIA,0HAMA,sHAKA,8GAMA,8EAIA,4GAMA,wHAIA,8HAMA,wIAKA,uHAMA,2GAIA,uHAMA,2FAIA,qHAMA,mGAKA,qGAKA,mGAKA,yFAQA,0FASA,wDAaA,wHAKA,+DAGA,+MAIA,8GAGA,0IAMA,2FAGA,uOAWA,oDAOA,6EAOA,+FAUA,iDAKA,uCACE,8BASF,qFAMA,wHAQA,+CAMA,8BACE,yCAGA,uDAGA","sources":["src/components/button.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Base ─── */\n\n .ddga-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ddga-space-1);\n border: 1px solid transparent;\n border-radius: var(--ddga-radius-sm);\n font-weight: var(--ddga-font-weight-medium);\n font-family: inherit;\n line-height: 1.6;\n cursor: pointer;\n text-decoration: none;\n transition:\n background-color 150ms ease,\n border-color 150ms ease,\n color 150ms ease,\n opacity 150ms ease;\n }\n\n /* ─── Variant: Primary ─── */\n\n .ddga-button--primary {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n .ddga-button--primary:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-primary-hover);\n }\n\n /* ─── Variant: Secondary ─── */\n\n .ddga-button--secondary {\n background-color: var(--ddga-color-secondary);\n color: var(--ddga-color-secondary-foreground);\n }\n .ddga-button--secondary:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-secondary-hover);\n }\n\n /* ─── Variant: Outline ─── */\n\n .ddga-button--outline {\n background-color: transparent;\n color: var(--ddga-color-foreground);\n border-color: var(--ddga-color-border);\n }\n .ddga-button--outline:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-muted);\n }\n\n /* ─── Variant: Ghost ─── */\n\n .ddga-button--ghost {\n background-color: transparent;\n color: var(--ddga-color-foreground);\n }\n .ddga-button--ghost:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-muted);\n }\n\n /* ─── Variant: Destructive (filled, primary destructive) ─── */\n\n .ddga-button--destructive {\n background-color: var(--ddga-color-destructive);\n color: var(--ddga-color-destructive-foreground);\n }\n .ddga-button--destructive:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-color-destructive-hover);\n }\n\n /* ─── Variant: Destructive Outline (transparent + error border + error text) ─── */\n\n .ddga-button--destructive-outline {\n background-color: transparent;\n color: var(--ddga-color-destructive);\n border-color: var(--ddga-color-destructive);\n }\n .ddga-button--destructive-outline:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-error-50);\n }\n\n /* ─── Variant: Destructive Subtle (light tonal bg + error text) ─── */\n\n .ddga-button--destructive-subtle {\n background-color: var(--ddga-error-50);\n color: var(--ddga-color-destructive);\n }\n .ddga-button--destructive-subtle:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-error-100);\n }\n\n /* ─── Variant: Destructive Ghost (transparent + error text, hover tints) ─── */\n\n .ddga-button--destructive-ghost {\n background-color: transparent;\n color: var(--ddga-color-destructive);\n }\n .ddga-button--destructive-ghost:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: var(--ddga-error-50);\n }\n\n /* ─── Sizes ─── */\n\n .ddga-button--sm {\n height: 32px;\n padding-inline: var(--ddga-space-3);\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-button--md {\n height: 36px;\n padding-inline: var(--ddga-space-4);\n font-size: var(--ddga-font-size-base);\n }\n .ddga-button--lg {\n height: 40px;\n padding-inline: var(--ddga-space-4);\n font-size: var(--ddga-font-size-lg);\n }\n .ddga-button--icon {\n height: 40px;\n width: 40px;\n padding: 0;\n font-size: var(--ddga-font-size-base);\n }\n /* Compact square icon button , fits inside form fields as an adornment\n (sm/md field interiors) without overflowing the field border. */\n .ddga-button--icon-sm {\n height: 28px;\n width: 28px;\n padding: 0;\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Full Width ─── */\n\n .ddga-button--full-width {\n inline-size: 100%;\n flex: 1 0 100%;\n }\n\n /* ─── Inverted (for use on colored / dark backgrounds) ─── */\n /*\n * Only inverts the non-filled families — `outline`, `ghost`, and\n * destructive's outline/ghost forms. Filled variants (`primary`,\n * `secondary`, `destructive`, `destructive-subtle`) already carry their\n * own background contrast and keep their normal palette. Hover uses a\n * low-opacity white overlay so it works against any background tint.\n */\n .ddga-button--inverted.ddga-button--outline,\n .ddga-button--inverted.ddga-button--ghost {\n color: #ffffff;\n background-color: transparent;\n }\n .ddga-button--inverted.ddga-button--outline {\n border-color: rgba(255, 255, 255, 0.4);\n }\n .ddga-button--inverted.ddga-button--outline:hover:not(:disabled):not([aria-disabled='true']),\n .ddga-button--inverted.ddga-button--ghost:hover:not(:disabled):not([aria-disabled='true']) {\n background-color: rgba(255, 255, 255, 0.12);\n }\n .ddga-button--inverted.ddga-button--outline:hover:not(:disabled):not([aria-disabled='true']) {\n border-color: rgba(255, 255, 255, 0.6);\n }\n .ddga-button--inverted.ddga-button--destructive-outline,\n .ddga-button--inverted.ddga-button--destructive-ghost {\n /* On colored bgs, keep destructive readable by using a light error\n tint rather than full white (which would lose the destructive cue). */\n color: var(--ddga-error-200);\n }\n .ddga-button--inverted.ddga-button--destructive-outline {\n border-color: var(--ddga-error-300);\n }\n .ddga-button--inverted.ddga-button--destructive-outline:hover:not(:disabled):not(\n [aria-disabled='true']\n ),\n .ddga-button--inverted.ddga-button--destructive-ghost:hover:not(:disabled):not(\n [aria-disabled='true']\n ) {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n /* ─── Loading ─── */\n\n .ddga-button--loading {\n position: relative;\n cursor: wait;\n }\n\n /* ─── Child elements ─── */\n\n .ddga-button__text {\n /* Truncate long text */\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .ddga-button__icon {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n /* Block-level SVGs (see reset) must not be flex-stretched on the cross\n axis , that distorts a square icon into a tall one. Pin them square\n to their intrinsic size and keep them centered. */\n .ddga-button svg {\n flex-shrink: 0;\n align-self: center;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-button {\n transition: none;\n }\n }\n\n /* ─── States ─── */\n\n /* Match `:disabled` (native button) and `[aria-disabled='true']` (asChild\n mode rendered as <a> or similar where native `disabled` has no effect). */\n .ddga-button:disabled,\n .ddga-button[aria-disabled='true'] {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .ddga-button:focus-visible {\n outline: none;\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n\n /* ─── RTL directional icon flip ─── */\n\n [dir='rtl'] .ddga-icon-flip {\n transform: scaleX(-1);\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-button {\n border: 1px solid ButtonText;\n }\n .ddga-button:focus-visible {\n outline: 2px solid Highlight;\n }\n .ddga-button:disabled,\n .ddga-button[aria-disabled='true'] {\n color: GrayText;\n border-color: GrayText;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-combobox__label{align-items:center;gap:var(--ddga-space-1);font-size:var(--ddga-font-size-sm);font-weight:var(--ddga-font-weight-medium);color:var(--ddga-color-foreground);margin-block-end:var(--ddga-space-2);display:inline-flex}.ddga-combobox__required{color:var(--ddga-color-error)}.ddga-combobox-trigger{justify-content:space-between;align-items:center;gap:var(--ddga-space-2);border:1px solid var(--ddga-color-input);border-radius:var(--ddga-radius-md);background-color:var(--ddga-color-background);inline-size:100%;color:var(--ddga-color-foreground);text-align:start;cursor:pointer;font-family:inherit;transition:border-color .12s,box-shadow .12s;display:inline-flex}.ddga-combobox-trigger--sm{block-size:32px;padding-inline:var(--ddga-space-3);font-size:var(--ddga-font-size-sm)}.ddga-combobox-trigger--md{block-size:36px;padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-base)}.ddga-combobox-trigger:focus-visible{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring);outline:none}.ddga-combobox-trigger:disabled{opacity:.5;cursor:not-allowed;background-color:var(--ddga-color-muted)}.ddga-combobox-trigger--error{border-color:var(--ddga-color-error)}.ddga-combobox-trigger--error:focus-visible{border-color:var(--ddga-color-error);box-shadow:0 0 0 1px var(--ddga-color-error)}.ddga-combobox__value{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-inline-size:0;overflow:hidden}.ddga-combobox__placeholder{color:var(--ddga-text-placeholder)}.ddga-combobox__icon{block-size:1em;inline-size:1em;color:var(--ddga-text-secondary);flex-shrink:0}.ddga-combobox-content{background-color:var(--ddga-color-background);color:var(--ddga-color-foreground);border:1px solid var(--ddga-color-border);border-radius:var(--ddga-radius-md);box-shadow:var(--ddga-shadow-md);z-index:50;min-inline-size:200px;overflow:hidden}.ddga-combobox-content[data-state=open]{animation:.12s cubic-bezier(.16,1,.3,1) ddga-combobox-in}.ddga-combobox-content[data-state=closed]{animation:80ms ease-in ddga-combobox-out}@keyframes ddga-combobox-in{0%{opacity:0;transform:translateY(-2px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ddga-combobox-out{0%{opacity:1}to{opacity:0}}.ddga-combobox-command{flex-direction:column;max-block-size:min(340px,60vh);display:flex}.ddga-combobox-input{inline-size:100%;padding-block:var(--ddga-space-2);padding-inline:var(--ddga-space-3);border:0;border-block-end:1px solid var(--ddga-color-border);color:inherit;font:inherit;background-color:#0000;outline:none}.ddga-combobox-input::placeholder{color:var(--ddga-text-placeholder)}.ddga-combobox-list{min-block-size:0;padding:var(--ddga-space-1);flex:auto;overflow-y:auto}.ddga-combobox-empty{padding-block:var(--ddga-space-3);padding-inline:var(--ddga-space-3);font-size:var(--ddga-font-size-sm);color:var(--ddga-text-tertiary);text-align:center}.ddga-combobox-item{align-items:center;gap:var(--ddga-space-2);padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-2);border-radius:var(--ddga-radius-sm);font-size:var(--ddga-font-size-sm);color:inherit;cursor:default;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;outline:none;display:flex}.ddga-combobox-item[data-selected=true]{background-color:var(--ddga-color-muted)}.ddga-combobox-item[data-disabled=true]{color:var(--ddga-text-tertiary);pointer-events:none}.ddga-combobox-item__check{block-size:1em;inline-size:1em;color:var(--ddga-color-primary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ddga-combobox-item__check>svg{block-size:.875em;inline-size:.875em}.ddga-combobox-item__label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-inline-size:0;overflow:hidden}.ddga-combobox-group [cmdk-group-heading]{padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-2);font-size:var(--ddga-font-size-xs);font-weight:var(--ddga-font-weight-semibold);color:var(--ddga-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.ddga-combobox-separator{block-size:1px;margin-block:var(--ddga-space-1);margin-inline:calc(var(--ddga-space-1) * -1);background-color:var(--ddga-color-border)}@media (prefers-reduced-motion:reduce){.ddga-combobox-content[data-state=open],.ddga-combobox-content[data-state=closed]{animation:none}}@media (forced-colors:active){.ddga-combobox-trigger,.ddga-combobox-content{border:1px solid canvastext}.ddga-combobox-item[data-selected=true]{color:highlighttext;background-color:highlight}}}
2
+ /*# sourceMappingURL=combobox.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAGE,2OASA,uDAOA,oYAkBA,iHAKA,mHAMA,kIAMA,uGAMA,mEAGA,8HAKA,4GAQA,+DAIA,mGASA,wQAeA,iGAGA,mFAGA,4HAUA,wDAWA,yFAMA,uOAWA,qEAMA,2FAOA,+KAQA,oVAoBA,iFAGA,4FAKA,sKASA,oEAIA,iHAUA,6QAUA,gKASA,uCACE,kGAMF,8BACE,0EAIA","sources":["src/components/combobox.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Label + required ─── */\n\n .ddga-combobox__label {\n display: inline-flex;\n align-items: center;\n gap: var(--ddga-space-1);\n font-size: var(--ddga-font-size-sm);\n font-weight: var(--ddga-font-weight-medium);\n color: var(--ddga-color-foreground);\n margin-block-end: var(--ddga-space-2);\n }\n .ddga-combobox__required {\n color: var(--ddga-color-error);\n }\n\n /* ─── Trigger (Popover.Trigger as <button>) ─── */\n\n /* Heights mirror Input/Select so triggers and text inputs line up. */\n .ddga-combobox-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ddga-space-2);\n inline-size: 100%;\n border: 1px solid var(--ddga-color-input);\n border-radius: var(--ddga-radius-md);\n background-color: var(--ddga-color-background);\n color: var(--ddga-color-foreground);\n font-family: inherit;\n text-align: start;\n cursor: pointer;\n transition:\n border-color 120ms ease,\n box-shadow 120ms ease;\n }\n\n .ddga-combobox-trigger--sm {\n block-size: 32px;\n padding-inline: var(--ddga-space-3);\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-combobox-trigger--md {\n block-size: 36px;\n padding-inline: var(--ddga-space-4);\n font-size: var(--ddga-font-size-base);\n }\n\n .ddga-combobox-trigger:focus-visible {\n outline: none;\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n\n .ddga-combobox-trigger:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n background-color: var(--ddga-color-muted);\n }\n\n .ddga-combobox-trigger--error {\n border-color: var(--ddga-color-error);\n }\n .ddga-combobox-trigger--error:focus-visible {\n border-color: var(--ddga-color-error);\n box-shadow: 0 0 0 1px var(--ddga-color-error);\n }\n\n .ddga-combobox__value {\n flex: 1 1 auto;\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .ddga-combobox__placeholder {\n color: var(--ddga-text-placeholder);\n }\n\n .ddga-combobox__icon {\n flex-shrink: 0;\n inline-size: 1em;\n block-size: 1em;\n color: var(--ddga-text-secondary);\n }\n\n /* ─── Popover content panel ─── */\n\n .ddga-combobox-content {\n background-color: var(--ddga-color-background);\n color: var(--ddga-color-foreground);\n border: 1px solid var(--ddga-color-border);\n border-radius: var(--ddga-radius-md);\n box-shadow: var(--ddga-shadow-md);\n overflow: hidden;\n z-index: 50;\n /* `inline-size: var(--radix-popover-trigger-width)` set inline so the\n panel always matches trigger width. min-width fallback for very narrow\n triggers; the popper var is what wins normally. */\n min-inline-size: 200px;\n }\n\n /* Same in/out animation as DropdownMenu — fast + subtle. */\n .ddga-combobox-content[data-state='open'] {\n animation: ddga-combobox-in 120ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n .ddga-combobox-content[data-state='closed'] {\n animation: ddga-combobox-out 80ms ease-in;\n }\n @keyframes ddga-combobox-in {\n from {\n opacity: 0;\n transform: translateY(-2px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n @keyframes ddga-combobox-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n /* ─── cmdk root + input ─── */\n\n .ddga-combobox-command {\n display: flex;\n flex-direction: column;\n max-block-size: min(340px, 60vh);\n }\n\n .ddga-combobox-input {\n inline-size: 100%;\n padding-block: var(--ddga-space-2);\n padding-inline: var(--ddga-space-3);\n border: 0;\n border-block-end: 1px solid var(--ddga-color-border);\n background-color: transparent;\n color: inherit;\n font: inherit;\n outline: none;\n }\n .ddga-combobox-input::placeholder {\n color: var(--ddga-text-placeholder);\n }\n\n /* ─── List + items ─── */\n\n .ddga-combobox-list {\n flex: 1 1 auto;\n min-block-size: 0;\n overflow-y: auto;\n padding: var(--ddga-space-1);\n }\n\n .ddga-combobox-empty {\n padding-block: var(--ddga-space-3);\n padding-inline: var(--ddga-space-3);\n font-size: var(--ddga-font-size-sm);\n color: var(--ddga-text-tertiary);\n text-align: center;\n }\n\n .ddga-combobox-item {\n display: flex;\n align-items: center;\n gap: var(--ddga-space-2);\n padding-block: var(--ddga-space-1);\n padding-inline: var(--ddga-space-2);\n border-radius: var(--ddga-radius-sm);\n font-size: var(--ddga-font-size-sm);\n color: inherit;\n cursor: default;\n user-select: none;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n /* cmdk sets data-selected on the actively highlighted item (keyboard or\n hover). Our own data-selected (no attribute value) marks the chosen\n value — distinct concept. CSS uses [data-selected=''] for the chosen\n mark and [data-selected='true'] for cmdk's highlight; both can coexist\n on the same item when the chosen item is also highlighted. */\n .ddga-combobox-item[data-selected='true'] {\n background-color: var(--ddga-color-muted);\n }\n .ddga-combobox-item[data-disabled='true'] {\n color: var(--ddga-text-tertiary);\n pointer-events: none;\n }\n\n .ddga-combobox-item__check {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1em;\n block-size: 1em;\n flex-shrink: 0;\n color: var(--ddga-color-primary);\n }\n .ddga-combobox-item__check > svg {\n inline-size: 0.875em;\n block-size: 0.875em;\n }\n .ddga-combobox-item__label {\n flex: 1 1 auto;\n min-inline-size: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* ─── Group + Separator ─── */\n\n .ddga-combobox-group [cmdk-group-heading] {\n padding-block: var(--ddga-space-1);\n padding-inline: var(--ddga-space-2);\n font-size: var(--ddga-font-size-xs);\n font-weight: var(--ddga-font-weight-semibold);\n color: var(--ddga-text-tertiary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .ddga-combobox-separator {\n block-size: 1px;\n margin-block: var(--ddga-space-1);\n margin-inline: calc(var(--ddga-space-1) * -1);\n background-color: var(--ddga-color-border);\n }\n\n /* ─── Reduced motion + Forced colors ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-combobox-content[data-state='open'],\n .ddga-combobox-content[data-state='closed'] {\n animation: none;\n }\n }\n\n @media (forced-colors: active) {\n .ddga-combobox-trigger,\n .ddga-combobox-content {\n border: 1px solid CanvasText;\n }\n .ddga-combobox-item[data-selected='true'] {\n background-color: Highlight;\n color: HighlightText;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-date-picker__label{align-items:center;gap:var(--ddga-space-1);font-size:var(--ddga-font-size-sm);font-weight:var(--ddga-font-weight-medium);color:var(--ddga-color-foreground);display:inline-flex}.ddga-date-picker__required{color:var(--ddga-color-error);margin-inline-start:.125rem}.ddga-date-picker-trigger{align-items:center;gap:var(--ddga-space-2);border:1px solid var(--ddga-color-input);border-radius:var(--ddga-radius-md);background-color:var(--ddga-color-background);inline-size:100%;color:var(--ddga-color-foreground);text-align:start;transition:border-color .12s,box-shadow .12s;display:inline-flex}.ddga-date-picker-trigger--sm{block-size:32px;padding-inline:var(--ddga-space-3);font-size:var(--ddga-font-size-sm)}.ddga-date-picker-trigger--md{block-size:36px;padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-base)}.ddga-date-picker-trigger[data-focus-within]{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring)}.ddga-date-picker-trigger[data-disabled]{opacity:.5;cursor:not-allowed;background-color:var(--ddga-color-muted)}.ddga-date-picker-trigger--error{border-color:var(--ddga-color-error)}.ddga-date-picker-trigger--error[data-focus-within]{border-color:var(--ddga-color-error);box-shadow:0 0 0 1px var(--ddga-color-error)}.ddga-date-picker__input{font-variant-numeric:tabular-nums;direction:ltr;flex:auto;align-items:center;min-inline-size:0;display:inline-flex}.ddga-date-picker__segment{border-radius:var(--ddga-radius-sm);color:var(--ddga-color-foreground);font-variant-numeric:tabular-nums;-webkit-tap-highlight-color:transparent;outline:none;padding-block:1px;padding-inline:1px}.ddga-date-picker__segment[data-placeholder]{color:var(--ddga-text-placeholder)}.ddga-date-picker__segment[data-focused]{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-date-picker__segment[data-type=literal]{color:var(--ddga-text-tertiary);padding-inline:0}.ddga-date-picker__segment[data-type=literal][data-focused]{color:var(--ddga-text-tertiary);background-color:#0000}.ddga-date-picker__icon-button{border-radius:var(--ddga-radius-sm);block-size:1.5rem;inline-size:1.5rem;color:var(--ddga-text-secondary);cursor:pointer;background-color:#0000;border:0;outline:none;flex-shrink:0;justify-content:center;align-items:center;margin-inline-start:auto;padding:0;display:inline-flex}.ddga-date-picker__icon-button:hover{color:var(--ddga-color-foreground);background-color:var(--ddga-color-muted)}.ddga-date-picker__icon-button[data-focus-visible]{box-shadow:0 0 0 2px var(--ddga-color-ring)}.ddga-date-picker__icon-button[data-disabled]{cursor:not-allowed}.ddga-date-picker__icon{block-size:1em;inline-size:1em}.ddga-date-picker-popover{z-index:50;background-color:var(--ddga-color-background);color:var(--ddga-color-foreground);border:1px solid var(--ddga-color-border);border-radius:var(--ddga-radius-md);box-shadow:var(--ddga-shadow-md);display:flex;overflow:hidden}.ddga-date-picker-popover[data-entering]{animation:.12s cubic-bezier(.16,1,.3,1) ddga-date-picker-in}.ddga-date-picker-popover[data-exiting]{animation:80ms ease-in ddga-date-picker-out}@keyframes ddga-date-picker-in{0%{opacity:0;transform:translateY(-2px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ddga-date-picker-out{0%{opacity:1}to{opacity:0}}.ddga-date-picker-dialog{min-block-size:0;max-block-size:100%;padding:var(--ddga-space-3);box-sizing:border-box;outline:none;flex:auto;overflow:auto}.ddga-date-picker-toggle{inline-size:100%;background-color:var(--ddga-color-muted);border-radius:var(--ddga-radius-md);margin-block-end:var(--ddga-space-3);padding:2px;display:inline-flex}.ddga-date-picker-toggle__button{padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-2);border-radius:calc(var(--ddga-radius-md) - 2px);color:var(--ddga-text-secondary);font:inherit;font-size:var(--ddga-font-size-sm);font-weight:var(--ddga-font-weight-medium);cursor:pointer;background-color:#0000;border:0;outline:none;flex:1 1 0;transition:background-color .12s,color .12s}.ddga-date-picker-toggle__button[data-active]{background-color:var(--ddga-color-background);color:var(--ddga-color-foreground);box-shadow:0 1px 2px #00000014}.ddga-date-picker-toggle__button:focus-visible{box-shadow:0 0 0 2px var(--ddga-color-ring)}.ddga-date-picker-calendar{inline-size:min(100%,280px)}.ddga-date-picker-calendar__header{justify-content:space-between;align-items:center;gap:var(--ddga-space-2);margin-block-end:var(--ddga-space-2);display:flex}.ddga-date-picker-calendar__nav{border-radius:var(--ddga-radius-sm);block-size:1.75rem;inline-size:1.75rem;color:var(--ddga-text-secondary);cursor:pointer;background-color:#0000;border:0;outline:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ddga-date-picker-calendar__nav:hover{background-color:var(--ddga-color-muted);color:var(--ddga-color-foreground)}.ddga-date-picker-calendar__nav[data-focus-visible]{box-shadow:0 0 0 2px var(--ddga-color-ring)}.ddga-date-picker-calendar__nav[data-disabled]{color:var(--ddga-text-tertiary);cursor:not-allowed}.ddga-date-picker-calendar__heading{font-size:var(--ddga-font-size-sm);font-weight:var(--ddga-font-weight-semibold);text-align:center;color:var(--ddga-color-foreground);flex:auto;margin:0}.ddga-date-picker-calendar__nav-selects{justify-content:center;align-items:center;gap:var(--ddga-space-1);flex:auto;min-inline-size:0;display:inline-flex}.ddga-date-picker-calendar__select{appearance:none;border-radius:var(--ddga-radius-sm);padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-2);font:inherit;font-size:var(--ddga-font-size-sm);font-weight:var(--ddga-font-weight-semibold);color:var(--ddga-color-foreground);cursor:pointer;font-variant-numeric:tabular-nums;text-align:center;text-align-last:center;background-color:#0000;border:1px solid #0000;outline:none;max-inline-size:100%;margin:0}.ddga-date-picker-calendar__select:hover{background-color:var(--ddga-color-muted)}.ddga-date-picker-calendar__select:focus-visible{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring)}.ddga-date-picker-calendar__select option{color:canvastext;background-color:canvas}.ddga-date-picker-calendar__year-select{min-inline-size:4.5ch}.ddga-date-picker-calendar__grid{border-collapse:collapse;inline-size:100%}.ddga-date-picker-calendar__weekday{padding-block:var(--ddga-space-1);font-size:var(--ddga-font-size-xs);font-weight:var(--ddga-font-weight-medium);color:var(--ddga-text-tertiary);text-align:center}.ddga-date-picker-calendar__cell{text-align:center;block-size:2rem;inline-size:2rem;font-size:var(--ddga-font-size-sm);font-variant-numeric:tabular-nums;color:var(--ddga-color-foreground);border-radius:var(--ddga-radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;outline:none;flex-direction:column;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.ddga-date-picker-calendar__cell[data-today]:not([data-selected]){box-shadow:inset 0 0 0 1.5px var(--ddga-color-primary);color:var(--ddga-color-primary);font-weight:var(--ddga-font-weight-semibold)}.ddga-date-picker-calendar__cell-primary{font-size:inherit;line-height:1}.ddga-date-picker-calendar__cell-secondary{color:var(--ddga-text-tertiary);margin-block-start:1px;font-size:.625rem;line-height:1}.ddga-date-picker-calendar__cell[data-selected] .ddga-date-picker-calendar__cell-secondary{color:inherit;opacity:.85}.ddga-date-picker-calendar__cell[data-hovered]:not([data-disabled]):not([data-selected]){background-color:var(--ddga-color-muted)}.ddga-date-picker-calendar__cell[data-focus-visible]{box-shadow:inset 0 0 0 2px var(--ddga-color-ring)}.ddga-date-picker-calendar__cell[data-selected]{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-date-picker-calendar__cell[data-disabled],.ddga-date-picker-calendar__cell[data-unavailable]{color:var(--ddga-text-tertiary);cursor:not-allowed}.ddga-date-picker-calendar__cell[data-outside-month]{color:var(--ddga-text-tertiary)}@media (prefers-reduced-motion:reduce){.ddga-date-picker-trigger,.ddga-date-picker-toggle__button{transition:none}.ddga-date-picker-popover[data-entering],.ddga-date-picker-popover[data-exiting]{animation:none}}@media (forced-colors:active){.ddga-date-picker-trigger,.ddga-date-picker-popover{border:1px solid canvastext}.ddga-date-picker-trigger[data-focus-within]{outline-offset:1px;outline:2px solid highlight}.ddga-date-picker-calendar__cell[data-selected]{color:highlighttext;background-color:highlight}.ddga-date-picker-calendar__cell[data-focus-visible]{outline-offset:1px;outline:2px solid highlight}.ddga-date-picker-toggle__button[data-active]{color:highlighttext;background-color:highlight}}}
2
+ /*# sourceMappingURL=date-picker.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAME,yMAQA,sFAUA,sUAeA,oHAKA,sHAMA,6HAKA,gHAMA,sEAGA,sIAOA,4IAYA,8NAUA,gFAIA,+HAQA,+FAIA,mHAOA,oTAgBA,iHAIA,+FAGA,iEAGA,uDAaA,kQAYA,qGAGA,oFAGA,+HAUA,2DAiBA,qJAYA,4LAQA,qYAiBA,8JAKA,2FAMA,uDAIA,8JAQA,gRAcA,kHAIA,gGAGA,kGAUA,4LAeA,0JASA,+cAoBA,kFAGA,iIAMA,mFAIA,8DAKA,2EAKA,sMAYA,0bAuBA,sMASA,yEAIA,kIAMA,qHAIA,kIAGA,uGAGA,sIAIA,sJAUA,qFAMA,uCACE,2EAIA,iGAQF,8BACE,gFAIA,4FAIA,+FAIA,oGAIA","sources":["src/components/date-picker.css"],"sourcesContent":["@layer ddga-components {\n /* Wrapper (.ddga-field) + helper/error (.ddga-field__message) are shared\n — see field.css. Only DatePicker-specific styles live here. */\n\n /* ─── Label + required ─── */\n\n .ddga-date-picker__label {\n display: inline-flex;\n align-items: center;\n gap: var(--ddga-space-1);\n font-size: var(--ddga-font-size-sm);\n font-weight: var(--ddga-font-weight-medium);\n color: var(--ddga-color-foreground);\n }\n .ddga-date-picker__required {\n color: var(--ddga-color-error);\n margin-inline-start: 0.125rem;\n }\n\n /* ─── Trigger (react-aria Group, hosts segments + icon button) ─── */\n\n /* Heights match Input/Select so DatePicker triggers line up in a form row.\n The Group itself is the border/focus container — react-aria emits\n data-focus-within when any segment or the icon button has focus. */\n .ddga-date-picker-trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--ddga-space-2);\n inline-size: 100%;\n border: 1px solid var(--ddga-color-input);\n border-radius: var(--ddga-radius-md);\n background-color: var(--ddga-color-background);\n color: var(--ddga-color-foreground);\n text-align: start;\n transition:\n border-color 120ms ease,\n box-shadow 120ms ease;\n }\n\n .ddga-date-picker-trigger--sm {\n block-size: 32px;\n padding-inline: var(--ddga-space-3);\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-date-picker-trigger--md {\n block-size: 36px;\n padding-inline: var(--ddga-space-4);\n font-size: var(--ddga-font-size-base);\n }\n\n .ddga-date-picker-trigger[data-focus-within] {\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n\n .ddga-date-picker-trigger[data-disabled] {\n opacity: 0.5;\n cursor: not-allowed;\n background-color: var(--ddga-color-muted);\n }\n\n .ddga-date-picker-trigger--error {\n border-color: var(--ddga-color-error);\n }\n .ddga-date-picker-trigger--error[data-focus-within] {\n border-color: var(--ddga-color-error);\n box-shadow: 0 0 0 1px var(--ddga-color-error);\n }\n\n /* ─── DateInput + Segments ─── */\n\n .ddga-date-picker__input {\n display: inline-flex;\n align-items: center;\n flex: 1 1 auto;\n min-inline-size: 0;\n /* Force LTR segment direction even in RTL UI so dates always read\n day-month-year left-to-right (matches react-aria's recommended UX\n for numeric date entry — keeps mental model stable across locales). */\n direction: ltr;\n font-variant-numeric: tabular-nums;\n }\n\n .ddga-date-picker__segment {\n padding-block: 1px;\n padding-inline: 1px;\n border-radius: var(--ddga-radius-sm);\n color: var(--ddga-color-foreground);\n font-variant-numeric: tabular-nums;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n .ddga-date-picker__segment[data-placeholder] {\n color: var(--ddga-text-placeholder);\n }\n\n .ddga-date-picker__segment[data-focused] {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n\n /* Non-editable segments (literal separators like \"/\" or \"-\") shouldn't\n show the focus background even if Tab lands on them — react-aria marks\n them with data-type=\"literal\". */\n .ddga-date-picker__segment[data-type='literal'] {\n padding-inline: 0;\n color: var(--ddga-text-tertiary);\n }\n .ddga-date-picker__segment[data-type='literal'][data-focused] {\n background-color: transparent;\n color: var(--ddga-text-tertiary);\n }\n\n /* ─── Calendar icon button (popover trigger) ─── */\n\n .ddga-date-picker__icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n inline-size: 1.5rem;\n block-size: 1.5rem;\n margin-inline-start: auto;\n padding: 0;\n border: 0;\n border-radius: var(--ddga-radius-sm);\n background-color: transparent;\n color: var(--ddga-text-secondary);\n cursor: pointer;\n outline: none;\n }\n .ddga-date-picker__icon-button:hover {\n color: var(--ddga-color-foreground);\n background-color: var(--ddga-color-muted);\n }\n .ddga-date-picker__icon-button[data-focus-visible] {\n box-shadow: 0 0 0 2px var(--ddga-color-ring);\n }\n .ddga-date-picker__icon-button[data-disabled] {\n cursor: not-allowed;\n }\n .ddga-date-picker__icon {\n inline-size: 1em;\n block-size: 1em;\n }\n\n /* ─── Popover (the floating panel) ─── */\n\n /* react-aria's useOverlayPosition sets `max-height` inline on the popover\n based on the space available between the trigger and the viewport edge\n (minus `containerPadding`). We pair that with `overflow: auto` on the\n inner Dialog so when the calendar can't fit (short iframes, dual-calendar\n mode), the content scrolls instead of being clipped. `overflow: hidden`\n stays on the popover so the rounded corners crop animation bleed. */\n .ddga-date-picker-popover {\n z-index: 50;\n display: flex;\n background-color: var(--ddga-color-background);\n color: var(--ddga-color-foreground);\n border: 1px solid var(--ddga-color-border);\n border-radius: var(--ddga-radius-md);\n box-shadow: var(--ddga-shadow-md);\n overflow: hidden;\n }\n\n /* react-aria emits data-entering / data-exiting during transitions. */\n .ddga-date-picker-popover[data-entering] {\n animation: ddga-date-picker-in 120ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n .ddga-date-picker-popover[data-exiting] {\n animation: ddga-date-picker-out 80ms ease-in;\n }\n @keyframes ddga-date-picker-in {\n from {\n opacity: 0;\n transform: translateY(-2px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n @keyframes ddga-date-picker-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n /* ─── Dialog (panel padding + scroll container) ─── */\n\n /* `max-block-size: 100%` + `overflow: auto` make the Dialog the scroll\n container inside the popover. The Popover constrains height via its\n react-aria-set `max-height`; the Dialog respects that bound and scrolls\n internally when the calendar grid + toggle exceed it. `min-block-size: 0`\n is the flex-child trick that lets the scroll container actually shrink\n (otherwise it grows to content). */\n .ddga-date-picker-dialog {\n flex: 1 1 auto;\n min-block-size: 0;\n max-block-size: 100%;\n padding: var(--ddga-space-3);\n outline: none;\n overflow: auto;\n box-sizing: border-box;\n }\n\n /* ─── Calendar-system toggle (Gregorian ↔ Hijri) ─── */\n\n .ddga-date-picker-toggle {\n display: inline-flex;\n inline-size: 100%;\n margin-block-end: var(--ddga-space-3);\n padding: 2px;\n background-color: var(--ddga-color-muted);\n border-radius: var(--ddga-radius-md);\n }\n .ddga-date-picker-toggle__button {\n flex: 1 1 0;\n padding-block: var(--ddga-space-1);\n padding-inline: var(--ddga-space-2);\n border: 0;\n border-radius: calc(var(--ddga-radius-md) - 2px);\n background-color: transparent;\n color: var(--ddga-text-secondary);\n font: inherit;\n font-size: var(--ddga-font-size-sm);\n font-weight: var(--ddga-font-weight-medium);\n cursor: pointer;\n outline: none;\n transition:\n background-color 120ms ease,\n color 120ms ease;\n }\n .ddga-date-picker-toggle__button[data-active] {\n background-color: var(--ddga-color-background);\n color: var(--ddga-color-foreground);\n box-shadow: 0 1px 2px rgb(0 0 0 / 0.08);\n }\n .ddga-date-picker-toggle__button:focus-visible {\n box-shadow: 0 0 0 2px var(--ddga-color-ring);\n }\n\n /* ─── Calendar grid ─── */\n\n .ddga-date-picker-calendar {\n inline-size: min(100%, 280px);\n }\n\n .ddga-date-picker-calendar__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--ddga-space-2);\n margin-block-end: var(--ddga-space-2);\n }\n\n .ddga-date-picker-calendar__nav {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1.75rem;\n block-size: 1.75rem;\n padding: 0;\n border: 0;\n border-radius: var(--ddga-radius-sm);\n background-color: transparent;\n color: var(--ddga-text-secondary);\n cursor: pointer;\n outline: none;\n }\n .ddga-date-picker-calendar__nav:hover {\n background-color: var(--ddga-color-muted);\n color: var(--ddga-color-foreground);\n }\n .ddga-date-picker-calendar__nav[data-focus-visible] {\n box-shadow: 0 0 0 2px var(--ddga-color-ring);\n }\n .ddga-date-picker-calendar__nav[data-disabled] {\n color: var(--ddga-text-tertiary);\n cursor: not-allowed;\n }\n /* RTL chevron direction is handled in DatePicker.tsx by swapping the icon\n components themselves (PrevChevron / NextChevron based on `dgaCtx.dir`)\n — this is more robust than a CSS scaleX flip because it doesn't rely on\n the popover portal correctly inheriting the `dir` attribute from the\n DgaProvider root. */\n\n .ddga-date-picker-calendar__heading {\n flex: 1 1 auto;\n margin: 0;\n font-size: var(--ddga-font-size-sm);\n font-weight: var(--ddga-font-weight-semibold);\n text-align: center;\n color: var(--ddga-color-foreground);\n }\n\n /* ─── Month + Year dropdowns (CalendarNavHeader) ─── */\n\n /* Replace the static heading with two native <select>s. Native selects\n give us free keyboard support + native focus rings + screen-reader\n announcements; styling stays minimal so the platform's wheel/typeahead\n stays untouched. */\n .ddga-date-picker-calendar__nav-selects {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ddga-space-1);\n flex: 1 1 auto;\n min-inline-size: 0;\n }\n\n .ddga-date-picker-calendar__select {\n appearance: none;\n -webkit-appearance: none;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: var(--ddga-radius-sm);\n padding-block: var(--ddga-space-1);\n padding-inline: var(--ddga-space-2);\n margin: 0;\n font: inherit;\n font-size: var(--ddga-font-size-sm);\n font-weight: var(--ddga-font-weight-semibold);\n color: var(--ddga-color-foreground);\n cursor: pointer;\n font-variant-numeric: tabular-nums;\n outline: none;\n text-align: center;\n text-align-last: center;\n max-inline-size: 100%;\n }\n .ddga-date-picker-calendar__select:hover {\n background-color: var(--ddga-color-muted);\n }\n .ddga-date-picker-calendar__select:focus-visible {\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n /* Native option elements pick up the OS theme; can't fully style them, but\n ensure the popup respects RTL on supporting browsers. */\n .ddga-date-picker-calendar__select option {\n color: CanvasText;\n background-color: Canvas;\n }\n .ddga-date-picker-calendar__year-select {\n /* The year string is short (4 digits) — give it just enough width. */\n min-inline-size: 4.5ch;\n }\n\n .ddga-date-picker-calendar__grid {\n inline-size: 100%;\n border-collapse: collapse;\n }\n\n .ddga-date-picker-calendar__weekday {\n padding-block: var(--ddga-space-1);\n font-size: var(--ddga-font-size-xs);\n font-weight: var(--ddga-font-weight-medium);\n color: var(--ddga-text-tertiary);\n text-align: center;\n }\n\n /* CalendarCell renders the inner role=\"button\" div; react-aria wires the\n <td>. Style the inner element so the focus ring + selected background\n stay inside the cell footprint. Flex column so a secondary day number\n (when `showSecondaryCalendar` is on) stacks neatly under the primary. */\n .ddga-date-picker-calendar__cell {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n inline-size: 2rem;\n block-size: 2rem;\n padding: 0;\n text-align: center;\n font-size: var(--ddga-font-size-sm);\n font-variant-numeric: tabular-nums;\n line-height: 1;\n color: var(--ddga-color-foreground);\n border-radius: var(--ddga-radius-sm);\n cursor: pointer;\n outline: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n /* Today ring — visible whenever a cell represents \"today\" in the displayed\n calendar (react-aria emits data-today). Inset to stay inside the cell;\n selected wins by re-painting the background. */\n .ddga-date-picker-calendar__cell[data-today]:not([data-selected]) {\n box-shadow: inset 0 0 0 1.5px var(--ddga-color-primary);\n color: var(--ddga-color-primary);\n font-weight: var(--ddga-font-weight-semibold);\n }\n\n /* Dual-calendar layout: the primary day stays at the normal size; the\n secondary (alternate calendar) renders below at ~70% size in the muted\n text color. Selected state inherits the contrast color for both. */\n .ddga-date-picker-calendar__cell-primary {\n font-size: inherit;\n line-height: 1;\n }\n .ddga-date-picker-calendar__cell-secondary {\n margin-block-start: 1px;\n font-size: 0.625rem;\n line-height: 1;\n color: var(--ddga-text-tertiary);\n }\n .ddga-date-picker-calendar__cell[data-selected] .ddga-date-picker-calendar__cell-secondary {\n color: inherit;\n opacity: 0.85;\n }\n .ddga-date-picker-calendar__cell[data-hovered]:not([data-disabled]):not([data-selected]) {\n background-color: var(--ddga-color-muted);\n }\n .ddga-date-picker-calendar__cell[data-focus-visible] {\n box-shadow: inset 0 0 0 2px var(--ddga-color-ring);\n }\n .ddga-date-picker-calendar__cell[data-selected] {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n .ddga-date-picker-calendar__cell[data-disabled],\n .ddga-date-picker-calendar__cell[data-unavailable] {\n color: var(--ddga-text-tertiary);\n cursor: not-allowed;\n }\n /* Outside-month cells are fully clickable in react-aria — selecting one\n navigates the visible month forward/back. Use a softer text color (no\n opacity reduction) so they read as low-emphasis-but-active peers, not\n disabled. Hover/focus rules above continue to apply because we don't\n scope them to \"inside month only\". */\n .ddga-date-picker-calendar__cell[data-outside-month] {\n color: var(--ddga-text-tertiary);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-date-picker-trigger,\n .ddga-date-picker-toggle__button {\n transition: none;\n }\n .ddga-date-picker-popover[data-entering],\n .ddga-date-picker-popover[data-exiting] {\n animation: none;\n }\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-date-picker-trigger,\n .ddga-date-picker-popover {\n border: 1px solid CanvasText;\n }\n .ddga-date-picker-trigger[data-focus-within] {\n outline: 2px solid Highlight;\n outline-offset: 1px;\n }\n .ddga-date-picker-calendar__cell[data-selected] {\n background-color: Highlight;\n color: HighlightText;\n }\n .ddga-date-picker-calendar__cell[data-focus-visible] {\n outline: 2px solid Highlight;\n outline-offset: 1px;\n }\n .ddga-date-picker-toggle__button[data-active] {\n background-color: Highlight;\n color: HighlightText;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-description-list{--ddga-dl-term-width:12rem;color:var(--ddga-text-primary);font-size:var(--ddga-font-size-base);margin:0}.ddga-description-list__item{gap:var(--ddga-space-2) var(--ddga-space-4);padding-block:var(--ddga-space-2);display:flex}.ddga-description-list__term{color:var(--ddga-text-secondary);font-weight:var(--ddga-font-weight-medium);line-height:1.5}.ddga-description-list__details{color:var(--ddga-text-primary);margin:0;line-height:1.5}.ddga-description-list--horizontal .ddga-description-list__item{flex-direction:row;align-items:baseline}.ddga-description-list--horizontal .ddga-description-list__term{inline-size:var(--ddga-dl-term-width);flex:none}.ddga-description-list--horizontal .ddga-description-list__details{flex:auto;min-inline-size:0}@media (max-width:480px){.ddga-description-list--horizontal .ddga-description-list__item{gap:var(--ddga-space-1);flex-direction:column}.ddga-description-list--horizontal .ddga-description-list__term{inline-size:auto}}.ddga-description-list--vertical .ddga-description-list__item{gap:var(--ddga-space-1);flex-direction:column}.ddga-description-list--divided .ddga-description-list__item{border-block-end:1px solid var(--ddga-color-border)}.ddga-description-list--divided .ddga-description-list__item:last-child{border-block-end:0}}
2
+ /*# sourceMappingURL=description-list.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAKE,+HASA,wHAMA,yHAMA,wFAQA,wGAKA,gHAKA,+FAMA,yBACE,8GAIA,kFAOF,4GAOA,iHAGA","sources":["src/components/description-list.css"],"sourcesContent":["@layer ddga-components {\n /* Semantic <dl>/<dt>/<dd> key–value list. Layout cascades from the root\n variant to the rows; logical properties keep label/value alignment\n correct in RTL. */\n\n .ddga-description-list {\n /* Term column width in horizontal layout; override per instance. */\n --ddga-dl-term-width: 12rem;\n\n margin: 0;\n color: var(--ddga-text-primary);\n font-size: var(--ddga-font-size-base);\n }\n\n .ddga-description-list__item {\n display: flex;\n gap: var(--ddga-space-2) var(--ddga-space-4);\n padding-block: var(--ddga-space-2);\n }\n\n .ddga-description-list__term {\n color: var(--ddga-text-secondary);\n font-weight: var(--ddga-font-weight-medium);\n line-height: 1.5;\n }\n\n .ddga-description-list__details {\n margin: 0;\n color: var(--ddga-text-primary);\n line-height: 1.5;\n }\n\n /* ─── Horizontal: term beside details (review / summary screens) ─── */\n\n .ddga-description-list--horizontal .ddga-description-list__item {\n flex-direction: row;\n align-items: baseline;\n }\n\n .ddga-description-list--horizontal .ddga-description-list__term {\n flex: none;\n inline-size: var(--ddga-dl-term-width);\n }\n\n .ddga-description-list--horizontal .ddga-description-list__details {\n flex: 1 1 auto;\n min-inline-size: 0;\n }\n\n /* Stack rows on narrow viewports so labels don't crush the values. */\n @media (max-width: 480px) {\n .ddga-description-list--horizontal .ddga-description-list__item {\n flex-direction: column;\n gap: var(--ddga-space-1);\n }\n .ddga-description-list--horizontal .ddga-description-list__term {\n inline-size: auto;\n }\n }\n\n /* ─── Vertical: term above details ─── */\n\n .ddga-description-list--vertical .ddga-description-list__item {\n flex-direction: column;\n gap: var(--ddga-space-1);\n }\n\n /* ─── Dividers between rows ─── */\n\n .ddga-description-list--divided .ddga-description-list__item {\n border-block-end: 1px solid var(--ddga-color-border);\n }\n .ddga-description-list--divided .ddga-description-list__item:last-child {\n border-block-end: 0;\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-drawer__overlay{z-index:60;background-color:#00000080;animation-duration:.15s;animation-timing-function:ease;position:fixed;inset:0}.ddga-drawer__overlay[data-state=open]{animation-name:ddga-drawer-overlay-in}.ddga-drawer__overlay[data-state=closed]{animation-name:ddga-drawer-overlay-out}@keyframes ddga-drawer-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes ddga-drawer-overlay-out{0%{opacity:1}to{opacity:0}}.ddga-drawer{z-index:61;background-color:var(--ddga-color-card);color:var(--ddga-color-card-foreground);border:1px solid var(--ddga-color-border);box-shadow:var(--ddga-shadow-lg);flex-direction:column;animation-duration:.22s;animation-timing-function:cubic-bezier(.16,1,.3,1);display:flex;position:fixed;overflow:hidden}.ddga-drawer--start{border-inline-end:1px solid var(--ddga-color-border);border-inline-start:0;inset-block:0;inset-inline-start:0}.ddga-drawer--end{border-inline-start:1px solid var(--ddga-color-border);border-inline-end:0;inset-block:0;inset-inline-end:0}.ddga-drawer--top{border-block-end:1px solid var(--ddga-color-border);border-block-start:0;inset-block-start:0;inset-inline:0}.ddga-drawer--bottom{border-block-start:1px solid var(--ddga-color-border);border-block-end:0;inset-block-end:0;inset-inline:0}.ddga-drawer--sm.ddga-drawer--start,.ddga-drawer--sm.ddga-drawer--end{inline-size:min(320px,100vw)}.ddga-drawer--md.ddga-drawer--start,.ddga-drawer--md.ddga-drawer--end{inline-size:min(420px,100vw)}.ddga-drawer--lg.ddga-drawer--start,.ddga-drawer--lg.ddga-drawer--end{inline-size:min(560px,100vw)}.ddga-drawer--full.ddga-drawer--start,.ddga-drawer--full.ddga-drawer--end{inline-size:100vw}.ddga-drawer--sm.ddga-drawer--top,.ddga-drawer--sm.ddga-drawer--bottom{block-size:min(240px,100vh)}.ddga-drawer--md.ddga-drawer--top,.ddga-drawer--md.ddga-drawer--bottom{block-size:min(360px,100vh)}.ddga-drawer--lg.ddga-drawer--top,.ddga-drawer--lg.ddga-drawer--bottom{block-size:min(520px,100vh)}.ddga-drawer--full.ddga-drawer--top,.ddga-drawer--full.ddga-drawer--bottom{block-size:100vh}.ddga-drawer--start[data-state=open]{animation-name:ddga-drawer-slide-in-start}.ddga-drawer--start[data-state=closed]{animation-name:ddga-drawer-slide-out-start}.ddga-drawer--end[data-state=open]{animation-name:ddga-drawer-slide-in-end}.ddga-drawer--end[data-state=closed]{animation-name:ddga-drawer-slide-out-end}.ddga-drawer--top[data-state=open]{animation-name:ddga-drawer-slide-in-top}.ddga-drawer--top[data-state=closed]{animation-name:ddga-drawer-slide-out-top}.ddga-drawer--bottom[data-state=open]{animation-name:ddga-drawer-slide-in-bottom}.ddga-drawer--bottom[data-state=closed]{animation-name:ddga-drawer-slide-out-bottom}@keyframes ddga-drawer-slide-in-start{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ddga-drawer-slide-out-start{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes ddga-drawer-slide-in-end{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes ddga-drawer-slide-out-end{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes ddga-drawer-slide-in-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes ddga-drawer-slide-out-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes ddga-drawer-slide-in-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes ddga-drawer-slide-out-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}[dir=rtl] .ddga-drawer--start[data-state=open]{animation-name:ddga-drawer-slide-in-end}[dir=rtl] .ddga-drawer--start[data-state=closed]{animation-name:ddga-drawer-slide-out-end}[dir=rtl] .ddga-drawer--end[data-state=open]{animation-name:ddga-drawer-slide-in-start}[dir=rtl] .ddga-drawer--end[data-state=closed]{animation-name:ddga-drawer-slide-out-start}.ddga-drawer__header{padding:var(--ddga-space-4);border-block-end:1px solid var(--ddga-color-border);flex-shrink:0}.ddga-drawer__body{min-block-size:0;padding:var(--ddga-space-4);flex:auto;overflow-y:auto}.ddga-drawer__footer{justify-content:flex-end;align-items:center;gap:var(--ddga-space-2);padding:var(--ddga-space-4);border-block-start:1px solid var(--ddga-color-border);background-color:var(--ddga-color-muted);flex-flow:wrap;flex-shrink:0;display:flex}.ddga-drawer__title{font-size:var(--ddga-font-size-lg);font-weight:var(--ddga-font-weight-semibold);color:var(--ddga-color-foreground);margin:0;line-height:1.3}.ddga-drawer__description{margin:var(--ddga-space-1) 0 0;font-size:var(--ddga-font-size-sm);color:var(--ddga-text-secondary)}.ddga-drawer__close{border-radius:var(--ddga-radius-md);block-size:1.75rem;inline-size:1.75rem;color:var(--ddga-text-secondary);cursor:pointer;font:inherit;background-color:#0000;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;inset-block-start:var(--ddga-space-3);inset-inline-end:var(--ddga-space-3)}.ddga-drawer__close:hover{background-color:var(--ddga-color-muted);color:var(--ddga-color-foreground)}.ddga-drawer__close:focus-visible{outline:2px solid var(--ddga-color-ring);outline-offset:2px}.ddga-drawer__close>svg{block-size:1.125em;inline-size:1.125em}@media (prefers-reduced-motion:reduce){.ddga-drawer,.ddga-drawer__overlay{animation:none}}@media (forced-colors:active){.ddga-drawer{border:1px solid canvastext}}}
2
+ /*# sourceMappingURL=drawer.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAGE,0IAWA,6EAGA,gFAIA,6DAQA,8DAWA,gUAkBA,kIAMA,8HAMA,8HAMA,+HAYA,mGAIA,mGAIA,mGAIA,4FAKA,mGAIA,mGAIA,mGAIA,4FAOA,+EAGA,kFAGA,2EAGA,8EAGA,2EAGA,8EAGA,iFAGA,oFAOA,+FAQA,gGAQA,4FAQA,6FAQA,+FAQA,gGAQA,iGAQA,kGAWA,uFAGA,0FAGA,uFAGA,0FAMA,mHAMA,0FAOA,8PAaA,gKAQA,6HAQA,iWAiBA,sGAIA,8FAIA,+DAOA,uCACE,mDAQF,8BACE","sources":["src/components/drawer.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Overlay ─── */\n\n .ddga-drawer__overlay {\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n /* Same z-stack as Modal (60 overlay / 61 panel). Toast sits at 70 so it\n can announce above either. */\n z-index: 60;\n animation-duration: 150ms;\n animation-timing-function: ease;\n }\n\n .ddga-drawer__overlay[data-state='open'] {\n animation-name: ddga-drawer-overlay-in;\n }\n .ddga-drawer__overlay[data-state='closed'] {\n animation-name: ddga-drawer-overlay-out;\n }\n\n @keyframes ddga-drawer-overlay-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n @keyframes ddga-drawer-overlay-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n /* ─── Panel base ─── */\n\n .ddga-drawer {\n position: fixed;\n z-index: 61;\n display: flex;\n flex-direction: column;\n background-color: var(--ddga-color-card);\n color: var(--ddga-color-card-foreground);\n border: 1px solid var(--ddga-color-border);\n box-shadow: var(--ddga-shadow-lg);\n overflow: hidden;\n /* Animation duration applied to the panel; the per-side keyframes flip\n direction so the slide always emerges from the correct edge. */\n animation-duration: 220ms;\n animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n }\n\n /* ─── Side placements (logical — start/end flip in RTL) ─── */\n\n .ddga-drawer--start {\n inset-block: 0;\n inset-inline-start: 0;\n border-inline-end: 1px solid var(--ddga-color-border);\n border-inline-start: 0;\n }\n .ddga-drawer--end {\n inset-block: 0;\n inset-inline-end: 0;\n border-inline-start: 1px solid var(--ddga-color-border);\n border-inline-end: 0;\n }\n .ddga-drawer--top {\n inset-inline: 0;\n inset-block-start: 0;\n border-block-end: 1px solid var(--ddga-color-border);\n border-block-start: 0;\n }\n .ddga-drawer--bottom {\n inset-inline: 0;\n inset-block-end: 0;\n border-block-start: 1px solid var(--ddga-color-border);\n border-block-end: 0;\n }\n\n /* ─── Sizes ─── */\n\n /* For start/end (vertical panel), `size` controls inline-size; for top/bottom\n (horizontal panel) it controls block-size. The cascade just stacks both\n declarations and the relevant axis wins per side. */\n .ddga-drawer--sm.ddga-drawer--start,\n .ddga-drawer--sm.ddga-drawer--end {\n inline-size: min(320px, 100vw);\n }\n .ddga-drawer--md.ddga-drawer--start,\n .ddga-drawer--md.ddga-drawer--end {\n inline-size: min(420px, 100vw);\n }\n .ddga-drawer--lg.ddga-drawer--start,\n .ddga-drawer--lg.ddga-drawer--end {\n inline-size: min(560px, 100vw);\n }\n .ddga-drawer--full.ddga-drawer--start,\n .ddga-drawer--full.ddga-drawer--end {\n inline-size: 100vw;\n }\n\n .ddga-drawer--sm.ddga-drawer--top,\n .ddga-drawer--sm.ddga-drawer--bottom {\n block-size: min(240px, 100vh);\n }\n .ddga-drawer--md.ddga-drawer--top,\n .ddga-drawer--md.ddga-drawer--bottom {\n block-size: min(360px, 100vh);\n }\n .ddga-drawer--lg.ddga-drawer--top,\n .ddga-drawer--lg.ddga-drawer--bottom {\n block-size: min(520px, 100vh);\n }\n .ddga-drawer--full.ddga-drawer--top,\n .ddga-drawer--full.ddga-drawer--bottom {\n block-size: 100vh;\n }\n\n /* ─── Enter/exit per side (logical axes so RTL flips automatically) ─── */\n\n .ddga-drawer--start[data-state='open'] {\n animation-name: ddga-drawer-slide-in-start;\n }\n .ddga-drawer--start[data-state='closed'] {\n animation-name: ddga-drawer-slide-out-start;\n }\n .ddga-drawer--end[data-state='open'] {\n animation-name: ddga-drawer-slide-in-end;\n }\n .ddga-drawer--end[data-state='closed'] {\n animation-name: ddga-drawer-slide-out-end;\n }\n .ddga-drawer--top[data-state='open'] {\n animation-name: ddga-drawer-slide-in-top;\n }\n .ddga-drawer--top[data-state='closed'] {\n animation-name: ddga-drawer-slide-out-top;\n }\n .ddga-drawer--bottom[data-state='open'] {\n animation-name: ddga-drawer-slide-in-bottom;\n }\n .ddga-drawer--bottom[data-state='closed'] {\n animation-name: ddga-drawer-slide-out-bottom;\n }\n\n /* Logical-direction slides: `translate` uses physical axes, so for\n start/end we branch on `[dir]` to keep the slide direction correct in\n both LTR and RTL. */\n @keyframes ddga-drawer-slide-in-start {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n }\n @keyframes ddga-drawer-slide-out-start {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n }\n @keyframes ddga-drawer-slide-in-end {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n }\n @keyframes ddga-drawer-slide-out-end {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n }\n @keyframes ddga-drawer-slide-in-top {\n from {\n transform: translateY(-100%);\n }\n to {\n transform: translateY(0);\n }\n }\n @keyframes ddga-drawer-slide-out-top {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(-100%);\n }\n }\n @keyframes ddga-drawer-slide-in-bottom {\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n }\n @keyframes ddga-drawer-slide-out-bottom {\n from {\n transform: translateY(0);\n }\n to {\n transform: translateY(100%);\n }\n }\n\n /* RTL: flip the horizontal slides so \"start\" (right edge in RTL) and \"end\"\n (left edge in RTL) animate from the correct side. */\n [dir='rtl'] .ddga-drawer--start[data-state='open'] {\n animation-name: ddga-drawer-slide-in-end;\n }\n [dir='rtl'] .ddga-drawer--start[data-state='closed'] {\n animation-name: ddga-drawer-slide-out-end;\n }\n [dir='rtl'] .ddga-drawer--end[data-state='open'] {\n animation-name: ddga-drawer-slide-in-start;\n }\n [dir='rtl'] .ddga-drawer--end[data-state='closed'] {\n animation-name: ddga-drawer-slide-out-start;\n }\n\n /* ─── Header / Body / Footer ─── */\n\n .ddga-drawer__header {\n flex-shrink: 0;\n padding: var(--ddga-space-4);\n border-block-end: 1px solid var(--ddga-color-border);\n }\n\n .ddga-drawer__body {\n flex: 1 1 auto;\n min-block-size: 0;\n overflow-y: auto;\n padding: var(--ddga-space-4);\n }\n\n .ddga-drawer__footer {\n flex-shrink: 0;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--ddga-space-2);\n padding: var(--ddga-space-4);\n border-block-start: 1px solid var(--ddga-color-border);\n background-color: var(--ddga-color-muted);\n }\n\n .ddga-drawer__title {\n margin: 0;\n font-size: var(--ddga-font-size-lg);\n font-weight: var(--ddga-font-weight-semibold);\n line-height: 1.3;\n color: var(--ddga-color-foreground);\n }\n\n .ddga-drawer__description {\n margin: var(--ddga-space-1) 0 0;\n font-size: var(--ddga-font-size-sm);\n color: var(--ddga-text-secondary);\n }\n\n /* ─── Corner close button ─── */\n\n .ddga-drawer__close {\n position: absolute;\n inset-block-start: var(--ddga-space-3);\n inset-inline-end: var(--ddga-space-3);\n inline-size: 1.75rem;\n block-size: 1.75rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n border: 0;\n border-radius: var(--ddga-radius-md);\n background-color: transparent;\n color: var(--ddga-text-secondary);\n cursor: pointer;\n font: inherit;\n }\n .ddga-drawer__close:hover {\n background-color: var(--ddga-color-muted);\n color: var(--ddga-color-foreground);\n }\n .ddga-drawer__close:focus-visible {\n outline: 2px solid var(--ddga-color-ring);\n outline-offset: 2px;\n }\n .ddga-drawer__close > svg {\n inline-size: 1.125em;\n block-size: 1.125em;\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-drawer,\n .ddga-drawer__overlay {\n animation: none;\n }\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-drawer {\n border: 1px solid CanvasText;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-dropdown-menu{min-inline-size:192px;max-inline-size:320px;padding:var(--ddga-space-1);background-color:var(--ddga-color-background);color:var(--ddga-color-foreground);border:1px solid var(--ddga-color-border);border-radius:var(--ddga-radius-md);box-shadow:var(--ddga-shadow-md);z-index:50;outline:none;font-family:inherit}.ddga-dropdown-menu[data-state=open]{animation:.12s cubic-bezier(.16,1,.3,1) ddga-dropdown-menu-in}.ddga-dropdown-menu[data-state=closed]{animation:80ms ease-in ddga-dropdown-menu-out}@keyframes ddga-dropdown-menu-in{0%{opacity:0;transform:translateY(-2px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes ddga-dropdown-menu-out{0%{opacity:1}to{opacity:0}}.ddga-dropdown-menu--sm{font-size:var(--ddga-font-size-sm)}.ddga-dropdown-menu--md{font-size:var(--ddga-font-size-md)}.ddga-dropdown-menu__item{align-items:center;gap:var(--ddga-space-2);inline-size:100%;padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-2);border-radius:var(--ddga-radius-sm);color:inherit;cursor:default;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;outline:none;display:flex}.ddga-dropdown-menu__item[data-highlighted]{background-color:var(--ddga-color-muted)}.ddga-dropdown-menu__item[data-disabled]{color:var(--ddga-text-tertiary);pointer-events:none}.ddga-dropdown-menu__item[data-destructive]{color:var(--ddga-color-destructive)}.ddga-dropdown-menu__item[data-destructive][data-highlighted]{background-color:var(--ddga-error-50)}.ddga-dropdown-menu__label{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-inline-size:0;overflow:hidden}.ddga-dropdown-menu__icon{block-size:1em;inline-size:1em;color:var(--ddga-text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ddga-dropdown-menu__icon>svg{block-size:1em;inline-size:1em}.ddga-dropdown-menu__shortcut{font-size:var(--ddga-font-size-xs);color:var(--ddga-text-tertiary);letter-spacing:.04em;margin-inline-start:auto}.ddga-dropdown-menu__item--checkable{padding-inline-start:calc(var(--ddga-space-2) + 1.25em);position:relative}.ddga-dropdown-menu__indicator{block-size:1em;inline-size:1em;color:var(--ddga-color-primary);justify-content:center;align-items:center;display:inline-flex;position:absolute;inset-block-start:50%;inset-inline-start:var(--ddga-space-2);transform:translateY(-50%)}.ddga-dropdown-menu__indicator-icon{block-size:.875em;inline-size:.875em}.ddga-dropdown-menu__radio-dot{border-radius:var(--ddga-radius-full);background-color:currentColor;block-size:.5em;inline-size:.5em;display:inline-block}.ddga-dropdown-menu__item--sub[data-state=open]{background-color:var(--ddga-color-muted)}.ddga-dropdown-menu__sub-chevron{block-size:1em;inline-size:1em;color:var(--ddga-text-tertiary);margin-inline-start:auto}[dir=rtl] .ddga-dropdown-menu__sub-chevron{transform:scaleX(-1)}.ddga-dropdown-menu__group-label{padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-2);font-size:var(--ddga-font-size-xs);font-weight:var(--ddga-font-weight-semibold);color:var(--ddga-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.ddga-dropdown-menu__separator{block-size:1px;margin-block:var(--ddga-space-1);margin-inline:calc(var(--ddga-space-1) * -1);background-color:var(--ddga-color-border)}@media (forced-colors:active){.ddga-dropdown-menu{border:1px solid canvastext}.ddga-dropdown-menu__item[data-highlighted]{color:highlighttext;background-color:highlight}.ddga-dropdown-menu__separator{background-color:canvastext}}@media (prefers-reduced-motion:reduce){.ddga-dropdown-menu[data-state=open],.ddga-dropdown-menu[data-state=closed]{animation:none}}}
2
+ /*# sourceMappingURL=dropdown-menu.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAGE,wUAgBA,mGAGA,qFAIA,iIAUA,6DAWA,2DAGA,2DAMA,wUAiBA,qFAIA,6FAOA,gFAGA,oGAKA,iHAQA,sKASA,6DAKA,+IASA,+GAMA,sQAYA,yEAIA,yJAYA,yFAIA,yHAQA,gEAMA,oQAUA,sKASA,8BACE,gDAGA,2FAIA,4DAOF,uCACE","sources":["src/components/dropdown-menu.css"],"sourcesContent":["@layer ddga-components {\n /* ─── Panel (Content / SubContent) ─── */\n\n .ddga-dropdown-menu {\n min-inline-size: 192px;\n max-inline-size: 320px;\n padding: var(--ddga-space-1);\n background-color: var(--ddga-color-background);\n color: var(--ddga-color-foreground);\n border: 1px solid var(--ddga-color-border);\n border-radius: var(--ddga-radius-md);\n box-shadow: var(--ddga-shadow-md);\n font-family: inherit;\n z-index: 50;\n outline: none;\n }\n\n /* Enter/exit animations follow Radix data-state. Keep them subtle so menu\n surfaces feel instantaneous (this isn't a Modal). */\n .ddga-dropdown-menu[data-state='open'] {\n animation: ddga-dropdown-menu-in 120ms cubic-bezier(0.16, 1, 0.3, 1);\n }\n .ddga-dropdown-menu[data-state='closed'] {\n animation: ddga-dropdown-menu-out 80ms ease-in;\n }\n\n @keyframes ddga-dropdown-menu-in {\n from {\n opacity: 0;\n transform: translateY(-2px) scale(0.98);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n }\n @keyframes ddga-dropdown-menu-out {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n }\n\n /* ─── Sizes ─── */\n\n .ddga-dropdown-menu--sm {\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-dropdown-menu--md {\n font-size: var(--ddga-font-size-md);\n }\n\n /* ─── Item (and CheckboxItem/RadioItem/SubTrigger share the base) ─── */\n\n .ddga-dropdown-menu__item {\n display: flex;\n align-items: center;\n gap: var(--ddga-space-2);\n inline-size: 100%;\n padding-block: var(--ddga-space-1);\n padding-inline: var(--ddga-space-2);\n border-radius: var(--ddga-radius-sm);\n color: inherit;\n cursor: default;\n user-select: none;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n /* Radix sets data-highlighted on the actively focused/hovered item — that's\n our only \"focus ring\" since the menu manages focus internally. */\n .ddga-dropdown-menu__item[data-highlighted] {\n background-color: var(--ddga-color-muted);\n }\n\n .ddga-dropdown-menu__item[data-disabled] {\n color: var(--ddga-text-tertiary);\n pointer-events: none;\n }\n\n /* Destructive: red text and a red-tinted hover. Tracks the destructive\n family the rest of the system uses. */\n .ddga-dropdown-menu__item[data-destructive] {\n color: var(--ddga-color-destructive);\n }\n .ddga-dropdown-menu__item[data-destructive][data-highlighted] {\n background-color: var(--ddga-error-50);\n }\n\n /* Inline pieces inside the row. */\n .ddga-dropdown-menu__label {\n flex: 1 1 auto;\n min-inline-size: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .ddga-dropdown-menu__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1em;\n block-size: 1em;\n flex-shrink: 0;\n color: var(--ddga-text-secondary);\n }\n .ddga-dropdown-menu__icon > svg {\n inline-size: 1em;\n block-size: 1em;\n }\n\n .ddga-dropdown-menu__shortcut {\n margin-inline-start: auto;\n font-size: var(--ddga-font-size-xs);\n color: var(--ddga-text-tertiary);\n letter-spacing: 0.04em;\n }\n\n /* ─── Indicator slot (Checkbox/Radio) ─── */\n\n .ddga-dropdown-menu__item--checkable {\n /* Reserve the indicator column even when unchecked so labels align. */\n padding-inline-start: calc(var(--ddga-space-2) + 1.25em);\n position: relative;\n }\n\n .ddga-dropdown-menu__indicator {\n position: absolute;\n inset-inline-start: var(--ddga-space-2);\n inset-block-start: 50%;\n transform: translateY(-50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1em;\n block-size: 1em;\n color: var(--ddga-color-primary);\n }\n .ddga-dropdown-menu__indicator-icon {\n inline-size: 0.875em;\n block-size: 0.875em;\n }\n .ddga-dropdown-menu__radio-dot {\n /* span is inline by default → inline-size/block-size are ignored. Force a\n sized inline-block so the filled circle actually renders. */\n display: inline-block;\n inline-size: 0.5em;\n block-size: 0.5em;\n border-radius: var(--ddga-radius-full);\n background-color: currentColor;\n }\n\n /* ─── Submenu ─── */\n\n .ddga-dropdown-menu__item--sub[data-state='open'] {\n background-color: var(--ddga-color-muted);\n }\n\n .ddga-dropdown-menu__sub-chevron {\n margin-inline-start: auto;\n inline-size: 1em;\n block-size: 1em;\n color: var(--ddga-text-tertiary);\n }\n\n /* Flip the sub-menu chevron in RTL — it should always point inline-end-ward. */\n [dir='rtl'] .ddga-dropdown-menu__sub-chevron {\n transform: scaleX(-1);\n }\n\n /* ─── Label + Separator ─── */\n\n .ddga-dropdown-menu__group-label {\n padding-block: var(--ddga-space-1);\n padding-inline: var(--ddga-space-2);\n font-size: var(--ddga-font-size-xs);\n font-weight: var(--ddga-font-weight-semibold);\n color: var(--ddga-text-tertiary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .ddga-dropdown-menu__separator {\n block-size: 1px;\n margin-block: var(--ddga-space-1);\n margin-inline: calc(var(--ddga-space-1) * -1);\n background-color: var(--ddga-color-border);\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-dropdown-menu {\n border: 1px solid CanvasText;\n }\n .ddga-dropdown-menu__item[data-highlighted] {\n background-color: Highlight;\n color: HighlightText;\n }\n .ddga-dropdown-menu__separator {\n background-color: CanvasText;\n }\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-dropdown-menu[data-state='open'],\n .ddga-dropdown-menu[data-state='closed'] {\n animation: none;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-file-upload{color:var(--ddga-text-primary)}.ddga-file-upload__label{color:var(--ddga-text-primary);font-weight:var(--ddga-font-weight-medium);font-size:var(--ddga-font-size-sm);line-height:1.4}.ddga-file-upload__required{color:var(--ddga-color-error);margin-inline-start:.125rem}.ddga-file-upload__dropzone{justify-content:center;align-items:center;gap:var(--ddga-space-2);padding:var(--ddga-space-6) var(--ddga-space-4);border:1px dashed var(--ddga-color-input);border-radius:var(--ddga-radius-md);background-color:var(--ddga-color-background);text-align:center;cursor:pointer;flex-direction:column;transition:border-color .15s,background-color .15s,box-shadow .15s;display:flex}.ddga-file-upload__dropzone:hover{border-color:var(--ddga-color-ring);background-color:var(--ddga-color-muted)}.ddga-file-upload__dropzone:focus-within{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring)}.ddga-file-upload__dropzone[data-dragging]{border-color:var(--ddga-color-primary);background-color:var(--ddga-color-muted);box-shadow:0 0 0 1px var(--ddga-color-primary);border-style:solid}.ddga-file-upload__dropzone--error{border-color:var(--ddga-color-error)}.ddga-file-upload__dropzone--error:focus-within{border-color:var(--ddga-color-error);box-shadow:0 0 0 1px var(--ddga-color-error)}.ddga-file-upload__dropzone[data-disabled]{cursor:not-allowed;opacity:.6;background-color:var(--ddga-color-muted)}.ddga-file-upload__dropzone[data-disabled]:hover{border-color:var(--ddga-color-input);border-style:dashed}.ddga-file-upload__icon{color:var(--ddga-color-muted-foreground);font-size:1.5rem}.ddga-file-upload__hint{font-size:var(--ddga-font-size-sm);color:var(--ddga-text-secondary)}.ddga-file-upload__input{clip:rect(0 0 0 0);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ddga-file-upload__list{gap:var(--ddga-space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ddga-file-upload__item{align-items:center;gap:var(--ddga-space-3);padding:var(--ddga-space-2) var(--ddga-space-3);border:1px solid var(--ddga-color-border);border-radius:var(--ddga-radius-sm);background-color:var(--ddga-color-background);display:flex}.ddga-file-upload__item-icon{color:var(--ddga-color-muted-foreground);flex:none;font-size:1.125rem;display:inline-flex}.ddga-file-upload__item[data-status=success] .ddga-file-upload__item-icon{color:var(--ddga-color-success)}.ddga-file-upload__item[data-status=error] .ddga-file-upload__item-icon{color:var(--ddga-color-error)}.ddga-file-upload__item-main{gap:var(--ddga-space-1);flex-direction:column;flex:auto;min-inline-size:0;display:flex}.ddga-file-upload__item-head{justify-content:space-between;align-items:baseline;gap:var(--ddga-space-3);display:flex}.ddga-file-upload__item-name{text-overflow:ellipsis;white-space:nowrap;font-size:var(--ddga-font-size-sm);color:var(--ddga-text-primary);overflow:hidden}.ddga-file-upload__item-meta{font-size:var(--ddga-font-size-xs);color:var(--ddga-text-secondary);font-variant-numeric:tabular-nums;flex:none}.ddga-file-upload__item-error{font-size:var(--ddga-font-size-xs);color:var(--ddga-color-error)}.ddga-file-upload__item-remove{flex:none}}
2
+ /*# sourceMappingURL=file-upload.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAIE,iDAMA,sJAOA,sFAOA,iZAkBA,+GAMA,yHAMA,6LAOA,wEAIA,kIAKA,kHAMA,0GAKA,kFAKA,4FAOA,+JAcA,sHASA,4PAUA,uHAOA,0GAIA,sGAIA,oHAQA,qHAOA,yJAQA,6IAOA,+FAKA","sources":["src/components/file-upload.css"],"sourcesContent":["@layer ddga-components {\n /* Wrapper (.ddga-field) + helper/error (.ddga-field__message) are shared\n , see field.css. Only FileUpload-specific styles live here. */\n\n .ddga-file-upload {\n color: var(--ddga-text-primary);\n }\n\n /* ─── Label ─── */\n\n .ddga-file-upload__label {\n color: var(--ddga-text-primary);\n font-weight: var(--ddga-font-weight-medium);\n font-size: var(--ddga-font-size-sm);\n line-height: 1.4;\n }\n\n .ddga-file-upload__required {\n color: var(--ddga-color-error);\n margin-inline-start: 0.125rem;\n }\n\n /* ─── Drop zone ─── */\n\n .ddga-file-upload__dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ddga-space-2);\n padding: var(--ddga-space-6) var(--ddga-space-4);\n border: 1px dashed var(--ddga-color-input);\n border-radius: var(--ddga-radius-md);\n background-color: var(--ddga-color-background);\n text-align: center;\n cursor: pointer;\n transition:\n border-color 150ms ease,\n background-color 150ms ease,\n box-shadow 150ms ease;\n }\n\n .ddga-file-upload__dropzone:hover {\n border-color: var(--ddga-color-ring);\n background-color: var(--ddga-color-muted);\n }\n\n /* Focus ring driven by the (visually hidden) input inside the zone. */\n .ddga-file-upload__dropzone:focus-within {\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n\n /* Active drag-over state. */\n .ddga-file-upload__dropzone[data-dragging] {\n border-color: var(--ddga-color-primary);\n border-style: solid;\n background-color: var(--ddga-color-muted);\n box-shadow: 0 0 0 1px var(--ddga-color-primary);\n }\n\n .ddga-file-upload__dropzone--error {\n border-color: var(--ddga-color-error);\n }\n\n .ddga-file-upload__dropzone--error:focus-within {\n border-color: var(--ddga-color-error);\n box-shadow: 0 0 0 1px var(--ddga-color-error);\n }\n\n .ddga-file-upload__dropzone[data-disabled] {\n cursor: not-allowed;\n opacity: 0.6;\n background-color: var(--ddga-color-muted);\n }\n\n .ddga-file-upload__dropzone[data-disabled]:hover {\n border-color: var(--ddga-color-input);\n border-style: dashed;\n }\n\n .ddga-file-upload__icon {\n font-size: 1.5rem;\n color: var(--ddga-color-muted-foreground);\n }\n\n .ddga-file-upload__hint {\n font-size: var(--ddga-font-size-sm);\n color: var(--ddga-text-secondary);\n }\n\n /* Visually hidden, but kept focusable so keyboard users can tab to it and\n press Space/Enter to open the picker. (Not display:none / tabindex=-1.) */\n .ddga-file-upload__input {\n position: absolute;\n inline-size: 1px;\n block-size: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* ─── File list ─── */\n\n .ddga-file-upload__list {\n display: flex;\n flex-direction: column;\n gap: var(--ddga-space-2);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .ddga-file-upload__item {\n display: flex;\n align-items: center;\n gap: var(--ddga-space-3);\n padding: var(--ddga-space-2) var(--ddga-space-3);\n border: 1px solid var(--ddga-color-border);\n border-radius: var(--ddga-radius-sm);\n background-color: var(--ddga-color-background);\n }\n\n .ddga-file-upload__item-icon {\n display: inline-flex;\n flex: none;\n font-size: 1.125rem;\n color: var(--ddga-color-muted-foreground);\n }\n\n .ddga-file-upload__item[data-status='success'] .ddga-file-upload__item-icon {\n color: var(--ddga-color-success);\n }\n\n .ddga-file-upload__item[data-status='error'] .ddga-file-upload__item-icon {\n color: var(--ddga-color-error);\n }\n\n .ddga-file-upload__item-main {\n display: flex;\n flex-direction: column;\n gap: var(--ddga-space-1);\n flex: 1 1 auto;\n min-inline-size: 0;\n }\n\n .ddga-file-upload__item-head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--ddga-space-3);\n }\n\n .ddga-file-upload__item-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--ddga-font-size-sm);\n color: var(--ddga-text-primary);\n }\n\n .ddga-file-upload__item-meta {\n flex: none;\n font-size: var(--ddga-font-size-xs);\n color: var(--ddga-text-secondary);\n font-variant-numeric: tabular-nums;\n }\n\n .ddga-file-upload__item-error {\n font-size: var(--ddga-font-size-xs);\n color: var(--ddga-color-error);\n }\n\n .ddga-file-upload__item-remove {\n flex: none;\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-number-input__label{color:var(--ddga-text-primary);font-weight:var(--ddga-font-weight-medium);font-size:var(--ddga-font-size-sm);line-height:1.4}.ddga-number-input__required{color:var(--ddga-color-error);margin-inline-start:.125rem}.ddga-number-input{border:1px solid var(--ddga-color-input);border-radius:var(--ddga-radius-sm);background-color:var(--ddga-color-background);inline-size:100%;color:var(--ddga-text-primary);align-items:stretch;transition:border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.ddga-number-input--sm{block-size:32px;font-size:var(--ddga-font-size-sm)}.ddga-number-input--md{block-size:36px;font-size:var(--ddga-font-size-base)}.ddga-number-input--lg{block-size:40px;font-size:var(--ddga-font-size-lg)}.ddga-number-input__field{block-size:100%;min-inline-size:0;color:inherit;font:inherit;text-align:center;direction:ltr;unicode-bidi:plaintext;background:0 0;border:0;outline:none;flex:auto;padding:0}.ddga-number-input__field::placeholder{color:var(--ddga-text-placeholder)}.ddga-number-input__step{background-color:var(--ddga-color-muted);inline-size:2.25rem;color:var(--ddga-text-primary);cursor:pointer;border:0;flex:none;justify-content:center;align-items:center;padding:0;font-size:1rem;transition:background-color .15s,opacity .15s;display:inline-flex}.ddga-number-input__step--decrement{border-inline-end:1px solid var(--ddga-color-input)}.ddga-number-input__step--increment{border-inline-start:1px solid var(--ddga-color-input)}.ddga-number-input__step:hover:not(:disabled){background-color:var(--ddga-color-secondary-hover)}.ddga-number-input__step:disabled{opacity:.45;cursor:not-allowed}.ddga-number-input:focus-within{border-color:var(--ddga-color-ring);box-shadow:0 0 0 1px var(--ddga-color-ring)}.ddga-number-input--error{border-color:var(--ddga-color-error)}.ddga-number-input--error:focus-within{border-color:var(--ddga-color-error);box-shadow:0 0 0 1px var(--ddga-color-error)}.ddga-number-input:has(.ddga-number-input__field:disabled){background-color:var(--ddga-color-muted);opacity:.6}@media (prefers-reduced-motion:reduce){.ddga-number-input,.ddga-number-input__step{transition:none}}@media (forced-colors:active){.ddga-number-input{border:1px solid canvastext}.ddga-number-input__step{color:buttontext;background-color:buttonface}.ddga-number-input:focus-within{outline-offset:1px;outline:2px solid highlight}}}
2
+ /*# sourceMappingURL=number-input.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAQE,uJAOA,uFAOA,4RAgBA,0EAIA,4EAIA,0EAOA,uMAgBA,0EAMA,4RAkBA,wFAGA,0FAIA,iGAIA,iEAOA,gHAOA,+DAGA,yHAOA,+GAOA,uCACE,6DAQF,8BACE,+CAGA,sEAIA","sources":["src/components/number-input.css"],"sourcesContent":["@layer ddga-components {\n /* Wrapper (.ddga-field) + helper/error (.ddga-field__message) are shared\n , see field.css. Only NumberInput-specific styles live here. Structure\n mirrors Input: a bordered control box owns border/focus/size/state; the\n − button, the field, and the + button sit inside it. */\n\n /* ─── Label ─── */\n\n .ddga-number-input__label {\n color: var(--ddga-text-primary);\n font-weight: var(--ddga-font-weight-medium);\n font-size: var(--ddga-font-size-sm);\n line-height: 1.4;\n }\n\n .ddga-number-input__required {\n color: var(--ddga-color-error);\n margin-inline-start: 0.125rem;\n }\n\n /* ─── Control (the bordered box) ─── */\n\n .ddga-number-input {\n display: flex;\n align-items: stretch;\n inline-size: 100%;\n border: 1px solid var(--ddga-color-input);\n border-radius: var(--ddga-radius-sm);\n background-color: var(--ddga-color-background);\n color: var(--ddga-text-primary);\n overflow: hidden;\n transition:\n border-color 150ms ease,\n box-shadow 150ms ease;\n }\n\n /* ─── Sizes (heights match Input) ─── */\n\n .ddga-number-input--sm {\n block-size: 32px;\n font-size: var(--ddga-font-size-sm);\n }\n .ddga-number-input--md {\n block-size: 36px;\n font-size: var(--ddga-font-size-base);\n }\n .ddga-number-input--lg {\n block-size: 40px;\n font-size: var(--ddga-font-size-lg);\n }\n\n /* ─── Field (the actual <input>) ─── */\n\n .ddga-number-input__field {\n flex: 1 1 auto;\n min-inline-size: 0;\n block-size: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: center;\n outline: none;\n /* Keep digits Latin + LTR even inside an RTL form (DGA convention). */\n direction: ltr;\n unicode-bidi: plaintext;\n }\n\n .ddga-number-input__field::placeholder {\n color: var(--ddga-text-placeholder);\n }\n\n /* ─── Stepper buttons (− / +) ─── */\n\n .ddga-number-input__step {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n inline-size: 2.25rem;\n padding: 0;\n border: 0;\n background-color: var(--ddga-color-muted);\n color: var(--ddga-text-primary);\n font-size: 1rem;\n cursor: pointer;\n transition:\n background-color 150ms ease,\n opacity 150ms ease;\n }\n\n /* Logical dividers between the buttons and the field (RTL-safe). */\n .ddga-number-input__step--decrement {\n border-inline-end: 1px solid var(--ddga-color-input);\n }\n .ddga-number-input__step--increment {\n border-inline-start: 1px solid var(--ddga-color-input);\n }\n\n .ddga-number-input__step:hover:not(:disabled) {\n background-color: var(--ddga-color-secondary-hover);\n }\n\n .ddga-number-input__step:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n }\n\n /* ─── Focus (ring on the control via :focus-within) ─── */\n\n .ddga-number-input:focus-within {\n border-color: var(--ddga-color-ring);\n box-shadow: 0 0 0 1px var(--ddga-color-ring);\n }\n\n /* ─── Error ─── */\n\n .ddga-number-input--error {\n border-color: var(--ddga-color-error);\n }\n .ddga-number-input--error:focus-within {\n border-color: var(--ddga-color-error);\n box-shadow: 0 0 0 1px var(--ddga-color-error);\n }\n\n /* ─── Disabled ─── */\n\n .ddga-number-input:has(.ddga-number-input__field:disabled) {\n background-color: var(--ddga-color-muted);\n opacity: 0.6;\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-number-input,\n .ddga-number-input__step {\n transition: none;\n }\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-number-input {\n border: 1px solid CanvasText;\n }\n .ddga-number-input__step {\n background-color: ButtonFace;\n color: ButtonText;\n }\n .ddga-number-input:focus-within {\n outline: 2px solid Highlight;\n outline-offset: 1px;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-pagination{color:var(--ddga-text-primary);font-family:inherit;line-height:1.4}.ddga-pagination__content{align-items:center;gap:var(--ddga-space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.ddga-pagination__item{display:inline-flex}.ddga-pagination__link{block-size:2rem;min-inline-size:2rem;padding-inline:var(--ddga-space-2);border-radius:var(--ddga-radius-sm);color:var(--ddga-text-secondary);cursor:pointer;background-color:#0000;border:1px solid #0000;justify-content:center;align-items:center;font-family:inherit;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-flex}.ddga-pagination__link:hover{background-color:var(--ddga-color-muted);color:var(--ddga-text-primary)}.ddga-pagination__link:focus-visible{box-shadow:0 0 0 2px var(--ddga-color-ring);outline:none}.ddga-pagination__link--active{background-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground);border-color:var(--ddga-color-primary)}.ddga-pagination__link--active:hover{background-color:var(--ddga-color-primary-hover);color:var(--ddga-color-primary-foreground)}.ddga-pagination__nav{gap:var(--ddga-space-1);padding-inline:var(--ddga-space-3)}.ddga-pagination__nav-icon{block-size:1em;inline-size:1em}.ddga-pagination__nav-icon--previous{transform:scaleX(-1)}[dir=rtl] .ddga-pagination__nav-icon--previous{transform:scaleX(1)}[dir=rtl] .ddga-pagination__nav-icon--next{transform:scaleX(-1)}.ddga-pagination__ellipsis{block-size:2rem;min-inline-size:2rem;color:var(--ddga-text-tertiary);justify-content:center;align-items:center;display:inline-flex}.ddga-pagination__ellipsis>svg{block-size:1em;inline-size:1em}.ddga-pagination--sm .ddga-pagination__link,.ddga-pagination--sm .ddga-pagination__ellipsis{block-size:1.75rem;min-inline-size:1.75rem;font-size:var(--ddga-font-size-xs)}.ddga-pagination--md .ddga-pagination__link,.ddga-pagination--md .ddga-pagination__ellipsis{block-size:2rem;min-inline-size:2rem;font-size:var(--ddga-font-size-sm)}@media (prefers-reduced-motion:reduce){.ddga-pagination__link{transition:none}}@media (forced-colors:active){.ddga-pagination__link{color:linktext;border:1px solid canvastext}.ddga-pagination__link--active{color:highlighttext;background-color:highlight;border-color:highlight}.ddga-pagination__link:focus-visible{outline-offset:2px;outline:2px solid highlight}}}
2
+ /*# sourceMappingURL=pagination.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAQE,oFAQA,oIAYA,2CAMA,sYAoBA,qGAKA,8FAOA,4JAMA,iIAOA,iFAKA,0DASA,0DAGA,mEAGA,gEAMA,8JASA,8DAOA,0KAOA,oKASA,uCACE,wCAOF,8BACE,kEAIA,qGAKA","sources":["src/components/pagination.css"],"sourcesContent":["@layer ddga-components {\n /* Size lives on the root (.ddga-pagination--{sm,md}); all per-part visuals\n cascade through descendant selectors. Direction-encoded chevron icons\n flip in RTL via `[dir='rtl']`, with the previous icon double-flipped so\n it points \"back\" in either direction. */\n\n /* ─── Root (nav) ─── */\n\n .ddga-pagination {\n color: var(--ddga-text-primary);\n font-family: inherit;\n line-height: 1.4;\n }\n\n /* ─── Content (ul) ─── */\n\n .ddga-pagination__content {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--ddga-space-1);\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n /* ─── Item (li) ─── */\n\n .ddga-pagination__item {\n display: inline-flex;\n }\n\n /* ─── Link (a) ─── */\n\n .ddga-pagination__link {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-inline-size: 2rem;\n block-size: 2rem;\n padding-inline: var(--ddga-space-2);\n border: 1px solid transparent;\n border-radius: var(--ddga-radius-sm);\n background-color: transparent;\n color: var(--ddga-text-secondary);\n font-family: inherit;\n text-decoration: none;\n cursor: pointer;\n transition:\n background-color 150ms ease,\n color 150ms ease,\n border-color 150ms ease;\n }\n\n .ddga-pagination__link:hover {\n background-color: var(--ddga-color-muted);\n color: var(--ddga-text-primary);\n }\n\n .ddga-pagination__link:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px var(--ddga-color-ring);\n }\n\n /* ─── Active link (current page) ─── */\n\n .ddga-pagination__link--active {\n background-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n border-color: var(--ddga-color-primary);\n }\n\n .ddga-pagination__link--active:hover {\n background-color: var(--ddga-color-primary-hover);\n color: var(--ddga-color-primary-foreground);\n }\n\n /* ─── Prev / Next ─── */\n\n .ddga-pagination__nav {\n gap: var(--ddga-space-1);\n padding-inline: var(--ddga-space-3);\n }\n\n .ddga-pagination__nav-icon {\n inline-size: 1em;\n block-size: 1em;\n }\n\n /* Direction logic: chevron points \"forward\" (inline-end). The Previous\n icon is flipped 180° in LTR so it points back; in RTL the flip is\n un-done (RTL \"back\" = visual right = unflipped chevron). The Next icon\n is flipped only in RTL because RTL \"forward\" = visual left. */\n .ddga-pagination__nav-icon--previous {\n transform: scaleX(-1);\n }\n [dir='rtl'] .ddga-pagination__nav-icon--previous {\n transform: scaleX(1);\n }\n [dir='rtl'] .ddga-pagination__nav-icon--next {\n transform: scaleX(-1);\n }\n\n /* ─── Ellipsis ─── */\n\n .ddga-pagination__ellipsis {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-inline-size: 2rem;\n block-size: 2rem;\n color: var(--ddga-text-tertiary);\n }\n\n .ddga-pagination__ellipsis > svg {\n inline-size: 1em;\n block-size: 1em;\n }\n\n /* ─── Sizes (cascade from root) ─── */\n\n .ddga-pagination--sm .ddga-pagination__link,\n .ddga-pagination--sm .ddga-pagination__ellipsis {\n min-inline-size: 1.75rem;\n block-size: 1.75rem;\n font-size: var(--ddga-font-size-xs);\n }\n\n .ddga-pagination--md .ddga-pagination__link,\n .ddga-pagination--md .ddga-pagination__ellipsis {\n min-inline-size: 2rem;\n block-size: 2rem;\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-pagination__link {\n transition: none;\n }\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-pagination__link {\n color: LinkText;\n border: 1px solid CanvasText;\n }\n .ddga-pagination__link--active {\n color: HighlightText;\n background-color: Highlight;\n border-color: Highlight;\n }\n .ddga-pagination__link:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 2px;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +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[data-state=indeterminate] .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)}@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{transition:none}}}
2
+ /*# sourceMappingURL=progress.css.map */
@@ -0,0 +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,yIAKA,0JAKA,oEAMA,6OAYA,6EAGA,8FAKA,uCACE,iKAIA","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 .ddga-circular-progress[data-state='indeterminate'] .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 /* 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 transition: none;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-rating__label{color:var(--ddga-text-primary);font-weight:var(--ddga-font-weight-medium);font-size:var(--ddga-font-size-sm);line-height:1.4;display:block}.ddga-rating{--ddga-rating-color:var(--ddga-gold-500);--ddga-rating-empty:var(--ddga-color-border);align-items:center;gap:var(--ddga-space-1);color:var(--ddga-rating-empty);inline-size:fit-content;display:inline-flex}.ddga-rating--sm{font-size:1rem}.ddga-rating--md{font-size:1.5rem}.ddga-rating--lg{font-size:2rem}.ddga-rating[role=slider]:focus-visible{outline:2px solid var(--ddga-color-ring);outline-offset:2px;border-radius:var(--ddga-radius-sm)}.ddga-rating[data-disabled]{opacity:.5}.ddga-rating--error{--ddga-rating-empty:var(--ddga-color-error)}.ddga-rating[role=slider]:not([data-disabled]){cursor:pointer}.ddga-rating__star{line-height:0;display:inline-flex;position:relative}.ddga-rating__star-bg{color:var(--ddga-rating-empty);display:block}.ddga-rating__star-fill{inline-size:0;color:var(--ddga-rating-color);line-height:0;position:absolute;inset-block:0;inset-inline-start:0;overflow:hidden}.ddga-rating__star[data-fill=half] .ddga-rating__star-fill{inline-size:50%}.ddga-rating__star[data-fill=full] .ddga-rating__star-fill{inline-size:100%}.ddga-rating__star-fg{display:block}@media (forced-colors:active){.ddga-rating__star-bg{color:canvastext}.ddga-rating__star-fill{color:highlight}.ddga-rating[role=slider]:focus-visible{outline:2px solid highlight}}}
2
+ /*# sourceMappingURL=rating.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAQE,+JAUA,yNAYA,gCAGA,kCAGA,gCAKA,wIAMA,uCAKA,gEAIA,8DAMA,uEAMA,mEAOA,wJAUA,2EAGA,4EAIA,oCAMA,8BACE,uCAGA,wCAGA","sources":["src/components/rating.css"],"sourcesContent":["@layer ddga-components {\n /* Wrapper (.ddga-field) + helper/error (.ddga-field__message) are shared\n , see field.css. Only Rating-specific styles live here. Each star stacks\n an empty base star and a clipped filled overlay; the overlay width drives\n full / half / empty. Logical inset keeps the half-fill correct in RTL. */\n\n /* ─── Label ─── */\n\n .ddga-rating__label {\n display: block;\n color: var(--ddga-text-primary);\n font-weight: var(--ddga-font-weight-medium);\n font-size: var(--ddga-font-size-sm);\n line-height: 1.4;\n }\n\n /* ─── Root ─── */\n\n .ddga-rating {\n /* Consumers can recolor the filled stars by overriding this var. */\n --ddga-rating-color: var(--ddga-gold-500);\n --ddga-rating-empty: var(--ddga-color-border);\n\n display: inline-flex;\n align-items: center;\n gap: var(--ddga-space-1);\n color: var(--ddga-rating-empty);\n inline-size: fit-content;\n }\n\n .ddga-rating--sm {\n font-size: 1rem;\n }\n .ddga-rating--md {\n font-size: 1.5rem;\n }\n .ddga-rating--lg {\n font-size: 2rem;\n }\n\n /* Focus ring on the slider root. */\n .ddga-rating[role='slider']:focus-visible {\n outline: 2px solid var(--ddga-color-ring);\n outline-offset: 2px;\n border-radius: var(--ddga-radius-sm);\n }\n\n .ddga-rating[data-disabled] {\n opacity: 0.5;\n }\n\n /* Error: tint the empty stars so an unrated required field reads as invalid. */\n .ddga-rating--error {\n --ddga-rating-empty: var(--ddga-color-error);\n }\n\n .ddga-rating[role='slider']:not([data-disabled]) {\n cursor: pointer;\n }\n\n /* ─── Star (base = empty, overlay = filled) ─── */\n\n .ddga-rating__star {\n position: relative;\n display: inline-flex;\n line-height: 0;\n }\n\n .ddga-rating__star-bg {\n display: block;\n color: var(--ddga-rating-empty);\n }\n\n /* Clipped overlay pinned to the logical start so it reveals the leading\n portion of the star (flips automatically in RTL via inset-inline-start). */\n .ddga-rating__star-fill {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n inline-size: 0;\n overflow: hidden;\n line-height: 0;\n color: var(--ddga-rating-color);\n }\n\n .ddga-rating__star[data-fill='half'] .ddga-rating__star-fill {\n inline-size: 50%;\n }\n .ddga-rating__star[data-fill='full'] .ddga-rating__star-fill {\n inline-size: 100%;\n }\n\n .ddga-rating__star-fg {\n display: block;\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-rating__star-bg {\n color: CanvasText;\n }\n .ddga-rating__star-fill {\n color: Highlight;\n }\n .ddga-rating[role='slider']:focus-visible {\n outline: 2px solid Highlight;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-skeleton{background-color:var(--ddga-gray-200);border-radius:var(--ddga-radius-md);display:block;position:relative;overflow:hidden}.ddga-skeleton--text{border-radius:var(--ddga-radius-sm);width:100%;height:1em}.ddga-skeleton--rectangle{width:100%;height:40px}.ddga-skeleton--circle{border-radius:var(--ddga-radius-full);width:40px;height:40px}.ddga-skeleton--pulse{animation:1.5s ease-in-out infinite ddga-skeleton-pulse}@keyframes ddga-skeleton-pulse{0%,to{opacity:1}50%{opacity:.55}}.ddga-skeleton--wave:after{content:"";background-image:linear-gradient(90deg, transparent, color-mix(in srgb, var(--ddga-color-background) 60%, transparent), transparent);animation:1.6s linear infinite ddga-skeleton-wave;position:absolute;inset:0;transform:translate(-100%)}@keyframes ddga-skeleton-wave{to{transform:translate(100%)}}[dir=rtl] .ddga-skeleton--wave:after{animation-name:ddga-skeleton-wave-rtl;transform:translate(100%)}@keyframes ddga-skeleton-wave-rtl{to{transform:translate(-100%)}}.ddga-skeleton--none{animation:none}.ddga-skeleton--none:after{display:none}@media (prefers-reduced-motion:reduce){.ddga-skeleton--pulse,.ddga-skeleton--wave:after{animation:none}}}
2
+ /*# sourceMappingURL=skeleton.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBACE,yIAUA,+EAMA,iDAKA,oFAQA,8EAIA,gEAYA,kRAcA,4DAOA,qGAKA,iEAMA,oCAIA,wCAIA,uCACE","sources":["src/components/skeleton.css"],"sourcesContent":["@layer ddga-components {\n .ddga-skeleton {\n display: block;\n background-color: var(--ddga-gray-200);\n border-radius: var(--ddga-radius-md);\n position: relative;\n overflow: hidden;\n }\n\n /* ─── Shapes ─── */\n\n .ddga-skeleton--text {\n width: 100%;\n height: 1em;\n border-radius: var(--ddga-radius-sm);\n }\n\n .ddga-skeleton--rectangle {\n width: 100%;\n height: 40px;\n }\n\n .ddga-skeleton--circle {\n width: 40px;\n height: 40px;\n border-radius: var(--ddga-radius-full);\n }\n\n /* ─── Animations ─── */\n\n .ddga-skeleton--pulse {\n animation: ddga-skeleton-pulse 1.5s ease-in-out infinite;\n }\n\n @keyframes ddga-skeleton-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.55;\n }\n }\n\n /* Wave: a translucent gradient sweeps across the surface using a\n pseudo-element so it doesn't interfere with the consumer's content. */\n .ddga-skeleton--wave::after {\n content: '';\n position: absolute;\n inset: 0;\n transform: translateX(-100%);\n background-image: linear-gradient(\n 90deg,\n transparent,\n color-mix(in srgb, var(--ddga-color-background) 60%, transparent),\n transparent\n );\n animation: ddga-skeleton-wave 1.6s linear infinite;\n }\n\n @keyframes ddga-skeleton-wave {\n 100% {\n transform: translateX(100%);\n }\n }\n\n /* RTL: sweep direction follows reading direction so the shimmer feels native. */\n [dir='rtl'] .ddga-skeleton--wave::after {\n transform: translateX(100%);\n animation-name: ddga-skeleton-wave-rtl;\n }\n\n @keyframes ddga-skeleton-wave-rtl {\n 100% {\n transform: translateX(-100%);\n }\n }\n\n .ddga-skeleton--none {\n animation: none;\n }\n\n .ddga-skeleton--none::after {\n display: none;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-skeleton--pulse,\n .ddga-skeleton--wave::after {\n animation: none;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-slider__header{justify-content:space-between;align-items:baseline;gap:var(--ddga-space-3);display:flex}.ddga-slider__label{color:var(--ddga-text-primary);font-weight:var(--ddga-font-weight-medium);font-size:var(--ddga-font-size-sm);line-height:1.4}.ddga-slider__value{color:var(--ddga-text-secondary);font-size:var(--ddga-font-size-sm);font-variant-numeric:tabular-nums}.ddga-slider{touch-action:none;-webkit-user-select:none;user-select:none;align-items:center;inline-size:100%;display:flex;position:relative}.ddga-slider--md{--ddga-slider-rail:6px;--ddga-slider-thumb:18px;block-size:var(--ddga-slider-thumb)}.ddga-slider--sm{--ddga-slider-rail:4px;--ddga-slider-thumb:14px;block-size:var(--ddga-slider-thumb)}.ddga-slider__track{block-size:var(--ddga-slider-rail);background-color:var(--ddga-color-input);border-radius:999px;flex-grow:1;position:relative}.ddga-slider__range{background-color:var(--ddga-color-primary);border-radius:999px;block-size:100%;position:absolute}.ddga-slider__thumb{inline-size:var(--ddga-slider-thumb);block-size:var(--ddga-slider-thumb);border:2px solid var(--ddga-color-primary);background-color:var(--ddga-color-background);cursor:grab;border-radius:999px;transition:border-color .15s,box-shadow .15s;display:block;box-shadow:0 1px 2px #00000026}.ddga-slider__thumb:active{cursor:grabbing}.ddga-slider__thumb:focus-visible{box-shadow:0 0 0 3px var(--ddga-color-ring);outline:none}.ddga-slider--error .ddga-slider__thumb{border-color:var(--ddga-color-error)}.ddga-slider--error .ddga-slider__range{background-color:var(--ddga-color-error)}.ddga-slider--error .ddga-slider__thumb:focus-visible{box-shadow:0 0 0 3px var(--ddga-color-error)}.ddga-slider[data-disabled]{opacity:.5}.ddga-slider[data-disabled] .ddga-slider__thumb{cursor:not-allowed}[data-theme=dark] .ddga-slider__thumb{background-color:#f3f4f6;box-shadow:0 1px 2px #0006}@media (prefers-reduced-motion:reduce){.ddga-slider__thumb{transition:none}}@media (forced-colors:active){.ddga-slider__track{background-color:canvas;border:1px solid canvastext}.ddga-slider__range{background-color:highlight}.ddga-slider__thumb{background-color:buttonface;border-color:canvastext}.ddga-slider__thumb:focus-visible{outline-offset:1px;outline:2px solid highlight}}}
2
+ /*# sourceMappingURL=slider.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAQE,6GAOA,iJAOA,0HAQA,4IAWA,qGAKA,qGAQA,kJAQA,qHASA,gTAcA,2CAIA,2FAOA,6EAGA,iFAGA,mGAMA,uCAGA,mEAMA,0FAOA,uCACE,qCAOF,8BACE,wEAIA,+CAGA,wEAIA","sources":["src/components/slider.css"],"sourcesContent":["@layer ddga-components {\n /* Wrapper (.ddga-field) + helper/error (.ddga-field__message) are shared\n , see field.css. Only Slider-specific styles live here. Radix Slider\n handles RTL positioning natively via the inherited `dir` (DgaProvider\n wraps Direction.Provider), so no manual flipping is needed here. */\n\n /* ─── Header (label + value readout) ─── */\n\n .ddga-slider__header {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--ddga-space-3);\n }\n\n .ddga-slider__label {\n color: var(--ddga-text-primary);\n font-weight: var(--ddga-font-weight-medium);\n font-size: var(--ddga-font-size-sm);\n line-height: 1.4;\n }\n\n .ddga-slider__value {\n color: var(--ddga-text-secondary);\n font-size: var(--ddga-font-size-sm);\n font-variant-numeric: tabular-nums;\n }\n\n /* ─── Root ─── */\n\n .ddga-slider {\n position: relative;\n display: flex;\n align-items: center;\n inline-size: 100%;\n touch-action: none;\n user-select: none;\n }\n\n /* Per-size rail thickness + thumb diameter, encoded as custom properties so\n the track/thumb rules below stay size-agnostic. */\n .ddga-slider--md {\n --ddga-slider-rail: 6px;\n --ddga-slider-thumb: 18px;\n block-size: var(--ddga-slider-thumb);\n }\n .ddga-slider--sm {\n --ddga-slider-rail: 4px;\n --ddga-slider-thumb: 14px;\n block-size: var(--ddga-slider-thumb);\n }\n\n /* ─── Track + filled range ─── */\n\n .ddga-slider__track {\n position: relative;\n flex-grow: 1;\n block-size: var(--ddga-slider-rail);\n border-radius: 999px;\n background-color: var(--ddga-color-input);\n }\n\n .ddga-slider__range {\n position: absolute;\n block-size: 100%;\n border-radius: 999px;\n background-color: var(--ddga-color-primary);\n }\n\n /* ─── Thumb ─── */\n\n .ddga-slider__thumb {\n display: block;\n inline-size: var(--ddga-slider-thumb);\n block-size: var(--ddga-slider-thumb);\n border: 2px solid var(--ddga-color-primary);\n border-radius: 999px;\n background-color: var(--ddga-color-background);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n cursor: grab;\n transition:\n border-color 150ms ease,\n box-shadow 150ms ease;\n }\n\n .ddga-slider__thumb:active {\n cursor: grabbing;\n }\n\n .ddga-slider__thumb:focus-visible {\n outline: none;\n box-shadow: 0 0 0 3px var(--ddga-color-ring);\n }\n\n /* ─── Error ─── */\n\n .ddga-slider--error .ddga-slider__thumb {\n border-color: var(--ddga-color-error);\n }\n .ddga-slider--error .ddga-slider__range {\n background-color: var(--ddga-color-error);\n }\n .ddga-slider--error .ddga-slider__thumb:focus-visible {\n box-shadow: 0 0 0 3px var(--ddga-color-error);\n }\n\n /* ─── Disabled (Radix sets data-disabled on the Root) ─── */\n\n .ddga-slider[data-disabled] {\n opacity: 0.5;\n }\n .ddga-slider[data-disabled] .ddga-slider__thumb {\n cursor: not-allowed;\n }\n\n /* ─── Dark mode: keep the thumb a raised light surface ─── */\n\n [data-theme='dark'] .ddga-slider__thumb {\n background-color: #f3f4f6;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-slider__thumb {\n transition: none;\n }\n }\n\n /* ─── Forced colors (Windows High Contrast) ─── */\n\n @media (forced-colors: active) {\n .ddga-slider__track {\n background-color: Canvas;\n border: 1px solid CanvasText;\n }\n .ddga-slider__range {\n background-color: Highlight;\n }\n .ddga-slider__thumb {\n background-color: ButtonFace;\n border-color: CanvasText;\n }\n .ddga-slider__thumb:focus-visible {\n outline: 2px solid Highlight;\n outline-offset: 1px;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-spinner{color:currentColor;flex-shrink:0;animation:.6s linear infinite ddga-spin;display:inline-block}.ddga-spinner--sm{font-size:1rem}.ddga-spinner--md{font-size:1.5rem}.ddga-spinner--lg{font-size:2rem}@keyframes ddga-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ddga-spinner{animation-duration:1.5s}}}
2
+ /*# sourceMappingURL=spinner.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBACE,4GAOA,iCAGA,mCAGA,iCAIA,yEASA,uCACE","sources":["src/components/spinner.css"],"sourcesContent":["@layer ddga-components {\n .ddga-spinner {\n display: inline-block;\n flex-shrink: 0;\n color: currentColor;\n animation: ddga-spin 600ms linear infinite;\n }\n\n .ddga-spinner--sm {\n font-size: 1rem;\n }\n .ddga-spinner--md {\n font-size: 1.5rem;\n }\n .ddga-spinner--lg {\n font-size: 2rem;\n }\n\n @keyframes ddga-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-spinner {\n animation-duration: 1.5s;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-steps{color:var(--ddga-text-primary);margin:0;padding:0;font-family:inherit;list-style:none;display:flex}.ddga-steps--horizontal{align-items:flex-start;gap:var(--ddga-space-2);flex-direction:row}.ddga-steps--vertical{gap:var(--ddga-space-3);flex-direction:column}.ddga-steps__step{flex:1;min-inline-size:0;display:flex;position:relative}.ddga-steps--horizontal .ddga-steps__step{align-items:flex-start;gap:var(--ddga-space-2);flex-direction:column}.ddga-steps--vertical .ddga-steps__step{align-items:flex-start;gap:var(--ddga-space-3);flex-direction:row}.ddga-steps--horizontal .ddga-steps__step+.ddga-steps__step:before{content:"";block-size:2px;background-color:var(--ddga-color-border);position:absolute;inset-block-start:11px;inset-inline-start:calc(-1 * var(--ddga-space-2));inset-inline-end:calc(100% - 4px)}.ddga-steps--vertical .ddga-steps__step+.ddga-steps__step:before{content:"";inline-size:2px;background-color:var(--ddga-color-border);position:absolute;inset-block-start:calc(-1 * var(--ddga-space-3));inset-block-end:calc(100% - 4px);inset-inline-start:11px}.ddga-steps__step--completed+.ddga-steps__step--completed:before,.ddga-steps__step--completed+.ddga-steps__step--current:before{background-color:var(--ddga-color-primary)}.ddga-steps__indicator{border:2px solid var(--ddga-color-border);background-color:var(--ddga-color-background);block-size:1.5rem;inline-size:1.5rem;color:var(--ddga-text-tertiary);font-size:var(--ddga-font-size-xs);z-index:1;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;line-height:1;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex;position:relative}.ddga-steps__indicator-check{block-size:.875em;inline-size:.875em;display:none}.ddga-steps__step--completed .ddga-steps__indicator{background-color:var(--ddga-color-primary);border-color:var(--ddga-color-primary);color:var(--ddga-color-primary-foreground)}.ddga-steps__step--completed .ddga-steps__indicator-check{display:inline-block}.ddga-steps__step--completed .ddga-steps__indicator-number{display:none}.ddga-steps__step--current .ddga-steps__indicator{border-color:var(--ddga-color-primary);color:var(--ddga-color-primary)}.ddga-steps__title{color:var(--ddga-text-secondary);font-weight:500;line-height:1.4;display:block}.ddga-steps__step--current .ddga-steps__title{color:var(--ddga-text-primary);font-weight:600}.ddga-steps__step--completed .ddga-steps__title{color:var(--ddga-text-primary)}.ddga-steps__description{color:var(--ddga-text-tertiary);font-size:var(--ddga-font-size-xs);margin-block-start:var(--ddga-space-1);line-height:1.4;display:block}.ddga-steps--sm{font-size:var(--ddga-font-size-xs)}.ddga-steps--md{font-size:var(--ddga-font-size-sm)}@media (prefers-reduced-motion:reduce){.ddga-steps__indicator{transition:none}}@media (forced-colors:active){.ddga-steps__indicator{color:canvastext;border-color:canvastext}.ddga-steps__step--completed .ddga-steps__indicator,.ddga-steps__step--current .ddga-steps__indicator{color:highlight;border-color:highlight}.ddga-steps__step+.ddga-steps__step:before{background-color:canvastext}.ddga-steps__step--completed+.ddga-steps__step--completed:before,.ddga-steps__step--completed+.ddga-steps__step--current:before{background-color:highlight}}}
2
+ /*# sourceMappingURL=steps.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"mappings":"AAAA,uBAQE,+GASA,0FAMA,oEAOA,0EAOA,+GAKA,0GAcA,oQAYA,kQAcA,2KAOA,+aAuBA,+EAOA,iLAKA,+EAGA,wEAKA,yHAOA,kGAOA,6FAKA,+EAIA,iKAUA,mDAGA,mDAMA,uCACE,wCAOF,8BACE,gEAIA,6IAKA,uEAGA","sources":["src/components/steps.css"],"sourcesContent":["@layer ddga-components {\n /* Size + orientation live on the root; state lives on each Step. Separator\n lines are CSS-drawn via `::before` on every Step except the first,\n stretching backward to the previous Step's indicator. Logical\n properties handle the RTL flip — no JS, no JS conditional classes. */\n\n /* ─── Root (ol) ─── */\n\n .ddga-steps {\n display: flex;\n margin: 0;\n padding: 0;\n list-style: none;\n color: var(--ddga-text-primary);\n font-family: inherit;\n }\n\n .ddga-steps--horizontal {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--ddga-space-2);\n }\n\n .ddga-steps--vertical {\n flex-direction: column;\n gap: var(--ddga-space-3);\n }\n\n /* ─── Step (li) ─── */\n\n .ddga-steps__step {\n position: relative;\n display: flex;\n flex: 1;\n min-inline-size: 0;\n }\n\n .ddga-steps--horizontal .ddga-steps__step {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--ddga-space-2);\n }\n .ddga-steps--vertical .ddga-steps__step {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--ddga-space-3);\n }\n\n /* ─── Separator line (CSS-drawn, between siblings) ─── */\n /*\n * Horizontal: line stretches inline-end-ward from the indicator on this\n * step toward the next step. Vertical: line stretches block-end-ward.\n * Color reflects THIS step's state — when this step is completed the\n * line to the next is also completed. (Visual-only progress indicator.)\n */\n\n .ddga-steps--horizontal .ddga-steps__step + .ddga-steps__step::before {\n content: '';\n position: absolute;\n block-size: 2px;\n /* Sit at the vertical center of the indicator (24px / 2). */\n inset-block-start: 11px;\n /* Span from just before this step's indicator back to the previous one. */\n inset-inline-start: calc(-1 * var(--ddga-space-2));\n inset-inline-end: calc(100% - 4px);\n background-color: var(--ddga-color-border);\n }\n\n .ddga-steps--vertical .ddga-steps__step + .ddga-steps__step::before {\n content: '';\n position: absolute;\n inline-size: 2px;\n /* Sit at the horizontal center of the indicator. */\n inset-inline-start: 11px;\n /* Span from just before this step's indicator back to the previous one. */\n inset-block-start: calc(-1 * var(--ddga-space-3));\n inset-block-end: calc(100% - 4px);\n background-color: var(--ddga-color-border);\n }\n\n /* Completed steps colour the inbound line — the line BEFORE a completed\n step reflects that the journey to it is done. */\n .ddga-steps__step--completed + .ddga-steps__step--completed::before,\n .ddga-steps__step--completed + .ddga-steps__step--current::before {\n background-color: var(--ddga-color-primary);\n }\n\n /* ─── Indicator (numbered circle / check) ─── */\n\n .ddga-steps__indicator {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n inline-size: 1.5rem;\n block-size: 1.5rem;\n border-radius: 999px;\n border: 2px solid var(--ddga-color-border);\n background-color: var(--ddga-color-background);\n color: var(--ddga-text-tertiary);\n font-size: var(--ddga-font-size-xs);\n font-weight: 600;\n line-height: 1;\n /* Above the separator line so it doesn't visually cross through. */\n position: relative;\n z-index: 1;\n transition:\n background-color 150ms ease,\n border-color 150ms ease,\n color 150ms ease;\n }\n\n .ddga-steps__indicator-check {\n inline-size: 0.875em;\n block-size: 0.875em;\n display: none;\n }\n\n /* Completed: filled-primary circle with a check icon (number hidden). */\n .ddga-steps__step--completed .ddga-steps__indicator {\n background-color: var(--ddga-color-primary);\n border-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary-foreground);\n }\n .ddga-steps__step--completed .ddga-steps__indicator-check {\n display: inline-block;\n }\n .ddga-steps__step--completed .ddga-steps__indicator-number {\n display: none;\n }\n\n /* Current: outlined-primary circle with the number visible. */\n .ddga-steps__step--current .ddga-steps__indicator {\n border-color: var(--ddga-color-primary);\n color: var(--ddga-color-primary);\n }\n\n /* ─── Title + Description ─── */\n\n .ddga-steps__title {\n display: block;\n color: var(--ddga-text-secondary);\n font-weight: 500;\n line-height: 1.4;\n }\n\n .ddga-steps__step--current .ddga-steps__title {\n color: var(--ddga-text-primary);\n font-weight: 600;\n }\n\n .ddga-steps__step--completed .ddga-steps__title {\n color: var(--ddga-text-primary);\n }\n\n .ddga-steps__description {\n display: block;\n margin-block-start: var(--ddga-space-1);\n color: var(--ddga-text-tertiary);\n font-size: var(--ddga-font-size-xs);\n line-height: 1.4;\n }\n\n /* ─── Sizes (cascade from root) ─── */\n\n .ddga-steps--sm {\n font-size: var(--ddga-font-size-xs);\n }\n .ddga-steps--md {\n font-size: var(--ddga-font-size-sm);\n }\n\n /* ─── Reduced motion ─── */\n\n @media (prefers-reduced-motion: reduce) {\n .ddga-steps__indicator {\n transition: none;\n }\n }\n\n /* ─── Forced colors ─── */\n\n @media (forced-colors: active) {\n .ddga-steps__indicator {\n border-color: CanvasText;\n color: CanvasText;\n }\n .ddga-steps__step--completed .ddga-steps__indicator,\n .ddga-steps__step--current .ddga-steps__indicator {\n border-color: Highlight;\n color: Highlight;\n }\n .ddga-steps__step + .ddga-steps__step::before {\n background-color: CanvasText;\n }\n .ddga-steps__step--completed + .ddga-steps__step--completed::before,\n .ddga-steps__step--completed + .ddga-steps__step--current::before {\n background-color: Highlight;\n }\n }\n}\n"],"names":[]}
@@ -0,0 +1,2 @@
1
+ @layer ddga-components{.ddga-tabs{color:var(--ddga-text-primary);gap:var(--ddga-space-3);--ddga-tabs-indicator-thickness:2px;flex-direction:column;display:flex}.ddga-tabs[data-orientation=vertical]{gap:var(--ddga-space-4);flex-direction:row}.ddga-tabs__list{flex-direction:row;align-items:stretch;display:flex}.ddga-tabs__list[data-orientation=vertical]{flex-direction:column;align-items:stretch}.ddga-tabs__list--full-width{inline-size:100%}.ddga-tabs__list--full-width .ddga-tabs__trigger{flex:1;justify-content:center}.ddga-tabs__trigger{appearance:none;align-items:center;gap:var(--ddga-space-2);color:var(--ddga-text-secondary);white-space:nowrap;cursor:pointer;background:0 0;border:0;margin:0;font-family:inherit;font-weight:500;line-height:1.4;transition:color .15s,background-color .15s,box-shadow .15s;display:inline-flex;position:relative}.ddga-tabs__trigger:hover{color:var(--ddga-text-primary)}.ddga-tabs__trigger:focus-visible{box-shadow:0 0 0 2px var(--ddga-color-ring);border-radius:var(--ddga-radius-sm);outline:none}.ddga-tabs__trigger[data-disabled],.ddga-tabs__trigger[aria-disabled=true]{opacity:.5;cursor:not-allowed}.ddga-tabs__trigger[data-disabled]:hover,.ddga-tabs__trigger[aria-disabled=true]:hover{color:var(--ddga-text-secondary)}.ddga-tabs--sm .ddga-tabs__trigger{padding-block:var(--ddga-space-1);padding-inline:var(--ddga-space-3);font-size:var(--ddga-font-size-sm)}.ddga-tabs--md .ddga-tabs__trigger{padding-block:var(--ddga-space-2);padding-inline:var(--ddga-space-4);font-size:var(--ddga-font-size-base)}.ddga-tabs--line .ddga-tabs__list{border-block-end:1px solid var(--ddga-color-border);gap:var(--ddga-space-1)}.ddga-tabs--line .ddga-tabs__list[data-orientation=vertical]{border-block-end:0;border-inline-end:1px solid var(--ddga-color-border)}.ddga-tabs--line .ddga-tabs__trigger{border-block-end:var(--ddga-tabs-indicator-thickness) solid transparent;margin-block-end:calc(-1 * var(--ddga-tabs-indicator-thickness))}.ddga-tabs--line[data-orientation=vertical] .ddga-tabs__trigger{border-block-end:0;border-inline-end:var(--ddga-tabs-indicator-thickness) solid transparent;margin-block-end:0;margin-inline-end:calc(-1 * var(--ddga-tabs-indicator-thickness))}.ddga-tabs--line .ddga-tabs__trigger[data-state=active]{color:var(--ddga-color-primary);border-block-end-color:var(--ddga-color-primary)}.ddga-tabs--line[data-orientation=vertical] .ddga-tabs__trigger[data-state=active]{border-block-end-color:#0000;border-inline-end-color:var(--ddga-color-primary)}.ddga-tabs--pill .ddga-tabs__list{background-color:var(--ddga-color-muted);border-radius:var(--ddga-radius-md);padding:var(--ddga-space-1);gap:var(--ddga-space-1);align-self:flex-start}.ddga-tabs--pill .ddga-tabs__list--full-width{align-self:stretch}.ddga-tabs--pill .ddga-tabs__trigger{border-radius:calc(var(--ddga-radius-md) - 2px)}.ddga-tabs--pill .ddga-tabs__trigger:hover:not([data-state=active]){background-color:color-mix(in oklab, var(--ddga-color-muted) 60%, var(--ddga-text-primary) 6%)}.ddga-tabs--pill .ddga-tabs__trigger[data-state=active]{color:var(--ddga-text-primary);background-color:var(--ddga-color-background);box-shadow:var(--ddga-shadow-sm)}.ddga-tabs__content{outline:none}.ddga-tabs__content:focus-visible{box-shadow:0 0 0 2px var(--ddga-color-ring);border-radius:var(--ddga-radius-sm)}@media (prefers-reduced-motion:reduce){.ddga-tabs__trigger{transition:none}}@media (forced-colors:active){.ddga-tabs--line .ddga-tabs__list{border-block-end-color:canvastext}.ddga-tabs--line .ddga-tabs__trigger[data-state=active]{color:highlight;border-block-end-color:highlight}.ddga-tabs--pill .ddga-tabs__trigger[data-state=active]{color:highlight;outline:1px solid highlight}.ddga-tabs__trigger:focus-visible{outline-offset:2px;outline:2px solid highlight}}}
2
+ /*# sourceMappingURL=tabs.css.map */