@goliapkg/gds 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  **GOLIA Design System** — production-grade React UI component library built by [GOLIA](https://github.com/goliajp).
4
4
 
5
- 370+ components across 8 architectural layers, from design tokens to full-page patterns.
5
+ 380+ components across 8 architectural layers, from design tokens to full-page patterns.
6
6
 
7
7
  ## Features
8
8
 
9
- - **370+ components** across 8 layers (tokens → primitives → atoms → molecules → organisms → charts → patterns)
9
+ - **380+ components** across 8 layers (tokens → primitives → atoms → molecules → organisms → charts → patterns)
10
10
  - **Strict layer architecture** — dependency constraints enforced by ESLint, anti-corruption wrappers for all external deps
11
11
  - **93% branch coverage** — 393 test files, 3400+ test cases, all layers above 90%
12
12
  - **AI-native** — semantic `data-component`/`data-variant`/`data-state` attributes, typed props, machine-readable docs
@@ -119,6 +119,10 @@ import { DataTable, Calendar } from '@goliapkg/gds/organisms'
119
119
  import { BarChart, LineChart } from '@goliapkg/gds/charts'
120
120
  import { AdminLayout, Hero } from '@goliapkg/gds/patterns'
121
121
  import { cx, focusCls, renderPortal } from '@goliapkg/gds/utils'
122
+
123
+ // theme & tokens
124
+ import { useThemeEffect, useSetThemeMode } from '@goliapkg/gds/systems'
125
+ import { generateDefaultCssVars } from '@goliapkg/gds/tokens'
122
126
  ```
123
127
 
124
128
  ## Architecture
@@ -130,8 +134,8 @@ src/
130
134
  ├── l2-primitives/ 31 stateless visual blocks (Button, Input, Badge, Spinner...)
131
135
  ├── l3-atoms/ 71 simple composed elements (Avatar, Checkbox, Tooltip, Rating...)
132
136
  ├── l4-molecules/ 109 multi-part components (Card, Dialog, Tabs, Select, ColorPicker...)
133
- ├── l5-organisms/ 73 complex features (DataTable, Calendar, Kanban, CommandPalette...)
134
- ├── l6-charts/ 31 Recharts-based visualizations (Bar, Line, Heatmap, Sankey...)
137
+ ├── l5-organisms/ 74 complex features (DataTable, GanttChart, Calendar, Kanban...)
138
+ ├── l6-charts/ 37 data visualizations (Bar, Line, Heatmap, Gantt, Flame, Realtime...)
135
139
  ├── l7-patterns/ 55 page-level layouts (Dashboard, Admin, Hero, LoginForm...)
136
140
  └── utils/ anti-corruption layer (cx, a11y, dom, types, motion, glass, portal)
137
141
  ```
@@ -170,8 +174,8 @@ bun run build # build library
170
174
 
171
175
  | Metric | Value |
172
176
  |--------|-------|
173
- | Test files | 393 |
174
- | Test cases | 3,400+ |
177
+ | Test files | 399 |
178
+ | Test cases | 3,457+ |
175
179
  | Branch coverage | 93%+ |
176
180
  | Line coverage | 97%+ |
177
181
  | TypeScript | strict, zero `any` |
package/dist/index.js CHANGED
@@ -22,11 +22,11 @@ import { a as ur, i as dr, n as fr, r as pr, t as mr } from "./switch-DC85Os9r.j
22
22
  import { i as hr, n as gr, r as _r, t as vr } from "./dom-17XgfxMq.js";
23
23
  import { t as yr } from "./loading-dots-fB4X_Zh0.js";
24
24
  import { i as br, n as xr, r as Sr, t as Cr } from "./stepper-DWJfv7TA.js";
25
- import { $ as wr, A as Tr, At as Er, B as Dr, Bt as Or, C as kr, Ct as Ar, D as jr, Dt as Mr, E as Nr, Et as Pr, F as Fr, Ft as Ir, G as Lr, Gt as Rr, H as zr, Ht as Br, I as Vr, It as Hr, J as Ur, Jt as Wr, K as Gr, Kt as Kr, L as qr, Lt as Jr, M as Yr, Mt as Xr, N as Zr, Nt as Qr, O as $r, Ot as ei, P as ti, Pt as ni, Q as ri, Qt as ii, R as ai, Rt as oi, S as si, St as ci, T as li, Tt as ui, U as di, Ut as fi, V as pi, Vt as mi, W as hi, Wt as gi, X as _i, Xt as vi, Y as yi, Yt as bi, Z as xi, Zt as Si, _ as Ci, _t as wi, a as Ti, at as Ei, b as Di, bt as Oi, c as ki, ct as Ai, d as ji, dt as Mi, et as Ni, f as Pi, ft as Fi, g as Ii, gt as Li, h as Ri, ht as zi, i as Bi, it as Vi, j as Hi, jt as Ui, k as Wi, kt as Gi, l as Ki, lt as qi, m as Ji, mt as Yi, n as Xi, nt as Zi, o as Qi, ot as $i, p as ea, pt as ta, q as na, qt as ra, r as ia, rt as aa, s as oa, st as sa, t as ca, tt as la, u as ua, ut as da, v as fa, vt as pa, w as ma, wt as ha, x as ga, xt as _a, y as va, yt as ya, z as ba, zt as xa } from "./l4-molecules-8C6E6Ndl.js";
25
+ import { $ as wr, A as Tr, At as Er, B as Dr, Bt as Or, C as kr, Ct as Ar, D as jr, Dt as Mr, E as Nr, Et as Pr, F as Fr, Ft as Ir, G as Lr, Gt as Rr, H as zr, Ht as Br, I as Vr, It as Hr, J as Ur, Jt as Wr, K as Gr, Kt as Kr, L as qr, Lt as Jr, M as Yr, Mt as Xr, N as Zr, Nt as Qr, O as $r, Ot as ei, P as ti, Pt as ni, Q as ri, Qt as ii, R as ai, Rt as oi, S as si, St as ci, T as li, Tt as ui, U as di, Ut as fi, V as pi, Vt as mi, W as hi, Wt as gi, X as _i, Xt as vi, Y as yi, Yt as bi, Z as xi, Zt as Si, _ as Ci, _t as wi, a as Ti, at as Ei, b as Di, bt as Oi, c as ki, ct as Ai, d as ji, dt as Mi, et as Ni, f as Pi, ft as Fi, g as Ii, gt as Li, h as Ri, ht as zi, i as Bi, it as Vi, j as Hi, jt as Ui, k as Wi, kt as Gi, l as Ki, lt as qi, m as Ji, mt as Yi, n as Xi, nt as Zi, o as Qi, ot as $i, p as ea, pt as ta, q as na, qt as ra, r as ia, rt as aa, s as oa, st as sa, t as ca, tt as la, u as ua, ut as da, v as fa, vt as pa, w as ma, wt as ha, x as ga, xt as _a, y as va, yt as ya, z as ba, zt as xa } from "./l4-molecules-DftsX-gO.js";
26
26
  import { a as Sa, i as Ca, n as wa, o as Ta, r as Ea, s as Da, t as Oa } from "./hooks-BE-_EmDI.js";
27
27
  import { a as ka, i as Aa, n as ja, o as Ma, r as Na, t as Pa } from "./toast-DN5xANLM.js";
28
28
  import { $ as Fa, A as Ia, B as La, C as Ra, Ct as za, D as Ba, Dt as Va, E as Ha, Et as Ua, F as Wa, G as Ga, H as Ka, I as qa, J as Ja, K as Ya, L as Xa, M as Za, N as Qa, O as $a, Ot as eo, P as to, Q as no, R as ro, S as io, St as ao, T as oo, Tt as so, U as co, V as lo, W as uo, X as fo, Y as po, Z as mo, _ as ho, _t as go, a as _o, at as vo, b as yo, bt as bo, c as xo, ct as So, d as Co, dt as wo, et as To, f as Eo, ft as Do, g as Oo, gt as ko, h as Ao, ht as jo, i as Mo, it as No, j as Po, k as Fo, l as Io, lt as Lo, m as Ro, mt as zo, n as Bo, nt as Vo, o as Ho, ot as Uo, p as Wo, pt as Go, q as Ko, r as qo, rt as Jo, s as Yo, st as Xo, t as Zo, tt as Qo, u as $o, ut as es, v as ts, vt as ns, w as rs, wt as is, x as as, xt as os, y as ss, yt as cs, z as ls } from "./l5-organisms-Di1Bm_R6.js";
29
- import { A as us, C as ds, D as fs, E as ps, F as ms, I as hs, L as gs, M as _s, N as vs, O as ys, P as bs, S as xs, T as Ss, _ as Cs, a as ws, b as Ts, c as Es, d as Ds, f as Os, g as ks, h as As, i as js, j as Ms, k as Ns, l as Ps, m as Fs, n as Is, o as Ls, p as Rs, r as zs, s as Bs, t as Vs, u as Hs, v as Us, w as Ws, x as Gs, y as Ks } from "./l6-charts-Aou_NiQo.js";
29
+ import { A as us, C as ds, D as fs, E as ps, F as ms, I as hs, L as gs, M as _s, N as vs, O as ys, P as bs, S as xs, T as Ss, _ as Cs, a as ws, b as Ts, c as Es, d as Ds, f as Os, g as ks, h as As, i as js, j as Ms, k as Ns, l as Ps, m as Fs, n as Is, o as Ls, p as Rs, r as zs, s as Bs, t as Vs, u as Hs, v as Us, w as Ws, x as Gs, y as Ks } from "./l6-charts-Bn9RQLbe.js";
30
30
  import { $ as qs, A as Js, B as Ys, C as Xs, D as Zs, E as Qs, F as $s, G as ec, H as tc, I as nc, J as rc, K as ic, L as ac, M as oc, N as sc, O as cc, P as lc, Q as uc, R as dc, S as fc, T as pc, U as mc, V as hc, W as gc, X as _c, Y as vc, Z as yc, _ as bc, a as xc, b as Sc, c as Cc, d as wc, et as Tc, f as Ec, g as Dc, h as Oc, i as kc, j as Ac, k as jc, l as Mc, m as Nc, n as Pc, o as Fc, p as Ic, q as Lc, r as Rc, s as zc, t as Bc, tt as Vc, u as Hc, v as Uc, w as Wc, x as Gc, y as Kc, z as qc } from "./l7-patterns-BCpw0-CS.js";
31
31
  import { i as Jc, n as Yc, r as Xc, t as Zc } from "./gesture-irjS0hVM.js";
32
32
  export { Sr as Accordion, br as AccordionItem, Vc as ActionBar, ii as ActionCard, Si as ActionMenu, eo as ActivityFeed, Tc as AdminLayout, bi as Alert, qs as AnalyticsDashboard, ht as Anchor, Va as AnimatePresence, $n as AnimatedCounter, Ua as AnimatedList, mn as AnimatedNumber, gs as AnnotatedChart, hs as AreaChart, yt as AspectRatio, so as AudioPlayer, Ma as AuditEntry, is as AuditLog, or as Avatar, En as AvatarBadge, ir as AvatarGroup, za as AvatarList, Ct as Badge, qe as BadgeDot, Wr as Banner, ms as BarChart, On as Barcode, ra as BeforeAfter, uc as BentoGrid, In as Blinking, Hn as BounceDot, bs as BoxPlot, Kr as Breadcrumb, vs as BubbleChart, Rr as BulkActionBar, _s as BulletChart, Ms as BumpChart, He as Button, rc as CTABanner, ao as Calendar, us as CalendarHeatmap, yc as CalendarView, gi as Callout, Ns as CandlestickChart, Or as Card, mi as CardContent, Br as CardFooter, fi as CardHeader, os as Carousel, xa as CategoryTag, oi as CertBadge, bo as Changelog, sr as Checkbox, wn as CheckboxGroup, dr as Chip, Jr as ChipGroup, ys as ChordDiagram, Hr as CodeBlock, Ir as CodeSnippet, ni as Collapsible, Qr as ColorPicker, Zn as ColorSwatch, fs as ComboChart, Xr as Combobox, Ui as CommandMenu, cs as CommandPalette, ns as CommentThread, _c as ComparisonTable, vc as CompositionPattern, go as Confetti, ei as ConfirmDialog, ko as ContactCard, gt as Container, jo as ContainerList, Mr as ContextMenu, zo as CookieBanner, Pn as CopyButton, Pr as CopyField, ui as CopyToClipboard, yn as CountBadge, qn as CountUp, Bn as Countdown, An as CountdownBadge, Go as CronSchedule, ha as CurrencyDisplay, Ar as CurrencyInput, Gn as CursorFollow, Q as DEFAULT_PRIMARY, Ee as DEFAULT_THEME, Lc as DashboardLayout, ci as DataCard, ic as DataExportCard, Do as DataGrid, wo as DataList, es as DataTable, _a as DateDisplay, Lo as DatePicker, Oi as DateRangeInput, So as DeployLog, ya as Description, Xo as DescriptionList, ec as DevOpsLayout, Gi as Dialog, Er as DialogFooter, Rn as DiffIndicator, Uo as DiffViewer, _t as Divider, pa as Dock, ps as DonutGauge, Xe as Dot, wi as DownloadButton, Li as Drawer, zi as DropZone, Yi as Dropdown, ta as Editable, vo as EmailListItem, No as Embed, Fi as EmojiPicker, Jo as EmployeeCard, Mi as EmptyPlaceholder, da as EmptySearch, gc as EmptyState, qi as EnvironmentBadge, Vo as ErrorBoundary, mc as FAQ, w as FIXED_COLORS, tc as FeatureCard, Ai as FieldGroup, sa as FieldSet, aa as FieldWrapper, Qo as FileBrowser, To as FileCard, $i as FileUpload, Ei as FilterBar, Ss as FlameChart, Ws as FlowChart, nt as FocusRing, hc as Footer, Vi as FormActions, Fa as FormBuilder, Ys as FormLayout, qc as FormPattern, ds as FunnelChart, t as GDS_DEPS, i as GDS_INFRA, u as GDS_INTERNAL_UTILS, no as GanttChart, xs as Gauge, la as GlassButton, wr as GlassCard, dc as GlassPanel, Yn as GlowDot, rt as GlowEffect, ot as GradientBorder, Sn as GradientText, ac as GridLayout, $s as HRDashboard, zt as HeatCell, Gs as HeatmapChart, mo as HeatmapTable, nc as Hero, wt as Highlight, Ts as Histogram, nn as Hotkey, ri as HoverCard, Et as IconButton, fo as ImagePreview, lc as InboxLayout, po as InfiniteScroll, xi as InfoRow, un as InfoTip, ka as InlineEdit, Ot as Input, _i as InputGroup, yi as InputWithButton, Ja as JsonViewer, oc as KPIDashboard, Ko as Kanban, Nt as Kbd, dn as KeyValue, Ur as KeyValueList, Yt as KeyboardShortcut, na as KvTable, n as LAYER_DEP_CONSTRAINTS, At as Label, Ks as LineChart, Gr as LinkPreview, Aa as ListItem, Un as LiveDot, pt as LoadingBars, yr as LoadingDots, Lr as LoadingOverlay, et as LoadingPulse, tt as LoadingRing, Ac as LoadingStates, lt as LoadingWave, Js as LoginForm, Xt as MagneticButton, jc as MailComposer, Ga as MarkdownEditor, Ya as MarkdownPreview, Kt as Marquee, cc as Masonry, uo as MasonryGrid, Zs as MediaGrid, hi as MediaObject, di as MentionInput, sn as Meter, sc as MetricCard, zr as MetricRow, pi as MetricTile, Qs as MiniDashboard, pc as MonitorGrid, Dr as MultiSelect, Wc as NavBar, ba as NavItem, Us as NetworkGraph, Na as Notification, ai as NotificationBell, co as NotificationCenter, qr as NotificationDot, Xs as NotificationList, Ka as NotificationToast, $e as NumberInput, fc as OnboardingCard, qt as OnlineIndicator, Cs as OrderBookChart, Vr as OverflowMenu, Gc as PageHeader, Fr as PageNav, ti as Pagination, Zr as Panel, lo as Parallax, Yr as PasswordInput, Sc as PayrollDashboard, La as PayslipCard, cn as Percentage, Vt as PercentageCircle, ls as PermissionMatrix, Hi as PhoneInput, ks as PieChart, Tr as PinInput, Wi as Popover, rr as Price, Kc as PricingCard, Uc as ProfileCard, It as Progress, rn as ProgressCircle, Zt as ProgressRing, xr as ProgressSteps, ro as ProgressTimeline, bc as ProjectDashboard, Xa as PropertyEditor, Jt as PulseIndicator, Gt as PulseRing, tn as QRCode, Qt as QuickAction, qa as QuickLinks, $r as QuickStat, As as RadarChart, Fs as RadialBarChart, jr as RadioCard, jn as RadioGroup, pr as RangeSlider, Bt as Rating, Rs as RealtimeChart, Wa as RecentActivity, Mn as RelativeTime, lr as ResizeHandle, Dc as ResponsiveContainer, to as ResponsiveStack, yo as ResponsiveTable, en as Ribbon, Ut as RibbonBanner, ss as RichSelect, Wt as RippleEffect, Os as SankeyChart, Ds as ScatterChart, dt as ScreenOverlay, ct as ScrollArea, on as ScrollProgress, er as ScrollToTop, Nr as SearchInput, ts as SearchResults, Ht as SegmentedControl, ma as Select, bt as Separator, Oc as ServerOverview, ho as ServiceCard, Nc as SettingsLayout, kr as Sheet, Ze as Shimmer, an as ShortcutDisplay, Ic as Sidebar, Oo as SignaturePad, Rt as Skeleton, tr as SkeletonGroup, Ec as SkeletonPattern, it as SkipNav, ut as Slider, si as SliderField, ga as SortableHeader, Ao as SortableList, Ro as SortableTable, _n as Sparkle, Hs as Sparkline, jt as Spinner, wc as SplashScreen, Di as SplitButton, Hc as SplitView, Wo as Spotlight, Eo as StackedList, va as StackedProgress, nr as StarRating, fa as StatComparison, Mc as StatGrid, Cc as StatsCard, pn as StatusBadge, Ci as StatusBarComponent, Dn as StatusDot, zc as StatusPage, Co as StepForm, Cr as Stepper, Fc as StepperForm, xc as StickyHeader, Ps as StreamChart, Es as SunburstChart, mr as Switch, Fn as SwitchGroup, $o as SystemHealth, Ji as TabGroup, as as Table, io as TableCaption, Ra as TableFooter, Ri as Tabs, Io as TagCloud, ea as TagInput, xo as TaskBoard, ja as TaskItem, rs as Tbody, oo as Td, Ha as TdFoot, Ba as TdMuted, $a as TdNum, kc as Testimonial, Vn as TextBadge, Cn as TextEffect, Pt as Textarea, bn as TextareaCounter, Fo as Tfoot, Ia as Th, Po as ThNum, Za as Thead, Xn as ThemeToggle, Pi as TimePicker, Yo as Timeline, Bs as TimelineChart, ji as TimelineEntry, Rc as TimelineSteps, Pa as Toast, ua as ToggleField, Kn as ToggleGroup, Pc as Toolbar, ki as ToolbarGeneric, oa as ToolbarGroup, Ki as ToolbarSeparator, fn as Tooltip, Ho as Tour, Qa as Tr, _o as TransactionList, Mo as Tree, Ls as TreemapChart, zn as TrendArrow, st as Truncate, hn as TruncatedList, kn as Typewriter, Qi as UserCard, Ti as UserInfo, Bi as UserMenu, Wn as VerifiedBadge, ia as VersionBadge, qo as VideoPlayer, ws as ViolinPlot, Bo as VirtualList, Ln as VisualCounter, ft as VisuallyHidden, js as WaffleChart, zs as WaterfallChart, Xi as Watermark, Is as WaveformDisplay, Zo as WeatherWidget, ca as Wizard, Bc as WizardLayout, Vs as WordCloud, Jn as ZoomOnHover, vi as alertVariants, de as analogous, Ye as anchorVariants, ne as applyDefaultCssVars, Zc as applyInertia, b as autoFixColor, ar as avatarVariants, xt as badgeVariants, C as bestTextColor, l as between, a as breakpointToCssVars, s as breakpoints, Ve as buttonVariants, cr as checkboxVariants, ur as chipVariants, vr as clamp, xn as colorSwatchVariants, p as complement, j as componentHeight, Fe as configureTheme, Je as containerVariants, g as contentWidth, N as contrastRatio, gn as countdownBadgeVariants, ze as cx, y as darken, h as densitySizeMap, T as deriveDarkPalette, D as deriveLightPalette, r as detectOverlap, e as deviceCategory, Qe as dividerVariants, mt as dotVariants, ye as drag, ee as duration, Z as easing, z as flexMono, Ge as focusCls, $ as fontFeature, re as fontPreset, V as fontStack, X as fontToCssVars, oe as fontWeight, q as generateDefaultCssVars, he as gestureConfig, _e as gestureToCssVars, Zi as glassButtonVariants, Ni as glassCardVariants, Be as glassClass, se as glassParams, Re as glassSurface, ue as glassToCssVars, M as hexToHsl, P as hexToRgb, v as hslToHex, S as hslToRgb, te as hueShift, Tt as iconButtonVariants, E as iconSize, me as inertia, Dt as inputVariants, gr as isActivationKey, K as keyframePresets, x as lerpColor, I as lighten, fe as longPress, F as luminance, o as maxWidth, _r as mergeRefs, ln as meterVariants, c as minWidth, Ke as motionClass, We as motionClassWithSpeed, G as motionToCssVars, at as numberInputVariants, _ as paletteToVars, St as paletteVariant, ge as pinchZoom, H as presetToStyle, Ft as progressVariants, ve as pullToRefresh, $t as quickActionVariants, m as radiusScale, ce as radiusToCssVars, Lt as renderPortal, ie as resolveAxesToCssVars, Te as resolveThemeCssVars, be as resolvedModeAtom, L as rgbToHex, O as rgbToHsl, d as saturate, k as scoreColor, li as selectVariants, vt as separatorVariants, le as shadowToCssVars, A as shadowValue, Y as sizeToCssVars, f as spacing, kt as spinnerVariants, R as springPresets, Ue as srOnly, Qn as statusBadgeVariants, Tn as statusDotVariants, B as supportsBackdropFilter, pe as swipe, fr as switchVariants, W as symbols, Ii as tabVariants, Mt as textareaVariants, Le as themeAtom, vn as toggleGroupVariants, Nn as toggleItemVariants, J as touchTarget, U as triadic, hr as uid, Oa as useClickOutside, Yc as useDrag, wa as useEscapeKey, Ea as useFocusTrap, Ca as useIsDesktop, Sa as useIsMobile, Xc as useLongPress, Ta as useMediaQuery, Ae as useResetTheme, Ne as useResolvedMode, Da as useScrollLock, De as useSetThemeColors, xe as useSetThemeDensity, je as useSetThemeElevation, Pe as useSetThemeGlass, Se as useSetThemeMode, Oe as useSetThemeMotion, Ie as useSetThemePreset, Ce as useSetThemePrimaryColor, we as useSetThemeShape, Jc as useSwipe, Me as useTheme, ke as useThemeEffect, ae as withAlpha };
@@ -1 +1 @@
1
- {"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../src/l2-primitives/number-input.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,QAAA,MAAM,mBAAmB;;;8EA0BxB,CAAA;AAED,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAaD,QAAA,MAAM,WAAW;;;;gBAxBH,MAAM;eACP,OAAO;YACV,OAAO;UACT,MAAM;UACN,MAAM;cACF,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI;kBAC1B,MAAM;aACX,MAAM;WACR,MAAM;aACJ,MAAM;WACR,MAAM,GAAG,IAAI;oDA0FrB,CAAA;AAED,OAAO,EAAE,WAAW,EAAC,mBAAmB,EAAE,CAAA;AAC1C,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"number-input.d.ts","sourceRoot":"","sources":["../../src/l2-primitives/number-input.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,QAAA,MAAM,mBAAmB;;;8EA0BxB,CAAA;AAED,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACjE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAaD,QAAA,MAAM,WAAW;;;;gBAxBH,MAAM;eACP,OAAO;YACV,OAAO;UACT,MAAM;UACN,MAAM;cACF,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI;kBAC1B,MAAM;aACX,MAAM;WACR,MAAM;aACJ,MAAM;WACR,MAAM,GAAG,IAAI;oDA0FrB,CAAA;AAED,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"l2-primitives-Le0006ck.js","names":[],"sources":["../src/l2-primitives/anchor.tsx","../src/l2-primitives/badge-dot.tsx","../src/l2-primitives/container.tsx","../src/l2-primitives/divider.tsx","../src/l2-primitives/dot.tsx","../src/l2-primitives/focus-ring.tsx","../src/l2-primitives/glow-effect.tsx","../src/l2-primitives/gradient-border.tsx","../src/l2-primitives/loading.tsx","../src/l2-primitives/number-stepper.tsx","../src/l2-primitives/number-input.tsx","../src/l2-primitives/screen-overlay.tsx","../src/l2-primitives/scroll-area.tsx","../src/l2-primitives/shimmer.tsx","../src/l2-primitives/skip-nav.tsx","../src/l2-primitives/slider.tsx","../src/l2-primitives/truncate.tsx","../src/l2-primitives/visually-hidden.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst anchorVariants = cva(\n 'inline-flex items-center gds-gap-xs underline-offset-2 transition-colors hover:underline ' +\n focusCls,\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'text-accent hover:text-accent/80',\n muted: 'text-fg-muted hover:text-fg',\n },\n },\n },\n)\n\ntype AnchorProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n VariantProps<typeof anchorVariants> & {\n external?: boolean\n externalIcon?: ReactNode\n }\n\nexport const Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(\n function Anchor(\n { children, className, external = false, externalIcon, variant, ...props },\n ref,\n ) {\n return (\n <a\n className={cx(anchorVariants({ variant }), className)}\n data-component=\"anchor\"\n ref={ref}\n {...(external && {\n rel: 'noopener noreferrer',\n target: '_blank',\n })}\n {...props}\n >\n {children}\n {external && externalIcon !== undefined && (\n <span className=\"gds-icon-child-xs\">{externalIcon}</span>\n )}\n </a>\n )\n },\n)\n\nexport { anchorVariants }\nexport type { AnchorProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nconst colorMap = {\n accent: 'bg-accent',\n danger: 'bg-danger',\n success: 'bg-success',\n} as const\n\ntype BadgeDotProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n color?: 'accent' | 'danger' | 'success'\n show?: boolean\n}\n\nexport const BadgeDot = forwardRef<HTMLDivElement, BadgeDotProps>(\n function BadgeDot({ children, className, color = 'danger', show = true, ...props }, ref) {\n return (\n <div\n className={cx('relative inline-flex', className)}\n data-component=\"badge-dot\"\n ref={ref}\n {...props}\n >\n {children}\n {show && (\n <span\n className={cx('absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full', colorMap[color])}\n />\n )}\n </div>\n )\n },\n)\n\nexport type { BadgeDotProps }\n","// container — responsive max-width wrapper with size variants\nimport { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst containerVariants = cva('mx-auto w-full px-4', {\n defaultVariants: { size: 'default' },\n variants: {\n size: {\n default: 'max-w-screen-md',\n full: 'max-w-full',\n lg: 'max-w-screen-lg',\n sm: 'max-w-screen-sm',\n xl: 'max-w-screen-xl',\n },\n },\n})\n\ntype ContainerProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof containerVariants> & {\n children: ReactNode\n }\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, className, size, ...props }, ref) {\n return (\n <div\n className={cx(containerVariants({ size }), className)}\n data-component=\"container\"\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport { containerVariants }\nexport type { ContainerProps }\n","import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dividerVariants = cva('', {\n variants: {\n variant: {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n },\n },\n defaultVariants: { variant: 'solid' },\n})\n\ntype DividerProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof dividerVariants> & {\n icon?: ReactNode\n label?: string\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Divider = forwardRef<HTMLDivElement, DividerProps>(\n function Divider({ className, icon, label, orientation = 'horizontal', variant = 'solid', ...props }, ref) {\n const variantCls = dividerVariants({ variant })\n\n if (orientation === 'vertical') {\n return (\n <div\n className={cx('inline-flex h-full flex-col items-center', (icon !== undefined || label !== undefined) && 'gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n {icon !== undefined || label !== undefined ? (\n <>\n <div className={cx('flex-1 border-l border-border', variantCls)} />\n {icon !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>}\n {label !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-text-caption\">{label}</span>}\n <div className={cx('flex-1 border-l border-border', variantCls)} />\n </>\n ) : (\n <div className={cx('h-full border-l border-border', variantCls)} />\n )}\n </div>\n )\n }\n\n if (icon !== undefined || label !== undefined) {\n return (\n <div\n className={cx('flex items-center gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n <div className={cx('flex-1 border-t border-border', variantCls)} />\n {icon !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>}\n {label !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-text-caption select-none\">{label}</span>}\n <div className={cx('flex-1 border-t border-border', variantCls)} />\n </div>\n )\n }\n\n return (\n <div\n className={cx('h-px w-full', variant === 'solid' ? 'bg-border/50' : cx('border-t border-border', variantCls), className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nexport { Divider, dividerVariants }\nexport type { DividerProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dotVariants = cva('inline-block shrink-0 gds-radius-badge', {\n defaultVariants: {\n color: 'accent',\n size: 'default',\n },\n variants: {\n color: {\n accent: 'bg-accent',\n danger: 'bg-danger',\n muted: 'bg-fg-muted/30',\n success: 'bg-success',\n warning: 'bg-warning',\n },\n size: {\n default: 'h-2 w-2',\n lg: 'h-3 w-3',\n sm: 'h-1.5 w-1.5',\n },\n },\n})\n\ntype DotProps = React.HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof dotVariants> & {\n label?: string\n pulse?: boolean\n }\n\nexport const Dot = forwardRef<HTMLSpanElement, DotProps>(\n function Dot({ className, color, label, pulse = false, size, ...props }, ref) {\n return (\n <span\n className={cx('relative inline-flex items-center', label !== undefined && 'gds-gap-sm', className)}\n data-component=\"dot\"\n ref={ref}\n {...props}\n >\n <span className={dotVariants({ color, size })} />\n {pulse && (\n <span\n className={cx(\n 'absolute inset-0 animate-ping gds-radius-badge opacity-40',\n dotVariants({ color, size }),\n )}\n />\n )}\n {label !== undefined && (\n <span className=\"gds-text-label text-fg-muted\">{label}</span>\n )}\n </span>\n )\n },\n)\n\nexport { dotVariants }\nexport type { DotProps }\n","import type { CSSProperties, ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype FocusRingProps = {\n children: ReactNode\n color?: string\n width?: number\n offset?: number\n className?: string\n}\n\nconst FocusRing = forwardRef<HTMLSpanElement, FocusRingProps>(function FocusRing(\n { children, color = 'var(--gds-accent)', width = 2, offset = 2, className },\n ref,\n) {\n const style: CSSProperties = {\n '--focus-ring-color': color,\n '--focus-ring-width': `${width}px`,\n '--focus-ring-offset': `${offset}px`,\n } as CSSProperties\n\n return (\n <span\n ref={ref}\n className={cx(\n 'relative inline-flex [&:focus-within]:outline [&:focus-within]:outline-[length:var(--focus-ring-width)] [&:focus-within]:outline-[color:var(--focus-ring-color)] [&:focus-within]:outline-offset-[var(--focus-ring-offset)]',\n className,\n )}\n data-component=\"focus-ring\"\n style={style}\n >\n {children}\n </span>\n )\n})\n\nexport { FocusRing }\nexport type { FocusRingProps }\n","// glow-effect — container that adds a colored glow/aura behind its content via box-shadow\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype GlowIntensity = 'sm' | 'default' | 'lg'\n\ntype IntensityConfig = {\n blur: number\n opacity: number\n spread: number\n}\n\nconst intensityMap: Record<GlowIntensity, IntensityConfig> = {\n sm: { blur: 20, opacity: 15, spread: 4 },\n default: { blur: 32, opacity: 18, spread: 8 },\n lg: { blur: 48, opacity: 25, spread: 12 },\n}\n\nfunction buildShadow(color: string, config: IntensityConfig): string {\n const outer = `0 0 ${config.blur}px ${config.spread}px color-mix(in srgb, ${color} ${config.opacity}%, transparent)`\n const innerBlur = Math.round(config.blur * 0.4)\n const innerSpread = Math.round(config.spread * 0.5)\n const innerOpacity = Math.round(config.opacity * 1.5)\n const inner = `0 0 ${innerBlur}px ${innerSpread}px color-mix(in srgb, ${color} ${innerOpacity}%, transparent)`\n return `${outer}, ${inner}`\n}\n\nexport type GlowEffectProps = {\n children: React.ReactNode\n className?: string\n color?: string\n intensity?: GlowIntensity\n radius?: number\n}\n\nexport const GlowEffect = forwardRef<HTMLDivElement, GlowEffectProps>(\n function GlowEffect(\n { children, className, color = 'var(--gds-accent)', intensity = 'default', radius },\n ref,\n ) {\n const config = intensityMap[intensity]\n return (\n <div\n ref={ref}\n data-component=\"glow-effect\"\n className={cx('relative', className)}\n style={{\n borderRadius: radius !== undefined ? `${radius}px` : undefined,\n boxShadow: buildShadow(color, config),\n }}\n >\n {children}\n </div>\n )\n },\n)\n","// gradient-border — container with a gradient border via background-clip trick\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type GradientBorderProps = {\n children: React.ReactNode\n gradient?: string\n width?: number\n radius?: number\n className?: string\n}\n\nexport const GradientBorder = forwardRef<HTMLDivElement, GradientBorderProps>(\n function GradientBorder(\n {\n children,\n gradient = 'linear-gradient(135deg, var(--gds-accent), var(--gds-success))',\n width = 1,\n radius = 12,\n className,\n },\n ref,\n ) {\n const innerRadius = Math.max(0, radius - width)\n\n return (\n <div\n ref={ref}\n data-component=\"gradient-border\"\n className={cx(className)}\n style={{ background: gradient, padding: width, borderRadius: radius }}\n >\n <div\n className=\"bg-bg\"\n style={{ borderRadius: innerRadius }}\n >\n {children}\n </div>\n </div>\n )\n },\n)\n","// loading — loading indicator variants (dots, bars, pulse, ring, wave)\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype LoadingSize = 'default' | 'lg' | 'sm'\n\ntype LoadingProps = {\n className?: string\n size?: LoadingSize\n}\n\nconst sizeClasses: Record<LoadingSize, { container: string; dot: string }> = {\n default: { container: 'gap-1.5', dot: 'h-2 w-2' },\n lg: { container: 'gap-2', dot: 'h-3 w-3' },\n sm: { container: 'gap-1', dot: 'h-1.5 w-1.5' },\n}\n\nconst barSizeClasses: Record<LoadingSize, { bar: string; container: string }> = {\n default: { bar: 'w-1 h-4', container: 'gap-1 h-4' },\n lg: { bar: 'w-1.5 h-6', container: 'gap-1.5 h-6' },\n sm: { bar: 'w-0.5 h-3', container: 'gap-0.5 h-3' },\n}\n\nconst pulseSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4',\n lg: 'h-6 w-6',\n sm: 'h-3 w-3',\n}\n\nconst ringSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4 border-2',\n lg: 'h-6 w-6 border-[3px]',\n sm: 'h-3 w-3 border-[1.5px]',\n}\n\nexport const LoadingDots = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingDots({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-dots\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2].map((i) => (\n <span\n className={cx('rounded-full bg-accent', s.dot)}\n key={i}\n style={{\n animation: 'loading-dots 1.4s infinite ease-in-out both',\n animationDelay: `${i * 0.16}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingBars = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingBars({ className, size = 'default' }, ref) {\n const s = barSizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-bars\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-sm bg-accent', s.bar)}\n key={i}\n style={{\n animation: 'loading-bars 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingPulse = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingPulse({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-pulse\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx('rounded-full bg-accent', pulseSizeClasses[size])}\n style={{ animation: 'loading-pulse 2s infinite ease-in-out' }}\n />\n </div>\n )\n },\n)\n\nexport const LoadingRing = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingRing({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-ring\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx(\n 'animate-spin rounded-full border-accent border-t-transparent',\n ringSizeClasses[size],\n )}\n />\n </div>\n )\n },\n)\n\nexport const LoadingWave = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingWave({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-end', s.container, className)}\n data-component=\"loading-wave\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-full bg-fg-muted', s.dot)}\n key={i}\n style={{\n animation: 'loading-wave 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport type { LoadingProps, LoadingSize }\n","// number-stepper — increment/decrement buttons for number-input\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype NumberStepperProps = {\n direction: 'decrement' | 'increment'\n disabled?: boolean\n onClick: () => void\n}\n\nconst btnBase =\n 'flex items-center justify-center select-none px-2 text-fg-muted hover:text-fg hover:bg-bg-tertiary transition-colors disabled:cursor-not-allowed disabled:opacity-50'\n\nconst NumberStepper = forwardRef<HTMLButtonElement, NumberStepperProps>(function NumberStepper(\n { direction, disabled, onClick },\n ref,\n) {\n const isDecrement = direction === 'decrement'\n return (\n <button\n ref={ref}\n aria-label={direction}\n className={cx(\n btnBase,\n isDecrement ? 'rounded-l-[inherit] border-r border-border' : 'rounded-r-[inherit] border-l border-border',\n )}\n disabled={disabled}\n onClick={onClick}\n tabIndex={-1}\n type=\"button\"\n >\n {isDecrement ? '-' : '+'}\n </button>\n )\n})\n\nexport { NumberStepper }\nexport type { NumberStepperProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef, useCallback } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport type { VariantProps } from '../utils/types'\nimport { NumberStepper } from './number-stepper'\n\nconst numberInputVariants = cva(\n 'flex items-center gds-radius-input border bg-bg text-fg transition-colors ' +\n '[&:has(input:focus-visible)]:ring-2 [&:has(input:focus-visible)]:ring-accent [&:has(input:focus-visible)]:ring-offset-1 [&:has(input:focus-visible)]:ring-offset-bg',\n {\n compoundVariants: [\n {\n error: true,\n className:\n '[&:has(input:focus-visible)]:ring-danger',\n },\n ],\n defaultVariants: {\n error: false,\n inputSize: 'default',\n },\n variants: {\n error: {\n false: 'border-border hover:border-border-strong',\n true: 'border-danger',\n },\n inputSize: {\n default: 'gds-h gds-text-body',\n sm: 'gds-h-sm gds-text-label',\n },\n },\n },\n)\n\ntype NumberInputProps = VariantProps<typeof numberInputVariants> & {\n className?: string\n disabled?: boolean\n glass?: boolean\n max?: number\n min?: number\n onChange: (value: number | null) => void\n placeholder?: string\n prefix?: string\n step?: number\n suffix?: string\n value: number | null\n}\n\nfunction clamp(val: number, min?: number, max?: number): number {\n let result = val\n if (min !== undefined && result < min) {\n result = min\n }\n if (max !== undefined && result > max) {\n result = max\n }\n return result\n}\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(\n { className, disabled, error, glass, inputSize, max, min, onChange, placeholder, prefix, step = 1, suffix, value },\n ref,\n ) {\n const handleDecrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base - step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleIncrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base + step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (raw === '') {\n onChange(null)\n return\n }\n const parsed = Number(raw)\n if (Number.isNaN(parsed)) {\n return\n }\n onChange(clamp(parsed, min, max))\n },\n [min, max, onChange],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n handleIncrement()\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n handleDecrement()\n }\n },\n [handleIncrement, handleDecrement],\n )\n\n return (\n <div\n className={cx(\n numberInputVariants({ error, inputSize }),\n glassClass(glass),\n glass === true && 'border-white/10 bg-bg/60',\n disabled === true && 'cursor-not-allowed opacity-50',\n className,\n )}\n data-component=\"number-input\"\n >\n <NumberStepper direction=\"decrement\" disabled={disabled} onClick={handleDecrement} />\n {prefix !== undefined && <span className=\"shrink-0 select-none pl-1 text-fg-muted/50\">{prefix}</span>}\n <input\n className={cx(\n 'min-w-0 flex-1 bg-transparent text-center outline-none placeholder:text-fg-muted/50',\n '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none',\n )}\n disabled={disabled}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={ref}\n type=\"number\"\n value={value ?? ''}\n />\n {suffix !== undefined && <span className=\"shrink-0 select-none pr-1 text-fg-muted/50\">{suffix}</span>}\n <NumberStepper direction=\"increment\" disabled={disabled} onClick={handleIncrement} />\n </div>\n )\n },\n)\n\nexport { NumberInput,numberInputVariants }\nexport type { NumberInputProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport { renderPortal } from '../utils/portal'\n\ntype ScreenOverlayProps = {\n visible: boolean\n glass?: boolean\n onClick?: () => void\n className?: string\n}\n\nconst ScreenOverlayInner = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlayInner({ visible, glass, onClick, className }, ref) {\n if (!visible) return null\n\n return (\n <div\n className={cx(\n 'fixed inset-0 z-40',\n glass === true ? glassClass(true) : 'bg-black/50',\n className,\n )}\n data-component=\"screen-overlay\"\n onClick={onClick}\n ref={ref}\n />\n )\n },\n)\n\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlay(props, ref) {\n return renderPortal(<ScreenOverlayInner ref={ref} {...props} />)\n },\n)\n\nexport type { ScreenOverlayProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ScrollAreaProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n maxHeight?: number | string\n orientation?: 'both' | 'horizontal' | 'vertical'\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n { children, className, maxHeight, orientation = 'vertical', style, ...props },\n ref,\n ) {\n return (\n <div\n className={cx(\n orientation === 'vertical' && 'overflow-x-hidden overflow-y-auto',\n orientation === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n orientation === 'both' && 'overflow-auto',\n className,\n )}\n data-component=\"scroll-area\"\n ref={ref}\n style={{\n ...style,\n maxHeight:\n maxHeight !== undefined\n ? typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n : undefined,\n }}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport type { ScrollAreaProps }\n","// shimmer — skeleton shimmer placeholder effect\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ShimmerProps = React.HTMLAttributes<HTMLDivElement> & {\n height?: string\n rounded?: boolean\n width?: string\n}\n\nexport const Shimmer = forwardRef<HTMLDivElement, ShimmerProps>(\n function Shimmer({ className, height = '20px', rounded = false, width = '100%', ...props }, ref) {\n return (\n <div\n className={cx(\n 'relative overflow-hidden bg-fg-muted/10',\n rounded ? 'rounded-full' : 'rounded-md',\n className,\n )}\n data-component=\"shimmer\"\n ref={ref}\n style={{ width, height }}\n {...props}\n >\n <div className=\"absolute inset-0 animate-[shimmer_1.5s_ease-in-out_infinite] bg-gradient-to-r from-transparent via-fg-muted/5 to-transparent\" />\n </div>\n )\n },\n)\n\nexport type { ShimmerProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype SkipNavProps = {\n targetId?: string\n label?: string\n className?: string\n}\n\nconst SkipNav = forwardRef<HTMLAnchorElement, SkipNavProps>(function SkipNav(\n { targetId = 'main-content', label = 'Skip to content', className },\n ref,\n) {\n return (\n <a\n ref={ref}\n className={cx(\n 'absolute left-2 top-2 z-50 -translate-y-full rounded bg-accent px-3 py-2 text-sm font-medium text-accent-fg transition-transform focus:translate-y-0 focus:outline-none',\n className,\n )}\n data-component=\"skip-nav\"\n href={`#${targetId}`}\n >\n {label}\n </a>\n )\n})\n\nexport { SkipNav }\nexport type { SkipNavProps }\n","// slider — native range input with value display\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype SliderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & {\n disabled?: boolean\n max?: number\n min?: number\n onChange?: (value: number) => void\n step?: number\n value?: number\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n function Slider(\n { className, disabled = false, max = 100, min = 0, onChange, step = 1, value = 0, ...props },\n ref,\n ) {\n return (\n <div className={cx('flex items-center gap-3', className)} data-component=\"slider\" {...props}>\n <input\n className={cx(\n 'h-1.5 w-full cursor-pointer appearance-none rounded-full bg-bg-tertiary accent-accent',\n disabled && 'cursor-not-allowed opacity-50',\n focusCls,\n )}\n disabled={disabled}\n max={max}\n min={min}\n onChange={(e) => onChange?.(Number(e.target.value))}\n ref={ref}\n step={step}\n type=\"range\"\n value={value}\n />\n <span className=\"w-8 shrink-0 text-right font-mono text-xs text-fg-muted tabular-nums\">\n {value}\n </span>\n </div>\n )\n },\n)\n\nexport type { SliderProps }\n","// truncate — text truncation with ellipsis, single or multi-line clamp\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type TruncateProps = {\n children: ReactNode\n lines?: number\n expanded?: boolean\n onToggle?: () => void\n className?: string\n}\n\nexport const Truncate = forwardRef<HTMLDivElement, TruncateProps>(\n function Truncate(\n { children, lines = 1, expanded = false, onToggle, className },\n ref,\n ) {\n const shouldClamp = !expanded\n const isSingleLine = lines === 1\n const isInteractive = onToggle !== undefined\n\n const clampStyle = !isSingleLine && shouldClamp\n ? {\n display: '-webkit-box' as const,\n WebkitLineClamp: lines,\n WebkitBoxOrient: 'vertical' as const,\n overflow: 'hidden' as const,\n }\n : undefined\n\n return (\n <div\n ref={ref}\n className={cx(\n isSingleLine && shouldClamp && 'truncate',\n isInteractive && 'cursor-pointer',\n className,\n )}\n style={clampStyle}\n onClick={isInteractive ? onToggle : undefined}\n data-component=\"truncate\"\n data-expanded={expanded ? 'true' : undefined}\n role={isInteractive ? 'button' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n >\n {children}\n </div>\n )\n },\n)\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { srOnly } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype VisuallyHiddenProps = {\n as?: 'div' | 'span'\n children: ReactNode\n className?: string\n}\n\nconst VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(function VisuallyHidden(\n { as: Tag = 'span', children, className },\n ref,\n) {\n return (\n <Tag ref={ref as never} className={cx(srOnly, className)} data-component=\"visually-hidden\">\n {children}\n </Tag>\n )\n})\n\nexport { VisuallyHidden }\nexport type { VisuallyHiddenProps }\n"],"mappings":"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"}
1
+ {"version":3,"file":"l2-primitives-Le0006ck.js","names":[],"sources":["../src/l2-primitives/anchor.tsx","../src/l2-primitives/badge-dot.tsx","../src/l2-primitives/container.tsx","../src/l2-primitives/divider.tsx","../src/l2-primitives/dot.tsx","../src/l2-primitives/focus-ring.tsx","../src/l2-primitives/glow-effect.tsx","../src/l2-primitives/gradient-border.tsx","../src/l2-primitives/loading.tsx","../src/l2-primitives/number-stepper.tsx","../src/l2-primitives/number-input.tsx","../src/l2-primitives/screen-overlay.tsx","../src/l2-primitives/scroll-area.tsx","../src/l2-primitives/shimmer.tsx","../src/l2-primitives/skip-nav.tsx","../src/l2-primitives/slider.tsx","../src/l2-primitives/truncate.tsx","../src/l2-primitives/visually-hidden.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst anchorVariants = cva(\n 'inline-flex items-center gds-gap-xs underline-offset-2 transition-colors hover:underline ' +\n focusCls,\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'text-accent hover:text-accent/80',\n muted: 'text-fg-muted hover:text-fg',\n },\n },\n },\n)\n\ntype AnchorProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n VariantProps<typeof anchorVariants> & {\n external?: boolean\n externalIcon?: ReactNode\n }\n\nexport const Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(\n function Anchor(\n { children, className, external = false, externalIcon, variant, ...props },\n ref,\n ) {\n return (\n <a\n className={cx(anchorVariants({ variant }), className)}\n data-component=\"anchor\"\n ref={ref}\n {...(external && {\n rel: 'noopener noreferrer',\n target: '_blank',\n })}\n {...props}\n >\n {children}\n {external && externalIcon !== undefined && (\n <span className=\"gds-icon-child-xs\">{externalIcon}</span>\n )}\n </a>\n )\n },\n)\n\nexport { anchorVariants }\nexport type { AnchorProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nconst colorMap = {\n accent: 'bg-accent',\n danger: 'bg-danger',\n success: 'bg-success',\n} as const\n\ntype BadgeDotProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n color?: 'accent' | 'danger' | 'success'\n show?: boolean\n}\n\nexport const BadgeDot = forwardRef<HTMLDivElement, BadgeDotProps>(\n function BadgeDot({ children, className, color = 'danger', show = true, ...props }, ref) {\n return (\n <div\n className={cx('relative inline-flex', className)}\n data-component=\"badge-dot\"\n ref={ref}\n {...props}\n >\n {children}\n {show && (\n <span\n className={cx('absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full', colorMap[color])}\n />\n )}\n </div>\n )\n },\n)\n\nexport type { BadgeDotProps }\n","// container — responsive max-width wrapper with size variants\nimport { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst containerVariants = cva('mx-auto w-full px-4', {\n defaultVariants: { size: 'default' },\n variants: {\n size: {\n default: 'max-w-screen-md',\n full: 'max-w-full',\n lg: 'max-w-screen-lg',\n sm: 'max-w-screen-sm',\n xl: 'max-w-screen-xl',\n },\n },\n})\n\ntype ContainerProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof containerVariants> & {\n children: ReactNode\n }\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, className, size, ...props }, ref) {\n return (\n <div\n className={cx(containerVariants({ size }), className)}\n data-component=\"container\"\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport { containerVariants }\nexport type { ContainerProps }\n","import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dividerVariants = cva('', {\n variants: {\n variant: {\n solid: 'border-solid',\n dashed: 'border-dashed',\n dotted: 'border-dotted',\n },\n },\n defaultVariants: { variant: 'solid' },\n})\n\ntype DividerProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof dividerVariants> & {\n icon?: ReactNode\n label?: string\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst Divider = forwardRef<HTMLDivElement, DividerProps>(\n function Divider({ className, icon, label, orientation = 'horizontal', variant = 'solid', ...props }, ref) {\n const variantCls = dividerVariants({ variant })\n\n if (orientation === 'vertical') {\n return (\n <div\n className={cx('inline-flex h-full flex-col items-center', (icon !== undefined || label !== undefined) && 'gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n {icon !== undefined || label !== undefined ? (\n <>\n <div className={cx('flex-1 border-l border-border', variantCls)} />\n {icon !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>}\n {label !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-text-caption\">{label}</span>}\n <div className={cx('flex-1 border-l border-border', variantCls)} />\n </>\n ) : (\n <div className={cx('h-full border-l border-border', variantCls)} />\n )}\n </div>\n )\n }\n\n if (icon !== undefined || label !== undefined) {\n return (\n <div\n className={cx('flex items-center gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n <div className={cx('flex-1 border-t border-border', variantCls)} />\n {icon !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>}\n {label !== undefined && <span className=\"shrink-0 text-fg-muted/50 gds-text-caption select-none\">{label}</span>}\n <div className={cx('flex-1 border-t border-border', variantCls)} />\n </div>\n )\n }\n\n return (\n <div\n className={cx('h-px w-full', variant === 'solid' ? 'bg-border/50' : cx('border-t border-border', variantCls), className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nexport { Divider, dividerVariants }\nexport type { DividerProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dotVariants = cva('inline-block shrink-0 gds-radius-badge', {\n defaultVariants: {\n color: 'accent',\n size: 'default',\n },\n variants: {\n color: {\n accent: 'bg-accent',\n danger: 'bg-danger',\n muted: 'bg-fg-muted/30',\n success: 'bg-success',\n warning: 'bg-warning',\n },\n size: {\n default: 'h-2 w-2',\n lg: 'h-3 w-3',\n sm: 'h-1.5 w-1.5',\n },\n },\n})\n\ntype DotProps = React.HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof dotVariants> & {\n label?: string\n pulse?: boolean\n }\n\nexport const Dot = forwardRef<HTMLSpanElement, DotProps>(\n function Dot({ className, color, label, pulse = false, size, ...props }, ref) {\n return (\n <span\n className={cx('relative inline-flex items-center', label !== undefined && 'gds-gap-sm', className)}\n data-component=\"dot\"\n ref={ref}\n {...props}\n >\n <span className={dotVariants({ color, size })} />\n {pulse && (\n <span\n className={cx(\n 'absolute inset-0 animate-ping gds-radius-badge opacity-40',\n dotVariants({ color, size }),\n )}\n />\n )}\n {label !== undefined && (\n <span className=\"gds-text-label text-fg-muted\">{label}</span>\n )}\n </span>\n )\n },\n)\n\nexport { dotVariants }\nexport type { DotProps }\n","import type { CSSProperties, ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype FocusRingProps = {\n children: ReactNode\n color?: string\n width?: number\n offset?: number\n className?: string\n}\n\nconst FocusRing = forwardRef<HTMLSpanElement, FocusRingProps>(function FocusRing(\n { children, color = 'var(--gds-accent)', width = 2, offset = 2, className },\n ref,\n) {\n const style: CSSProperties = {\n '--focus-ring-color': color,\n '--focus-ring-width': `${width}px`,\n '--focus-ring-offset': `${offset}px`,\n } as CSSProperties\n\n return (\n <span\n ref={ref}\n className={cx(\n 'relative inline-flex [&:focus-within]:outline [&:focus-within]:outline-[length:var(--focus-ring-width)] [&:focus-within]:outline-[color:var(--focus-ring-color)] [&:focus-within]:outline-offset-[var(--focus-ring-offset)]',\n className,\n )}\n data-component=\"focus-ring\"\n style={style}\n >\n {children}\n </span>\n )\n})\n\nexport { FocusRing }\nexport type { FocusRingProps }\n","// glow-effect — container that adds a colored glow/aura behind its content via box-shadow\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype GlowIntensity = 'sm' | 'default' | 'lg'\n\ntype IntensityConfig = {\n blur: number\n opacity: number\n spread: number\n}\n\nconst intensityMap: Record<GlowIntensity, IntensityConfig> = {\n sm: { blur: 20, opacity: 15, spread: 4 },\n default: { blur: 32, opacity: 18, spread: 8 },\n lg: { blur: 48, opacity: 25, spread: 12 },\n}\n\nfunction buildShadow(color: string, config: IntensityConfig): string {\n const outer = `0 0 ${config.blur}px ${config.spread}px color-mix(in srgb, ${color} ${config.opacity}%, transparent)`\n const innerBlur = Math.round(config.blur * 0.4)\n const innerSpread = Math.round(config.spread * 0.5)\n const innerOpacity = Math.round(config.opacity * 1.5)\n const inner = `0 0 ${innerBlur}px ${innerSpread}px color-mix(in srgb, ${color} ${innerOpacity}%, transparent)`\n return `${outer}, ${inner}`\n}\n\nexport type GlowEffectProps = {\n children: React.ReactNode\n className?: string\n color?: string\n intensity?: GlowIntensity\n radius?: number\n}\n\nexport const GlowEffect = forwardRef<HTMLDivElement, GlowEffectProps>(\n function GlowEffect(\n { children, className, color = 'var(--gds-accent)', intensity = 'default', radius },\n ref,\n ) {\n const config = intensityMap[intensity]\n return (\n <div\n ref={ref}\n data-component=\"glow-effect\"\n className={cx('relative', className)}\n style={{\n borderRadius: radius !== undefined ? `${radius}px` : undefined,\n boxShadow: buildShadow(color, config),\n }}\n >\n {children}\n </div>\n )\n },\n)\n","// gradient-border — container with a gradient border via background-clip trick\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type GradientBorderProps = {\n children: React.ReactNode\n gradient?: string\n width?: number\n radius?: number\n className?: string\n}\n\nexport const GradientBorder = forwardRef<HTMLDivElement, GradientBorderProps>(\n function GradientBorder(\n {\n children,\n gradient = 'linear-gradient(135deg, var(--gds-accent), var(--gds-success))',\n width = 1,\n radius = 12,\n className,\n },\n ref,\n ) {\n const innerRadius = Math.max(0, radius - width)\n\n return (\n <div\n ref={ref}\n data-component=\"gradient-border\"\n className={cx(className)}\n style={{ background: gradient, padding: width, borderRadius: radius }}\n >\n <div\n className=\"bg-bg\"\n style={{ borderRadius: innerRadius }}\n >\n {children}\n </div>\n </div>\n )\n },\n)\n","// loading — loading indicator variants (dots, bars, pulse, ring, wave)\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype LoadingSize = 'default' | 'lg' | 'sm'\n\ntype LoadingProps = {\n className?: string\n size?: LoadingSize\n}\n\nconst sizeClasses: Record<LoadingSize, { container: string; dot: string }> = {\n default: { container: 'gap-1.5', dot: 'h-2 w-2' },\n lg: { container: 'gap-2', dot: 'h-3 w-3' },\n sm: { container: 'gap-1', dot: 'h-1.5 w-1.5' },\n}\n\nconst barSizeClasses: Record<LoadingSize, { bar: string; container: string }> = {\n default: { bar: 'w-1 h-4', container: 'gap-1 h-4' },\n lg: { bar: 'w-1.5 h-6', container: 'gap-1.5 h-6' },\n sm: { bar: 'w-0.5 h-3', container: 'gap-0.5 h-3' },\n}\n\nconst pulseSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4',\n lg: 'h-6 w-6',\n sm: 'h-3 w-3',\n}\n\nconst ringSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4 border-2',\n lg: 'h-6 w-6 border-[3px]',\n sm: 'h-3 w-3 border-[1.5px]',\n}\n\nexport const LoadingDots = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingDots({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-dots\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2].map((i) => (\n <span\n className={cx('rounded-full bg-accent', s.dot)}\n key={i}\n style={{\n animation: 'loading-dots 1.4s infinite ease-in-out both',\n animationDelay: `${i * 0.16}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingBars = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingBars({ className, size = 'default' }, ref) {\n const s = barSizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-bars\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-sm bg-accent', s.bar)}\n key={i}\n style={{\n animation: 'loading-bars 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingPulse = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingPulse({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-pulse\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx('rounded-full bg-accent', pulseSizeClasses[size])}\n style={{ animation: 'loading-pulse 2s infinite ease-in-out' }}\n />\n </div>\n )\n },\n)\n\nexport const LoadingRing = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingRing({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-ring\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx(\n 'animate-spin rounded-full border-accent border-t-transparent',\n ringSizeClasses[size],\n )}\n />\n </div>\n )\n },\n)\n\nexport const LoadingWave = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingWave({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-end', s.container, className)}\n data-component=\"loading-wave\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-full bg-fg-muted', s.dot)}\n key={i}\n style={{\n animation: 'loading-wave 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport type { LoadingProps, LoadingSize }\n","// number-stepper — increment/decrement buttons for number-input\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype NumberStepperProps = {\n direction: 'decrement' | 'increment'\n disabled?: boolean\n onClick: () => void\n}\n\nconst btnBase =\n 'flex items-center justify-center select-none px-2 text-fg-muted hover:text-fg hover:bg-bg-tertiary transition-colors disabled:cursor-not-allowed disabled:opacity-50'\n\nconst NumberStepper = forwardRef<HTMLButtonElement, NumberStepperProps>(function NumberStepper(\n { direction, disabled, onClick },\n ref,\n) {\n const isDecrement = direction === 'decrement'\n return (\n <button\n ref={ref}\n aria-label={direction}\n className={cx(\n btnBase,\n isDecrement ? 'rounded-l-[inherit] border-r border-border' : 'rounded-r-[inherit] border-l border-border',\n )}\n disabled={disabled}\n onClick={onClick}\n tabIndex={-1}\n type=\"button\"\n >\n {isDecrement ? '-' : '+'}\n </button>\n )\n})\n\nexport { NumberStepper }\nexport type { NumberStepperProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef, useCallback } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport type { VariantProps } from '../utils/types'\nimport { NumberStepper } from './number-stepper'\n\nconst numberInputVariants = cva(\n 'flex items-center gds-radius-input border bg-bg text-fg transition-colors ' +\n '[&:has(input:focus-visible)]:ring-2 [&:has(input:focus-visible)]:ring-accent [&:has(input:focus-visible)]:ring-offset-1 [&:has(input:focus-visible)]:ring-offset-bg',\n {\n compoundVariants: [\n {\n error: true,\n className:\n '[&:has(input:focus-visible)]:ring-danger',\n },\n ],\n defaultVariants: {\n error: false,\n inputSize: 'default',\n },\n variants: {\n error: {\n false: 'border-border hover:border-border-strong',\n true: 'border-danger',\n },\n inputSize: {\n default: 'gds-h gds-text-body',\n sm: 'gds-h-sm gds-text-label',\n },\n },\n },\n)\n\ntype NumberInputProps = VariantProps<typeof numberInputVariants> & {\n className?: string\n disabled?: boolean\n glass?: boolean\n max?: number\n min?: number\n onChange: (value: number | null) => void\n placeholder?: string\n prefix?: string\n step?: number\n suffix?: string\n value: number | null\n}\n\nfunction clamp(val: number, min?: number, max?: number): number {\n let result = val\n if (min !== undefined && result < min) {\n result = min\n }\n if (max !== undefined && result > max) {\n result = max\n }\n return result\n}\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(\n { className, disabled, error, glass, inputSize, max, min, onChange, placeholder, prefix, step = 1, suffix, value },\n ref,\n ) {\n const handleDecrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base - step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleIncrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base + step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (raw === '') {\n onChange(null)\n return\n }\n const parsed = Number(raw)\n if (Number.isNaN(parsed)) {\n return\n }\n onChange(clamp(parsed, min, max))\n },\n [min, max, onChange],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n handleIncrement()\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n handleDecrement()\n }\n },\n [handleIncrement, handleDecrement],\n )\n\n return (\n <div\n className={cx(\n numberInputVariants({ error, inputSize }),\n glassClass(glass),\n glass === true && 'border-white/10 bg-bg/60',\n disabled === true && 'cursor-not-allowed opacity-50',\n className,\n )}\n data-component=\"number-input\"\n >\n <NumberStepper direction=\"decrement\" disabled={disabled} onClick={handleDecrement} />\n {prefix !== undefined && <span className=\"shrink-0 select-none pl-1 text-fg-muted/50\">{prefix}</span>}\n <input\n className={cx(\n 'min-w-0 flex-1 bg-transparent text-center outline-none placeholder:text-fg-muted/50',\n '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none',\n )}\n disabled={disabled}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={ref}\n type=\"number\"\n value={value ?? ''}\n />\n {suffix !== undefined && <span className=\"shrink-0 select-none pr-1 text-fg-muted/50\">{suffix}</span>}\n <NumberStepper direction=\"increment\" disabled={disabled} onClick={handleIncrement} />\n </div>\n )\n },\n)\n\nexport { NumberInput, numberInputVariants }\nexport type { NumberInputProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport { renderPortal } from '../utils/portal'\n\ntype ScreenOverlayProps = {\n visible: boolean\n glass?: boolean\n onClick?: () => void\n className?: string\n}\n\nconst ScreenOverlayInner = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlayInner({ visible, glass, onClick, className }, ref) {\n if (!visible) return null\n\n return (\n <div\n className={cx(\n 'fixed inset-0 z-40',\n glass === true ? glassClass(true) : 'bg-black/50',\n className,\n )}\n data-component=\"screen-overlay\"\n onClick={onClick}\n ref={ref}\n />\n )\n },\n)\n\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlay(props, ref) {\n return renderPortal(<ScreenOverlayInner ref={ref} {...props} />)\n },\n)\n\nexport type { ScreenOverlayProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ScrollAreaProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n maxHeight?: number | string\n orientation?: 'both' | 'horizontal' | 'vertical'\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n { children, className, maxHeight, orientation = 'vertical', style, ...props },\n ref,\n ) {\n return (\n <div\n className={cx(\n orientation === 'vertical' && 'overflow-x-hidden overflow-y-auto',\n orientation === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n orientation === 'both' && 'overflow-auto',\n className,\n )}\n data-component=\"scroll-area\"\n ref={ref}\n style={{\n ...style,\n maxHeight:\n maxHeight !== undefined\n ? typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n : undefined,\n }}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport type { ScrollAreaProps }\n","// shimmer — skeleton shimmer placeholder effect\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ShimmerProps = React.HTMLAttributes<HTMLDivElement> & {\n height?: string\n rounded?: boolean\n width?: string\n}\n\nexport const Shimmer = forwardRef<HTMLDivElement, ShimmerProps>(\n function Shimmer({ className, height = '20px', rounded = false, width = '100%', ...props }, ref) {\n return (\n <div\n className={cx(\n 'relative overflow-hidden bg-fg-muted/10',\n rounded ? 'rounded-full' : 'rounded-md',\n className,\n )}\n data-component=\"shimmer\"\n ref={ref}\n style={{ width, height }}\n {...props}\n >\n <div className=\"absolute inset-0 animate-[shimmer_1.5s_ease-in-out_infinite] bg-gradient-to-r from-transparent via-fg-muted/5 to-transparent\" />\n </div>\n )\n },\n)\n\nexport type { ShimmerProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype SkipNavProps = {\n targetId?: string\n label?: string\n className?: string\n}\n\nconst SkipNav = forwardRef<HTMLAnchorElement, SkipNavProps>(function SkipNav(\n { targetId = 'main-content', label = 'Skip to content', className },\n ref,\n) {\n return (\n <a\n ref={ref}\n className={cx(\n 'absolute left-2 top-2 z-50 -translate-y-full rounded bg-accent px-3 py-2 text-sm font-medium text-accent-fg transition-transform focus:translate-y-0 focus:outline-none',\n className,\n )}\n data-component=\"skip-nav\"\n href={`#${targetId}`}\n >\n {label}\n </a>\n )\n})\n\nexport { SkipNav }\nexport type { SkipNavProps }\n","// slider — native range input with value display\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype SliderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & {\n disabled?: boolean\n max?: number\n min?: number\n onChange?: (value: number) => void\n step?: number\n value?: number\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n function Slider(\n { className, disabled = false, max = 100, min = 0, onChange, step = 1, value = 0, ...props },\n ref,\n ) {\n return (\n <div className={cx('flex items-center gap-3', className)} data-component=\"slider\" {...props}>\n <input\n className={cx(\n 'h-1.5 w-full cursor-pointer appearance-none rounded-full bg-bg-tertiary accent-accent',\n disabled && 'cursor-not-allowed opacity-50',\n focusCls,\n )}\n disabled={disabled}\n max={max}\n min={min}\n onChange={(e) => onChange?.(Number(e.target.value))}\n ref={ref}\n step={step}\n type=\"range\"\n value={value}\n />\n <span className=\"w-8 shrink-0 text-right font-mono text-xs text-fg-muted tabular-nums\">\n {value}\n </span>\n </div>\n )\n },\n)\n\nexport type { SliderProps }\n","// truncate — text truncation with ellipsis, single or multi-line clamp\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type TruncateProps = {\n children: ReactNode\n lines?: number\n expanded?: boolean\n onToggle?: () => void\n className?: string\n}\n\nexport const Truncate = forwardRef<HTMLDivElement, TruncateProps>(\n function Truncate(\n { children, lines = 1, expanded = false, onToggle, className },\n ref,\n ) {\n const shouldClamp = !expanded\n const isSingleLine = lines === 1\n const isInteractive = onToggle !== undefined\n\n const clampStyle = !isSingleLine && shouldClamp\n ? {\n display: '-webkit-box' as const,\n WebkitLineClamp: lines,\n WebkitBoxOrient: 'vertical' as const,\n overflow: 'hidden' as const,\n }\n : undefined\n\n return (\n <div\n ref={ref}\n className={cx(\n isSingleLine && shouldClamp && 'truncate',\n isInteractive && 'cursor-pointer',\n className,\n )}\n style={clampStyle}\n onClick={isInteractive ? onToggle : undefined}\n data-component=\"truncate\"\n data-expanded={expanded ? 'true' : undefined}\n role={isInteractive ? 'button' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n >\n {children}\n </div>\n )\n },\n)\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { srOnly } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype VisuallyHiddenProps = {\n as?: 'div' | 'span'\n children: ReactNode\n className?: string\n}\n\nconst VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(function VisuallyHidden(\n { as: Tag = 'span', children, className },\n ref,\n) {\n return (\n <Tag ref={ref as never} className={cx(srOnly, className)} data-component=\"visually-hidden\">\n {children}\n </Tag>\n )\n})\n\nexport { VisuallyHidden }\nexport type { VisuallyHiddenProps }\n"],"mappings":"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"}
@@ -7,6 +7,12 @@ export type AlertProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typ
7
7
  onClose?: () => void;
8
8
  glass?: boolean;
9
9
  };
10
- export declare function Alert({ children, title, variant, onClose, glass, className, ...props }: AlertProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare const Alert: import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
11
+ variant?: "warning" | "info" | "default" | "danger" | "success" | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
13
+ title?: string;
14
+ onClose?: () => void;
15
+ glass?: boolean;
16
+ } & import("react").RefAttributes<HTMLDivElement>>;
11
17
  export { alertVariants };
12
18
  //# sourceMappingURL=alert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/l4-molecules/alert.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,QAAA,MAAM,aAAa;;8EAclB,CAAA;AA8BD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAC3D,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAEH,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAkC9G;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/l4-molecules/alert.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD,QAAA,MAAM,aAAa;;8EAclB,CAAA;AA8BD,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAC3D,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAEH,eAAO,MAAM,KAAK;;;YALN,MAAM;cACJ,MAAM,IAAI;YACZ,OAAO;kDAwClB,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import { i as e, n as t, r as n, t as r } from "../stepper-DWJfv7TA.js";
2
- import { $ as i, A as a, At as o, B as s, Bt as c, C as l, Ct as u, D as d, Dt as f, E as p, Et as m, F as h, Ft as g, G as _, Gt as v, H as y, Ht as b, I as x, It as S, J as C, Jt as w, K as T, Kt as E, L as D, Lt as O, M as k, Mt as A, N as j, Nt as M, O as N, Ot as P, P as F, Pt as I, Q as L, Qt as R, R as z, Rt as B, S as V, St as H, T as U, Tt as W, U as G, Ut as K, V as q, Vt as J, W as Y, Wt as X, X as Z, Xt as Q, Y as $, Yt as ee, Z as te, Zt as ne, _ as re, _t as ie, a as ae, at as oe, b as se, bt as ce, c as le, ct as ue, d as de, dt as fe, et as pe, f as me, ft as he, g as ge, gt as _e, h as ve, ht as ye, i as be, it as xe, j as Se, jt as Ce, k as we, kt as Te, l as Ee, lt as De, m as Oe, mt as ke, n as Ae, nt as je, o as Me, ot as Ne, p as Pe, pt as Fe, q as Ie, qt as Le, r as Re, rt as ze, s as Be, st as Ve, t as He, tt as Ue, u as We, ut as Ge, v as Ke, vt as qe, w as Je, wt as Ye, x as Xe, xt as Ze, y as Qe, yt as $e, z as et, zt as tt } from "../l4-molecules-8C6E6Ndl.js";
2
+ import { $ as i, A as a, At as o, B as s, Bt as c, C as l, Ct as u, D as d, Dt as f, E as p, Et as m, F as h, Ft as g, G as _, Gt as v, H as y, Ht as b, I as x, It as S, J as C, Jt as w, K as T, Kt as E, L as D, Lt as O, M as k, Mt as A, N as j, Nt as M, O as N, Ot as P, P as F, Pt as I, Q as L, Qt as R, R as z, Rt as B, S as V, St as H, T as U, Tt as W, U as G, Ut as K, V as q, Vt as J, W as Y, Wt as X, X as Z, Xt as Q, Y as $, Yt as ee, Z as te, Zt as ne, _ as re, _t as ie, a as ae, at as oe, b as se, bt as ce, c as le, ct as ue, d as de, dt as fe, et as pe, f as me, ft as he, g as ge, gt as _e, h as ve, ht as ye, i as be, it as xe, j as Se, jt as Ce, k as we, kt as Te, l as Ee, lt as De, m as Oe, mt as ke, n as Ae, nt as je, o as Me, ot as Ne, p as Pe, pt as Fe, q as Ie, qt as Le, r as Re, rt as ze, s as Be, st as Ve, t as He, tt as Ue, u as We, ut as Ge, v as Ke, vt as qe, w as Je, wt as Ye, x as Xe, xt as Ze, y as Qe, yt as $e, z as et, zt as tt } from "../l4-molecules-DftsX-gO.js";
3
3
  import { a as nt, i as rt, n as it, o as at, r as ot, t as st } from "../toast-DN5xANLM.js";
4
4
  export { n as Accordion, e as AccordionItem, R as ActionCard, ne as ActionMenu, ee as Alert, at as AuditEntry, w as Banner, Le as BeforeAfter, E as Breadcrumb, v as BulkActionBar, X as Callout, c as Card, J as CardContent, b as CardFooter, K as CardHeader, tt as CategoryTag, B as CertBadge, O as ChipGroup, S as CodeBlock, g as CodeSnippet, I as Collapsible, M as ColorPicker, A as Combobox, Ce as CommandMenu, P as ConfirmDialog, f as ContextMenu, m as CopyField, W as CopyToClipboard, Ye as CurrencyDisplay, u as CurrencyInput, H as DataCard, Ze as DateDisplay, ce as DateRangeInput, $e as Description, Te as Dialog, o as DialogFooter, qe as Dock, ie as DownloadButton, _e as Drawer, ye as DropZone, ke as Dropdown, Fe as Editable, he as EmojiPicker, fe as EmptyPlaceholder, Ge as EmptySearch, De as EnvironmentBadge, ue as FieldGroup, Ve as FieldSet, ze as FieldWrapper, Ne as FileUpload, oe as FilterBar, xe as FormActions, Ue as GlassButton, i as GlassCard, L as HoverCard, te as InfoRow, nt as InlineEdit, Z as InputGroup, $ as InputWithButton, C as KeyValueList, Ie as KvTable, T as LinkPreview, rt as ListItem, _ as LoadingOverlay, Y as MediaObject, G as MentionInput, y as MetricRow, q as MetricTile, s as MultiSelect, et as NavItem, ot as Notification, z as NotificationBell, D as NotificationDot, x as OverflowMenu, h as PageNav, F as Pagination, j as Panel, k as PasswordInput, Se as PhoneInput, a as PinInput, we as Popover, t as ProgressSteps, N as QuickStat, d as RadioCard, p as SearchInput, Je as Select, l as Sheet, V as SliderField, Xe as SortableHeader, se as SplitButton, Qe as StackedProgress, Ke as StatComparison, re as StatusBarComponent, r as Stepper, Oe as TabGroup, ve as Tabs, Pe as TagInput, it as TaskItem, me as TimePicker, de as TimelineEntry, st as Toast, We as ToggleField, le as ToolbarGeneric, Be as ToolbarGroup, Ee as ToolbarSeparator, Me as UserCard, ae as UserInfo, be as UserMenu, Re as VersionBadge, Ae as Watermark, He as Wizard, Q as alertVariants, je as glassButtonVariants, pe as glassCardVariants, U as selectVariants, ge as tabVariants };
@@ -166,19 +166,19 @@ var A = x(function({ className: t, description: n, icon: r, onClick: i, title: a
166
166
  r: "6.5"
167
167
  }), /* @__PURE__ */ O("path", { d: "M5.5 5.5l5 5M10.5 5.5l-5 5" })]
168
168
  })
169
- };
170
- function F({ children: n, title: r, variant: i = "default", onClose: a, glass: o, className: s, ...c }) {
171
- let l = i ?? "default";
169
+ }, F = x(function({ children: n, title: r, variant: i = "default", onClose: a, glass: o, className: s, ...c }, l) {
170
+ let u = i ?? "default";
172
171
  return /* @__PURE__ */ k("div", {
172
+ ref: l,
173
173
  className: e(N({ variant: i }), o === !0 && t(o), s),
174
174
  "data-component": "alert",
175
- "data-variant": l,
175
+ "data-variant": u,
176
176
  role: "alert",
177
177
  ...c,
178
178
  children: [
179
179
  /* @__PURE__ */ O("span", {
180
180
  className: "mt-px shrink-0",
181
- children: P[l]
181
+ children: P[u]
182
182
  }),
183
183
  /* @__PURE__ */ k("div", {
184
184
  className: "min-w-0 flex-1",
@@ -208,10 +208,7 @@ function F({ children: n, title: r, variant: i = "default", onClose: a, glass: o
208
208
  })
209
209
  ]
210
210
  });
211
- }
212
- //#endregion
213
- //#region src/l4-molecules/banner.tsx
214
- var ee = {
211
+ }), ee = {
215
212
  danger: "bg-danger/10 text-danger",
216
213
  info: "bg-accent/10 text-accent",
217
214
  success: "bg-success/10 text-success",
@@ -4067,4 +4064,4 @@ var Sn = x(function({ className: n, disabled: r = !1, error: a = !1, glass: o, m
4067
4064
  //#endregion
4068
4065
  export { ht as $, Qt as A, Ae as At, It as B, de as Bt, ln as C, Re as Ct, rn as D, Me as Dt, sn as E, Ne as Et, Ht as F, be as Ft, Tt as G, se as Gt, At as H, me as Ht, Vt as I, ye as It, xt as J, ne as Jt, wt as K, ae as Kt, Bt as L, ve as Lt, Yt as M, De as Mt, Gt as N, we as Nt, tn as O, je as Ot, Ut as P, xe as Pt, _t as Q, A as Qt, Rt as R, _e as Rt, un as S, Be as St, K as T, Pe as Tt, Ot as U, fe as Ut, Mt as V, pe as Vt, Et as W, ue as Wt, yt as X, N as Xt, bt as Y, F as Yt, vt as Z, M as Zt, gn as _, Ke as _t, An as a, dt as at, pn as b, Ue as bt, En as c, ot as ct, wn as d, et as dt, H as et, Sn as f, $e as ft, X as g, Je as gt, Z as h, Ye as ht, jn as i, ft as it, Zt as j, Oe as jt, en as k, R as kt, Dn as l, it as lt, _n as m, Xe as mt, Nn as n, V as nt, kn as o, ut as ot, yn as p, Ze as pt, St as q, re as qt, Mn as r, pt as rt, On as s, st, Pn as t, mt as tt, Tn as u, tt as ut, hn as v, Ge as vt, cn as w, Fe as wt, dn as x, He as xt, mn as y, We as yt, Lt as z, he as zt };
4069
4066
 
4070
- //# sourceMappingURL=l4-molecules-8C6E6Ndl.js.map
4067
+ //# sourceMappingURL=l4-molecules-DftsX-gO.js.map