@assure-one/design-system 1.41.1 → 1.42.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 (37) hide show
  1. package/dist/brand-scope-B7w3-y9E.d.ts +262 -0
  2. package/dist/{chunk-KUSY7BLL.js → chunk-AF3QYJ24.js} +3 -3
  3. package/dist/{chunk-KUSY7BLL.js.map → chunk-AF3QYJ24.js.map} +1 -1
  4. package/dist/{chunk-XV2VSEA5.js → chunk-H53VF62B.js} +14 -10
  5. package/dist/chunk-H53VF62B.js.map +1 -0
  6. package/dist/{chunk-NBI7E3VT.js → chunk-M2HMZ2RW.js} +243 -219
  7. package/dist/chunk-M2HMZ2RW.js.map +1 -0
  8. package/dist/{chunk-PTI4B2OI.js → chunk-YMRSFVW7.js} +23 -19
  9. package/dist/chunk-YMRSFVW7.js.map +1 -0
  10. package/dist/{chunk-X76J4QSJ.js → chunk-YRHRVOLV.js} +4 -4
  11. package/dist/{chunk-X76J4QSJ.js.map → chunk-YRHRVOLV.js.map} +1 -1
  12. package/dist/css/components.css +1 -1
  13. package/dist/css/tokens.css +8 -8
  14. package/dist/{data-table-view-ep8al7P9.d.ts → data-table-view-BN3GgNdp.d.ts} +186 -2
  15. package/dist/{design-system-provider-CfD2g2lY.d.ts → design-system-provider-CrBRFQjR.d.ts} +1 -1
  16. package/dist/icons/index.d.ts +1 -1
  17. package/dist/icons/index.js +2 -2
  18. package/dist/index.d.ts +67 -414
  19. package/dist/index.js +242 -129
  20. package/dist/index.js.map +1 -1
  21. package/dist/legacy/index.d.ts +11 -4
  22. package/dist/legacy/index.js +4 -4
  23. package/dist/next/index.d.ts +2 -2
  24. package/dist/{reference-BkDbrPIB.d.ts → reference-B5azRUoi.d.ts} +4 -4
  25. package/dist/styles.css +1 -1
  26. package/dist/suite/index.d.ts +14 -3
  27. package/dist/suite/index.js +4 -4
  28. package/dist/tokens/index.d.ts +1 -1
  29. package/dist/tokens/index.js +1 -1
  30. package/dist/{types-Coqw8iaS.d.ts → types-aBQCboFH.d.ts} +1 -1
  31. package/docs/components.md +5 -5
  32. package/docs/components.registry.json +5 -5
  33. package/package.json +1 -1
  34. package/dist/brand-scope-BOHId6BY.d.ts +0 -58
  35. package/dist/chunk-NBI7E3VT.js.map +0 -1
  36. package/dist/chunk-PTI4B2OI.js.map +0 -1
  37. package/dist/chunk-XV2VSEA5.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { cn, LoaderIcon, ChevronDownIcon, ChevronUpIcon, CheckIcon, MinusIcon, ChevronRightIcon, CircleIcon, FileTextIcon, EyeOffIcon, EyeIcon, XIcon, AlertTriangleIcon, UploadIcon } from './chunk-KUSY7BLL.js';
1
+ import { cn, LoaderIcon, ChevronDownIcon, ChevronUpIcon, CheckIcon, MinusIcon, ChevronRightIcon, CircleIcon, FileTextIcon, EyeOffIcon, EyeIcon, XIcon, AlertTriangleIcon, UploadIcon } from './chunk-AF3QYJ24.js';
2
2
  import * as React7 from 'react';
3
3
  import { createContext, forwardRef, useMemo, useState, useRef, useCallback, useEffect, useContext, useId as useId$1, useLayoutEffect } from 'react';
4
4
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -140,9 +140,10 @@ var BUTTON_SIZES = {
140
140
  // scale's 14, so the glyph column is left to the base until D5.
141
141
  sm: "ds:h-(--control-height-sm) ds:px-(--control-padding-x-sm) ds:text-(length:--control-font-size-sm) ds:gap-(--control-gap-sm)",
142
142
  xl: "ds:h-(--control-height-xl) ds:px-(--control-padding-x-xl) ds:text-(length:--control-font-size-xl) ds:gap-(--control-gap-xl) ds:[&_svg]:size-(--control-icon-xl)",
143
- // A1 mismatches (D5): today's pixels through the compat height tokens.
144
- md: "ds:h-(--button-height-md) ds:px-4 ds:text-sm ds:gap-2",
145
- lg: "ds:h-(--button-height-lg) ds:px-6 ds:text-base ds:gap-2",
143
+ // D5 (W2-05): md/lg now read the shared scale (36px / 40px), same as
144
+ // every other row, instead of the old compat tokens (40px / 48px).
145
+ md: "ds:h-(--control-height-md) ds:px-(--control-padding-x-md) ds:text-(length:--control-font-size-md) ds:gap-(--control-gap-md)",
146
+ lg: "ds:h-(--control-height-lg) ds:px-(--control-padding-x-lg) ds:text-(length:--control-font-size-lg) ds:gap-(--control-gap-lg)",
146
147
  // Icon-only sizes: square, today's pixels through the compat tokens
147
148
  // (C-BTN-SIZE-ICON). Hit target ≥ 24px (WCAG 2.5.5 floor); `icon-xs` /
148
149
  // `icon-sm` are for dense in-row action stacks where `icon` (40×40) would
@@ -157,6 +158,15 @@ var buttonBase = cva(
157
158
  microInteractions.pressable,
158
159
  "ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)]",
159
160
  "ds:disabled:pointer-events-none ds:[&:disabled:not([data-loading=true])]:bg-bg-disabled ds:[&:disabled:not([data-loading=true])]:text-fg-disabled",
161
+ // `pointer-events-none` alone leaves the cursor showing whatever's
162
+ // beneath (or the inherited pointer), which reads as clickable in a
163
+ // screenshot or with assistive tooling that bypasses pointer-events.
164
+ // Every other control in the family (Checkbox, RadioGroup, Switch,
165
+ // Tabs, ToggleGroup) already pairs its disabled state with
166
+ // `cursor-not-allowed`; Button/IconButton/Chip share this recipe, so
167
+ // this one line brings all three in line. Excluded while loading,
168
+ // which already gets its own `cursor-wait` below.
169
+ "ds:[&:disabled:not([data-loading=true])]:cursor-not-allowed",
160
170
  "ds:data-[loading=true]:cursor-wait",
161
171
  "ds:[&_svg]:size-4 ds:[&_svg]:shrink-0"
162
172
  ),
@@ -196,194 +206,6 @@ function resolveButtonIcons({ iconStart, iconEnd, iconLeft, iconRight }, compone
196
206
  }
197
207
  return { start: iconStart ?? iconLeft, end: iconEnd ?? iconRight };
198
208
  }
199
-
200
- // src/foundation/messages/en.ts
201
- var EN_MESSAGES = {
202
- select: { clear: "Clear selection", placeholder: "Select..." },
203
- searchInput: { clear: "Clear search", placeholder: "Search..." },
204
- combobox: {
205
- empty: "No results",
206
- loading: "Loading\u2026",
207
- create: (query) => `Create \u201C${query}\u201D`,
208
- clear: "Clear",
209
- toggle: "Show options",
210
- remove: (label) => `Remove ${label}`
211
- },
212
- field: { optional: "optional" },
213
- fileUpload: {
214
- prompt: "Click to upload",
215
- dragHint: " or drag and drop",
216
- accepted: (accept) => `Accepted: ${accept}`,
217
- maxSize: (size) => `Max size: ${size}`
218
- },
219
- confirm: {
220
- confirm: "Confirm",
221
- cancel: "Cancel",
222
- failed: "Something went wrong. Please try again."
223
- },
224
- overlay: { close: "Close" },
225
- toast: { region: "Notifications", dismiss: "Dismiss" },
226
- commandPalette: {
227
- name: "Command palette",
228
- instructions: "Search and run commands",
229
- search: "Type a command or search...",
230
- empty: "No results found.",
231
- navigate: "Navigate",
232
- select: "Select",
233
- close: "Close",
234
- escapeKey: "esc"
235
- },
236
- keyboardShortcuts: {
237
- name: "Keyboard Shortcuts",
238
- general: "General",
239
- commandPalette: "Command palette",
240
- focusSearch: "Focus search",
241
- keyboardShortcuts: "Keyboard shortcuts",
242
- closeOrBack: "Close / go back",
243
- then: "then",
244
- hintPrefix: "Press",
245
- hintSuffix: "anytime to toggle this dialog"
246
- },
247
- pagination: {
248
- region: (page, total) => `Pagination, page ${page} of ${total}`,
249
- range: (start, end, total) => `${start}\u2013${end} of ${total}`,
250
- page: (page, total) => `Page ${page} of ${total}`,
251
- previous: "Previous page",
252
- next: "Next page",
253
- rowsPerPage: "Rows per page"
254
- },
255
- copyButton: { copy: "Copy to clipboard", copied: "Copied" },
256
- loadingRows: { loading: "Loading" },
257
- progress: { progress: "Progress" },
258
- segmentedProgress: { step: (filled, steps) => `Step ${filled} of ${steps}` },
259
- breadcrumb: { region: "Breadcrumb" },
260
- input: { showPassword: "Show password", hidePassword: "Hide password" },
261
- avatar: {
262
- image: "Avatar",
263
- unknownUser: "Unknown user",
264
- status: (status) => `${status} status`
265
- },
266
- avatarGroup: {
267
- overflow: (count) => `+${count}`,
268
- overflowLabel: (count) => `${count} more`
269
- },
270
- otpInput: { name: "One-time password" },
271
- datePicker: {
272
- openCalendar: "Open calendar",
273
- pickYear: "Pick a year",
274
- previousDecade: "Previous decade",
275
- nextDecade: "Next decade"
276
- },
277
- dateRangePicker: { name: "Date range", placeholder: "Select date range" },
278
- dismissibleChip: {
279
- remove: "Remove filter",
280
- removeNamed: (label) => `Remove ${label} filter`
281
- },
282
- multiFilterPill: {
283
- clear: (label) => `Clear ${label} filter`,
284
- clearSelection: "Clear selection"
285
- },
286
- searchSelect: {
287
- placeholder: "Search...",
288
- createNew: "Create new",
289
- all: "All",
290
- remove: (label) => `Remove ${label}`,
291
- empty: "No results found.",
292
- noOptions: "No options available.",
293
- clear: "Clear",
294
- clearNamed: (label) => `Clear ${label}`,
295
- toggle: "Show options",
296
- changeNamed: (label) => `Change ${label}`
297
- },
298
- phoneField: {
299
- country: "Country",
300
- searchCountries: "Search countries",
301
- noCountries: "No countries found"
302
- },
303
- phoneCountryInput: {
304
- selectCountry: "Select country code",
305
- searchCountries: "Search country or code...",
306
- noCountries: "No countries found"
307
- },
308
- starRating: {
309
- rating: (rating, max) => `${rating} out of ${max} stars`,
310
- half: "half"
311
- },
312
- fileTypeBadge: { file: (code) => `${code} file` },
313
- attachmentChip: {
314
- view: (name) => `View ${name}`,
315
- download: (name) => `Download ${name}`
316
- },
317
- masterDetailLayout: { back: "Back" },
318
- sidebar: {
319
- collapse: "Collapse sidebar",
320
- expand: "Expand sidebar",
321
- pin: "Pin sidebar",
322
- unpin: "Unpin sidebar",
323
- collapseSection: "Collapse section",
324
- expandSection: "Expand section",
325
- navigation: "Navigation"
326
- },
327
- shell: { content: "Page content" },
328
- bottomNav: { region: "Primary" },
329
- dashGrid: { reorder: "Reorder widget" },
330
- folderTree: {
331
- collapse: (name) => `Collapse ${name}`,
332
- expand: (name) => `Expand ${name}`
333
- },
334
- appHeader: { search: "Search\u2026" },
335
- bulkActionBar: { clearSelection: "Clear selection" },
336
- errorState: {
337
- title: "Something went wrong",
338
- retry: "Try again",
339
- showDetails: "Show details",
340
- hideDetails: "Hide details"
341
- },
342
- dataTable: {
343
- search: "Search\u2026",
344
- of: "of",
345
- searchLabel: "Search",
346
- columns: "Columns",
347
- filterAll: "All",
348
- selectAll: "Select all rows",
349
- selectRow: "Select row"
350
- },
351
- tableStates: { loading: "Loading", empty: "No results" },
352
- table: { region: "Scrollable table" },
353
- stackedBarChart: { region: "Scrollable chart" },
354
- pdfPreview: { region: "PDF preview" },
355
- spreadsheetPreview: { region: "Spreadsheet preview" },
356
- peoplePicker: { assignToMe: "Assign to me" },
357
- comingSoon: { eyebrow: "Coming soon", badge: "In Development" }
358
- };
359
-
360
- // src/foundation/provider/context.tsx
361
- var DesignSystemContext = createContext(null);
362
- function useDsMessages(namespace, override) {
363
- const provided = useContext(DesignSystemContext)?.messages?.[namespace];
364
- return useMemo(
365
- () => ({ ...EN_MESSAGES[namespace], ...stripUndefined(provided), ...stripUndefined(override) }),
366
- [namespace, provided, override]
367
- );
368
- }
369
- function stripUndefined(value) {
370
- if (!value) return {};
371
- const out = {};
372
- for (const key of Object.keys(value)) {
373
- if (value[key] !== void 0) out[key] = value[key];
374
- }
375
- return out;
376
- }
377
- function useLinkComponent() {
378
- return useContext(DesignSystemContext)?.linkComponent;
379
- }
380
- function useImageComponent() {
381
- return useContext(DesignSystemContext)?.imageComponent;
382
- }
383
- var TOOLTIP_DEFAULT_DELAY_MS = 300;
384
- function useSharedTooltipProvider() {
385
- return useContext(DesignSystemContext)?.sharedTooltipProvider ?? false;
386
- }
387
209
  var SPINNER_TONE_TO_INTENT = {
388
210
  current: void 0,
389
211
  muted: "neutral",
@@ -821,7 +643,7 @@ function warnLegacyButtonProps(component, { variant, size, iconLeft, iconRight }
821
643
  // src/primitives/behavior/inert.ts
822
644
  var INERT_ATTRIBUTES = { "aria-disabled": true, tabIndex: -1 };
823
645
  var INERT_CLASSES = "ds:pointer-events-none";
824
- var DISABLED_LOOK_CLASSES = "ds:bg-bg-disabled ds:text-fg-disabled";
646
+ var DISABLED_LOOK_CLASSES = "ds:bg-bg-disabled ds:text-fg-disabled ds:cursor-not-allowed";
825
647
  var isActivationKey = (key) => key === "Enter" || key === " ";
826
648
  function inertHandlers(inert, handlers) {
827
649
  return {
@@ -946,6 +768,194 @@ var Button = forwardRef(function Button2({
946
768
  });
947
769
  Button.displayName = "Button";
948
770
 
771
+ // src/foundation/messages/en.ts
772
+ var EN_MESSAGES = {
773
+ select: { clear: "Clear selection", placeholder: "Select..." },
774
+ searchInput: { clear: "Clear search", placeholder: "Search..." },
775
+ combobox: {
776
+ empty: "No results",
777
+ loading: "Loading\u2026",
778
+ create: (query) => `Create \u201C${query}\u201D`,
779
+ clear: "Clear",
780
+ toggle: "Show options",
781
+ remove: (label) => `Remove ${label}`
782
+ },
783
+ field: { optional: "optional" },
784
+ fileUpload: {
785
+ prompt: "Click to upload",
786
+ dragHint: " or drag and drop",
787
+ accepted: (accept) => `Accepted: ${accept}`,
788
+ maxSize: (size) => `Max size: ${size}`
789
+ },
790
+ confirm: {
791
+ confirm: "Confirm",
792
+ cancel: "Cancel",
793
+ failed: "Something went wrong. Please try again."
794
+ },
795
+ overlay: { close: "Close" },
796
+ toast: { region: "Notifications", dismiss: "Dismiss" },
797
+ commandPalette: {
798
+ name: "Command palette",
799
+ instructions: "Search and run commands",
800
+ search: "Type a command or search...",
801
+ empty: "No results found.",
802
+ navigate: "Navigate",
803
+ select: "Select",
804
+ close: "Close",
805
+ escapeKey: "esc"
806
+ },
807
+ keyboardShortcuts: {
808
+ name: "Keyboard Shortcuts",
809
+ general: "General",
810
+ commandPalette: "Command palette",
811
+ focusSearch: "Focus search",
812
+ keyboardShortcuts: "Keyboard shortcuts",
813
+ closeOrBack: "Close / go back",
814
+ then: "then",
815
+ hintPrefix: "Press",
816
+ hintSuffix: "anytime to toggle this dialog"
817
+ },
818
+ pagination: {
819
+ region: (page, total) => `Pagination, page ${page} of ${total}`,
820
+ range: (start, end, total) => `${start}\u2013${end} of ${total}`,
821
+ page: (page, total) => `Page ${page} of ${total}`,
822
+ previous: "Previous page",
823
+ next: "Next page",
824
+ rowsPerPage: "Rows per page"
825
+ },
826
+ copyButton: { copy: "Copy to clipboard", copied: "Copied" },
827
+ loadingRows: { loading: "Loading" },
828
+ progress: { progress: "Progress" },
829
+ segmentedProgress: { step: (filled, steps) => `Step ${filled} of ${steps}` },
830
+ breadcrumb: { region: "Breadcrumb" },
831
+ input: { showPassword: "Show password", hidePassword: "Hide password" },
832
+ avatar: {
833
+ image: "Avatar",
834
+ unknownUser: "Unknown user",
835
+ status: (status) => `${status} status`
836
+ },
837
+ avatarGroup: {
838
+ overflow: (count) => `+${count}`,
839
+ overflowLabel: (count) => `${count} more`
840
+ },
841
+ otpInput: { name: "One-time password" },
842
+ datePicker: {
843
+ openCalendar: "Open calendar",
844
+ pickYear: "Pick a year",
845
+ previousDecade: "Previous decade",
846
+ nextDecade: "Next decade"
847
+ },
848
+ dateRangePicker: { name: "Date range", placeholder: "Select date range" },
849
+ dismissibleChip: {
850
+ remove: "Remove filter",
851
+ removeNamed: (label) => `Remove ${label} filter`
852
+ },
853
+ multiFilterPill: {
854
+ clear: (label) => `Clear ${label} filter`,
855
+ clearSelection: "Clear selection"
856
+ },
857
+ searchSelect: {
858
+ placeholder: "Search...",
859
+ createNew: "Create new",
860
+ all: "All",
861
+ remove: (label) => `Remove ${label}`,
862
+ empty: "No results found.",
863
+ noOptions: "No options available.",
864
+ clear: "Clear",
865
+ clearNamed: (label) => `Clear ${label}`,
866
+ toggle: "Show options",
867
+ changeNamed: (label) => `Change ${label}`
868
+ },
869
+ phoneField: {
870
+ country: "Country",
871
+ searchCountries: "Search countries",
872
+ noCountries: "No countries found"
873
+ },
874
+ phoneCountryInput: {
875
+ selectCountry: "Select country code",
876
+ searchCountries: "Search country or code...",
877
+ noCountries: "No countries found"
878
+ },
879
+ starRating: {
880
+ rating: (rating, max) => `${rating} out of ${max} stars`,
881
+ half: "half"
882
+ },
883
+ fileTypeBadge: { file: (code) => `${code} file` },
884
+ attachmentChip: {
885
+ view: (name) => `View ${name}`,
886
+ download: (name) => `Download ${name}`
887
+ },
888
+ masterDetailLayout: { back: "Back" },
889
+ sidebar: {
890
+ collapse: "Collapse sidebar",
891
+ expand: "Expand sidebar",
892
+ pin: "Pin sidebar",
893
+ unpin: "Unpin sidebar",
894
+ collapseSection: "Collapse section",
895
+ expandSection: "Expand section",
896
+ navigation: "Navigation"
897
+ },
898
+ shell: { content: "Page content" },
899
+ bottomNav: { region: "Primary" },
900
+ dashGrid: { reorder: "Reorder widget" },
901
+ folderTree: {
902
+ collapse: (name) => `Collapse ${name}`,
903
+ expand: (name) => `Expand ${name}`
904
+ },
905
+ appHeader: { search: "Search\u2026" },
906
+ bulkActionBar: { clearSelection: "Clear selection" },
907
+ errorState: {
908
+ title: "Something went wrong",
909
+ retry: "Try again",
910
+ showDetails: "Show details",
911
+ hideDetails: "Hide details"
912
+ },
913
+ dataTable: {
914
+ search: "Search\u2026",
915
+ of: "of",
916
+ searchLabel: "Search",
917
+ columns: "Columns",
918
+ filterAll: "All",
919
+ selectAll: "Select all rows",
920
+ selectRow: "Select row"
921
+ },
922
+ tableStates: { loading: "Loading", empty: "No results" },
923
+ table: { region: "Scrollable table" },
924
+ stackedBarChart: { region: "Scrollable chart" },
925
+ pdfPreview: { region: "PDF preview" },
926
+ spreadsheetPreview: { region: "Spreadsheet preview" },
927
+ peoplePicker: { assignToMe: "Assign to me" },
928
+ comingSoon: { eyebrow: "Coming soon", badge: "In Development" }
929
+ };
930
+
931
+ // src/foundation/provider/context.tsx
932
+ var DesignSystemContext = createContext(null);
933
+ function useDsMessages(namespace, override) {
934
+ const provided = useContext(DesignSystemContext)?.messages?.[namespace];
935
+ return useMemo(
936
+ () => ({ ...EN_MESSAGES[namespace], ...stripUndefined(provided), ...stripUndefined(override) }),
937
+ [namespace, provided, override]
938
+ );
939
+ }
940
+ function stripUndefined(value) {
941
+ if (!value) return {};
942
+ const out = {};
943
+ for (const key of Object.keys(value)) {
944
+ if (value[key] !== void 0) out[key] = value[key];
945
+ }
946
+ return out;
947
+ }
948
+ function useLinkComponent() {
949
+ return useContext(DesignSystemContext)?.linkComponent;
950
+ }
951
+ function useImageComponent() {
952
+ return useContext(DesignSystemContext)?.imageComponent;
953
+ }
954
+ var TOOLTIP_DEFAULT_DELAY_MS = 300;
955
+ function useSharedTooltipProvider() {
956
+ return useContext(DesignSystemContext)?.sharedTooltipProvider ?? false;
957
+ }
958
+
949
959
  // src/foundation/anatomy/class-names.ts
950
960
  function slotClassName(classNames, part) {
951
961
  return classNames?.[part];
@@ -958,9 +968,10 @@ var avatarVariants = cva(
958
968
  {
959
969
  variants: {
960
970
  size: {
971
+ // 9px: off-scale, no type role — deliberately left literal (see file comment above).
961
972
  xs: "ds:size-(--avatar-size-xs) ds:text-[9px]",
962
- sm: "ds:size-(--avatar-size-sm) ds:text-[10px]",
963
- md: "ds:size-(--avatar-size-md) ds:text-[11px]",
973
+ sm: "ds:size-(--avatar-size-sm) ds:text-(length:--text-micro)",
974
+ md: "ds:size-(--avatar-size-md) ds:text-(length:--text-caption)",
964
975
  lg: "ds:size-(--avatar-size-lg) ds:text-sm",
965
976
  xl: "ds:size-(--avatar-size-xl) ds:text-base"
966
977
  },
@@ -1355,7 +1366,7 @@ var TooltipContent = React7.forwardRef(({ className, sideOffset = 6, maxWidth =
1355
1366
  ...slot(tooltipAnatomy, "content"),
1356
1367
  ...presence("floating"),
1357
1368
  className: cn(
1358
- "ds:rounded-input ds:border-rule-strong ds:bg-surface ds:z-[var(--z-tooltip)]",
1369
+ "ds:rounded-card ds:border-rule ds:bg-surface ds:z-[var(--z-tooltip)]",
1359
1370
  TOOLTIP_MAX_WIDTH[maxWidth],
1360
1371
  "ds:border ds:px-2.5 ds:py-1.5",
1361
1372
  "ds:font-body ds:text-fg ds:shadow-pop ds:text-xs ds:leading-tight",
@@ -1783,7 +1794,7 @@ var SelectTrigger = React7.forwardRef(({ className, children, tabIndex, size, cl
1783
1794
  {
1784
1795
  ...slot(selectAnatomy, "icon"),
1785
1796
  className: cn(
1786
- "ds:text-fg-3 ds:size-4 ds:shrink-0 ds:translate-y-px ds:transition-transform ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:data-[state=open]:rotate-180 ds:motion-reduce:transition-none",
1797
+ "ds:text-fg-3 ds:size-(--control-icon-md) ds:shrink-0 ds:translate-y-px ds:transition-transform ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:data-[state=open]:rotate-180 ds:motion-reduce:transition-none",
1787
1798
  classNames?.icon
1788
1799
  ),
1789
1800
  "aria-hidden": "true"
@@ -1804,7 +1815,7 @@ var SelectScrollUpButton = React7.forwardRef(({ className, ...props }, ref) => /
1804
1815
  className
1805
1816
  ),
1806
1817
  ...props,
1807
- children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "ds:size-4", "aria-hidden": "true" })
1818
+ children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "ds:size-(--control-icon-md)", "aria-hidden": "true" })
1808
1819
  }
1809
1820
  ));
1810
1821
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
@@ -1818,7 +1829,7 @@ var SelectScrollDownButton = React7.forwardRef(({ className, ...props }, ref) =>
1818
1829
  className
1819
1830
  ),
1820
1831
  ...props,
1821
- children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "ds:size-4", "aria-hidden": "true" })
1832
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "ds:size-(--control-icon-md)", "aria-hidden": "true" })
1822
1833
  }
1823
1834
  ));
1824
1835
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
@@ -1866,7 +1877,7 @@ var SelectLabel = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE
1866
1877
  ref,
1867
1878
  ...slot(selectAnatomy, "label"),
1868
1879
  className: cn(
1869
- groupHeadingClasses({ palette: "neutral", labelSize: "ds:text-[11px]" }),
1880
+ groupHeadingClasses({ palette: "neutral", labelSize: "ds:text-(length:--text-caption)" }),
1870
1881
  className
1871
1882
  ),
1872
1883
  ...props
@@ -2097,6 +2108,9 @@ function mergeRefs(...refs) {
2097
2108
  function useMergedRefs(...refs) {
2098
2109
  return useMemo(() => mergeRefs(...refs), refs);
2099
2110
  }
2111
+
2112
+ // src/primitives/behavior/control-label.ts
2113
+ var CONTROL_LABEL_TEXT = "ds:text-(length:--control-font-size-md)";
2100
2114
  var FieldsetContext = createContext(null);
2101
2115
  function useFieldsetContext() {
2102
2116
  return useContext(FieldsetContext);
@@ -2184,7 +2198,7 @@ var Checkbox = React7.forwardRef(function Checkbox2({
2184
2198
  ...slot(checkboxAnatomy, "root"),
2185
2199
  className: cn(
2186
2200
  "ds:peer ds:border-rule-strong ds:bg-surface ds:text-brand ds:flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center ds:border",
2187
- shape === "circle" ? "ds:rounded-full" : "ds:rounded-[4px]",
2201
+ shape === "circle" ? "ds:rounded-full" : "ds:rounded-badge",
2188
2202
  microInteractions.selection,
2189
2203
  "ds:hover:border-fg-4",
2190
2204
  "ds:focus-visible:[border-color:var(--focus-ring-border)] ds:focus-visible:[box-shadow:var(--shadow-focus-ring-field)] ds:focus-visible:outline-none",
@@ -2210,7 +2224,10 @@ var Checkbox = React7.forwardRef(function Checkbox2({
2210
2224
  {
2211
2225
  htmlFor: wiring.id,
2212
2226
  ...slot(checkboxAnatomy, "label"),
2213
- className: "ds:text-fg ds:peer-disabled:text-fg-disabled ds:cursor-pointer ds:text-[13px] ds:leading-none ds:select-none ds:peer-disabled:cursor-not-allowed",
2227
+ className: cn(
2228
+ "ds:text-fg ds:peer-disabled:text-fg-disabled ds:cursor-pointer ds:leading-none ds:select-none ds:peer-disabled:cursor-not-allowed",
2229
+ CONTROL_LABEL_TEXT
2230
+ ),
2214
2231
  children: label
2215
2232
  }
2216
2233
  )
@@ -2300,7 +2317,7 @@ var Pressable = forwardRef(function Pressable2({
2300
2317
  );
2301
2318
  });
2302
2319
  Pressable.displayName = "Pressable";
2303
- var PRESSABLE_CLASSES = "ds:cursor-pointer ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:data-[disabled]:pointer-events-none";
2320
+ var PRESSABLE_CLASSES = "ds:cursor-pointer ds:focus-visible:outline-none ds:focus-visible:[box-shadow:var(--shadow-focus-ring)] ds:data-[disabled]:pointer-events-none ds:data-[disabled]:cursor-not-allowed";
2304
2321
  function isNativeButton(element) {
2305
2322
  if (element.tagName === "BUTTON") return true;
2306
2323
  if (element.tagName !== "INPUT") return false;
@@ -2784,7 +2801,7 @@ var DropdownMenuSubContent = React7.forwardRef(({ className, ...props }, ref) =>
2784
2801
  ...slot(dropdownMenuAnatomy, "sub-content"),
2785
2802
  ...presence("floating"),
2786
2803
  className: cn(
2787
- "ds:rounded-card ds:border-menu-border ds:bg-menu-bg ds:text-menu-fg ds:shadow-pop ds:z-[var(--z-dropdown)] ds:min-w-[8rem] ds:overflow-hidden ds:border ds:p-1",
2804
+ "ds:rounded-card ds:border-rule ds:bg-menu-bg ds:text-menu-fg ds:shadow-pop ds:z-[var(--z-dropdown)] ds:min-w-[8rem] ds:overflow-hidden ds:border ds:p-1",
2788
2805
  className
2789
2806
  ),
2790
2807
  ...props
@@ -2801,7 +2818,7 @@ var DropdownMenuContent = React7.forwardRef(({ className, sideOffset = 6, align
2801
2818
  sideOffset,
2802
2819
  align,
2803
2820
  className: cn(
2804
- "ds:rounded-card ds:border-menu-border ds:bg-menu-bg ds:text-menu-fg ds:shadow-pop ds:z-[var(--z-dropdown)] ds:min-w-[10rem] ds:overflow-hidden ds:border ds:p-1",
2821
+ "ds:rounded-card ds:border-rule ds:bg-menu-bg ds:text-menu-fg ds:shadow-pop ds:z-[var(--z-dropdown)] ds:min-w-[10rem] ds:overflow-hidden ds:border ds:p-1",
2805
2822
  DROPDOWN_MENU_WIDTH[width],
2806
2823
  className
2807
2824
  ),
@@ -2857,7 +2874,11 @@ var DropdownMenuLabel = React7.forwardRef(({ className, inset, ...props }, ref)
2857
2874
  {
2858
2875
  ref,
2859
2876
  ...slot(dropdownMenuAnatomy, "label"),
2860
- className: cn(menuLabelClasses(PALETTE, "ds:text-[11px]"), inset && MENU_INSET, className),
2877
+ className: cn(
2878
+ menuLabelClasses(PALETTE, "ds:text-(length:--text-overline)"),
2879
+ inset && MENU_INSET,
2880
+ className
2881
+ ),
2861
2882
  ...props
2862
2883
  }
2863
2884
  ));
@@ -2876,7 +2897,7 @@ var DropdownMenuShortcut = ({ className, ...props }) => /* @__PURE__ */ jsx(
2876
2897
  "span",
2877
2898
  {
2878
2899
  ...slot(dropdownMenuAnatomy, "shortcut"),
2879
- className: cn(menuShortcutClasses(PALETTE, "ds:text-[11px]"), className),
2900
+ className: cn(menuShortcutClasses(PALETTE, "ds:text-(length:--text-code)"), className),
2880
2901
  ...props
2881
2902
  }
2882
2903
  );
@@ -3018,8 +3039,8 @@ function FileUpload({
3018
3039
  /* @__PURE__ */ jsx("span", { className: "ds:text-fg ds:font-medium", children: messages.prompt }),
3019
3040
  messages.dragHint
3020
3041
  ] }),
3021
- accept && /* @__PURE__ */ jsx("p", { className: "ds:text-fg-4 ds:font-mono ds:text-[10.5px]", children: messages.accepted(accept) }),
3022
- maxSize && /* @__PURE__ */ jsx("p", { className: "ds:text-fg-4 ds:font-mono ds:text-[10.5px]", children: messages.maxSize(formatBytes(maxSize)) })
3042
+ accept && /* @__PURE__ */ jsx("p", { className: "ds:text-fg-4 ds:font-mono ds:text-(length:--text-code)", children: messages.accepted(accept) }),
3043
+ maxSize && /* @__PURE__ */ jsx("p", { className: "ds:text-fg-4 ds:font-mono ds:text-(length:--text-code)", children: messages.maxSize(formatBytes(maxSize)) })
3023
3044
  ] });
3024
3045
  return /* @__PURE__ */ jsxs(
3025
3046
  "div",
@@ -3158,7 +3179,7 @@ var isScaleRowSize = (size) => size === "xs" || size === "xl";
3158
3179
  var INPUT_SIZE_ROWS = {
3159
3180
  sm: "ds:h-(--control-height-sm) ds:px-2.5 ds:py-1 ds:text-xs",
3160
3181
  md: "ds:h-(--control-height-md) ds:px-3 ds:py-2 ds:text-(length:--control-font-size-md)",
3161
- lg: "ds:h-(--input-height-lg) ds:px-3.5 ds:py-2.5 ds:text-sm",
3182
+ lg: "ds:h-(--control-height-lg) ds:px-3.5 ds:py-2.5 ds:text-sm",
3162
3183
  compact: "ds:h-(--control-height-sm) ds:px-2.5 ds:py-1 ds:text-(length:--control-font-size-md)",
3163
3184
  default: "ds:h-(--control-height-lg) ds:px-3 ds:py-2 ds:text-sm",
3164
3185
  comfortable: "ds:h-(--control-height-xl) ds:px-3.5 ds:py-2.5 ds:text-base"
@@ -3172,9 +3193,12 @@ function inputVariants({
3172
3193
  } = {}) {
3173
3194
  const LEGACY_ROWS = {
3174
3195
  // The `inputSize` rows: today's classes, byte for byte (W2-03 compat).
3196
+ // `lg` moved with `size`'s row at D5 (h-11→h-10, 44px→40px) — the
3197
+ // deprecation message promises "same pixels" as `size`, so the two paths
3198
+ // must never disagree.
3175
3199
  sm: "ds:h-8 ds:px-2.5 ds:py-1 ds:text-xs",
3176
3200
  md: "ds:h-9 ds:px-3 ds:py-2 ds:text-[13px]",
3177
- lg: "ds:h-11 ds:px-3.5 ds:py-2.5 ds:text-sm",
3201
+ lg: "ds:h-10 ds:px-3.5 ds:py-2.5 ds:text-sm",
3178
3202
  compact: "ds:h-8 ds:px-2.5 ds:py-1 ds:text-[13px]",
3179
3203
  default: "ds:h-10 ds:px-3 ds:py-2 ds:text-sm",
3180
3204
  comfortable: "ds:h-12 ds:px-3.5 ds:py-2.5 ds:text-base"
@@ -3190,9 +3214,9 @@ function inputVariants({
3190
3214
  }
3191
3215
  var floatingLabelSize = {
3192
3216
  sm: "ds:text-xs",
3193
- md: "ds:text-[13px]",
3217
+ md: "ds:text-(length:--control-font-size-md)",
3194
3218
  lg: "ds:text-sm",
3195
- compact: "ds:text-[13px]",
3219
+ compact: "ds:text-(length:--control-font-size-md)",
3196
3220
  default: "ds:text-sm",
3197
3221
  comfortable: "ds:text-base",
3198
3222
  xs: "ds:text-(length:--control-font-size-xs)",
@@ -3269,7 +3293,7 @@ var Input = forwardRef(function Input2({
3269
3293
  id: partId(id, "label"),
3270
3294
  ...slot(inputAnatomy, "label"),
3271
3295
  className: cn(
3272
- "ds:text-fg ds:mb-1.5 ds:block ds:text-[13px] ds:leading-none ds:font-medium",
3296
+ "ds:text-fg ds:mb-1.5 ds:block ds:text-(length:--control-font-size-md) ds:leading-none ds:font-medium",
3273
3297
  classNames?.label
3274
3298
  ),
3275
3299
  children: label
@@ -3484,7 +3508,7 @@ var Textarea = forwardRef(function Textarea2({
3484
3508
  id: partId(id, "label"),
3485
3509
  ...slot(textareaAnatomy, "label"),
3486
3510
  className: cn(
3487
- "ds:text-fg ds:mb-1.5 ds:block ds:text-[13px] ds:leading-none ds:font-medium",
3511
+ "ds:text-fg ds:mb-1.5 ds:block ds:text-(length:--control-font-size-md) ds:leading-none ds:font-medium",
3488
3512
  classNames?.label
3489
3513
  ),
3490
3514
  children: label
@@ -3544,7 +3568,7 @@ var Textarea = forwardRef(function Textarea2({
3544
3568
  {
3545
3569
  ...slot(textareaAnatomy, "count"),
3546
3570
  className: cn(
3547
- "ds:text-fg-4 ds:ml-auto ds:font-mono ds:text-[11px]",
3571
+ "ds:text-fg-4 ds:ml-auto ds:font-mono ds:text-(length:--text-caption)",
3548
3572
  classNames?.count
3549
3573
  ),
3550
3574
  children: [
@@ -3749,6 +3773,6 @@ var DocumentRow = forwardRef(function DocumentRow2({ fileName, meta, icon, appro
3749
3773
  });
3750
3774
  DocumentRow.displayName = "DocumentRow";
3751
3775
 
3752
- export { Avatar, Backdrop, Button, CONTROL_GAP_CLASSES, CONTROL_SIZE_CLASSES, Checkbox, DEFAULT_OVERLAY_MESSAGES, DISABLED_LOOK_CLASSES, DISMISS_GLYPH_CLASSES, DesignSystemContext, DismissButton, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentList, DocumentListSection, DocumentRow, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EN_MESSAGES, FIELD_PARTS, FLOATING_PADDING, FLOATING_WIDTH, FieldContext, FieldsetContext, FileChip, FileUpload, FormBridge, INERT_ATTRIBUTES, INERT_CLASSES, IconButton, Input, LIST_ITEM_INDICATOR_WELL, LIST_SEPARATOR, MENU_CHECK_GLYPH, MENU_INDICATOR_WELL, MENU_INSET, MENU_ITEM_DANGER, MENU_RADIO_GLYPH, MENU_SUB_TRIGGER_CHEVRON, ModalContent, ModalDescription, ModalOverlay, ModalPortal, ModalRoot, ModalTitle, OverlayBody, OverlayDescription, OverlayFooter, OverlayHeader, OverlaySurface, OverlayTitle, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, Portal, PortalContainerContext, Pressable, SPINNER_TONE_TO_INTENT, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Spinner, TOOLTIP_DEFAULT_DELAY_MS, Textarea, ThemeScope, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, alertDialogAnatomy, badgeAnatomy, buttonBase, buttonVariants, cardAnatomy, chipAnatomy, codeAnatomy, comboboxAnatomy, commandAnatomy, contextMenuAnatomy, controlChrome, dataTableAnatomy, deprecate, dialogAnatomy, errorOnce, fieldAnatomy, fieldsetAnatomy, floatingSurfaceClasses, groupHeadingClasses, headingAnatomy, iconButtonVariants, inertHandlers, inlineAnatomy, inputVariants, isLabelable, joinIds, kbdAnatomy, labelAnatomy, linkButtonAnatomy, listItemAttributes, listItemClasses, menuIndicatorItemClasses, menuItemClasses, menuLabelClasses, menuSeparatorClasses, menuShortcutClasses, menuSubTriggerClasses, mergeRefs, microInteractions, numberInputAnatomy, optionElementId, paginationAnatomy, partId, phoneFieldAnatomy, presence, radioGroupAnatomy, resolveButtonIcons, resolveButtonStyle, searchInputAnatomy, sheetAnatomy, shellAnatomy, sideDrawerAnatomy, sidebarAnatomy, sidebarBrandSwitcherAnatomy, slot, spinnerVariants, stackAnatomy, stateAttributes, statusBadgeAnatomy, surfaceAnatomy, switchAnatomy, tableAnatomy, textAnatomy, textareaVariants, toastAnatomy, useControllableState, useDsMessages, useExitPresence, useFieldContext, useFieldControl, useFieldsetContext, useFieldsetLegend, useFieldsetState, useFormReset, useId, useImageComponent, useLinkComponent, useMergedRefs, warnLegacyButtonProps, withPortalContainer };
3753
- //# sourceMappingURL=chunk-NBI7E3VT.js.map
3754
- //# sourceMappingURL=chunk-NBI7E3VT.js.map
3776
+ export { Avatar, Backdrop, Button, CONTROL_GAP_CLASSES, CONTROL_LABEL_TEXT, CONTROL_SIZE_CLASSES, Checkbox, DEFAULT_OVERLAY_MESSAGES, DISABLED_LOOK_CLASSES, DISMISS_GLYPH_CLASSES, DesignSystemContext, DismissButton, DocumentDetailActions, DocumentDetailBody, DocumentDetailHeader, DocumentDetailMetaRow, DocumentDetailPanel, DocumentDetailRequester, DocumentDetailTitle, DocumentList, DocumentListSection, DocumentRow, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EN_MESSAGES, FIELD_PARTS, FLOATING_PADDING, FLOATING_WIDTH, FieldContext, FieldsetContext, FileChip, FileUpload, FormBridge, INERT_ATTRIBUTES, INERT_CLASSES, IconButton, Input, LIST_ITEM_INDICATOR_WELL, LIST_SEPARATOR, MENU_CHECK_GLYPH, MENU_INDICATOR_WELL, MENU_INSET, MENU_ITEM_DANGER, MENU_RADIO_GLYPH, MENU_SUB_TRIGGER_CHEVRON, ModalContent, ModalDescription, ModalOverlay, ModalPortal, ModalRoot, ModalTitle, OverlayBody, OverlayDescription, OverlayFooter, OverlayHeader, OverlaySurface, OverlayTitle, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, Portal, PortalContainerContext, Pressable, SPINNER_TONE_TO_INTENT, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Spinner, TOOLTIP_DEFAULT_DELAY_MS, Textarea, ThemeScope, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, alertDialogAnatomy, badgeAnatomy, buttonBase, buttonVariants, cardAnatomy, chipAnatomy, codeAnatomy, comboboxAnatomy, commandAnatomy, contextMenuAnatomy, controlChrome, dataTableAnatomy, deprecate, dialogAnatomy, errorOnce, fieldAnatomy, fieldsetAnatomy, floatingSurfaceClasses, groupHeadingClasses, headingAnatomy, iconButtonVariants, inertHandlers, inlineAnatomy, inputVariants, isLabelable, joinIds, kbdAnatomy, labelAnatomy, linkButtonAnatomy, listItemAttributes, listItemClasses, menuIndicatorItemClasses, menuItemClasses, menuLabelClasses, menuSeparatorClasses, menuShortcutClasses, menuSubTriggerClasses, mergeRefs, microInteractions, numberInputAnatomy, optionElementId, paginationAnatomy, partId, phoneFieldAnatomy, presence, radioGroupAnatomy, resolveButtonIcons, resolveButtonStyle, searchInputAnatomy, sheetAnatomy, shellAnatomy, sideDrawerAnatomy, sidebarAnatomy, sidebarBrandSwitcherAnatomy, slot, spinnerVariants, stackAnatomy, stateAttributes, statusBadgeAnatomy, surfaceAnatomy, switchAnatomy, tableAnatomy, textAnatomy, textareaVariants, toastAnatomy, useControllableState, useDsMessages, useExitPresence, useFieldContext, useFieldControl, useFieldsetContext, useFieldsetLegend, useFieldsetState, useFormReset, useId, useImageComponent, useLinkComponent, useMergedRefs, warnLegacyButtonProps, withPortalContainer };
3777
+ //# sourceMappingURL=chunk-M2HMZ2RW.js.map
3778
+ //# sourceMappingURL=chunk-M2HMZ2RW.js.map