@frontify/fondue-components 23.0.0-rc.1 → 23.0.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 (177) hide show
  1. package/dist/fondue-components.js +46 -50
  2. package/dist/fondue-components.js.map +1 -1
  3. package/dist/fondue-components10.js +27 -24
  4. package/dist/fondue-components10.js.map +1 -1
  5. package/dist/fondue-components11.js +86 -104
  6. package/dist/fondue-components11.js.map +1 -1
  7. package/dist/fondue-components12.js +2 -2
  8. package/dist/fondue-components13.js +82 -79
  9. package/dist/fondue-components13.js.map +1 -1
  10. package/dist/fondue-components14.js +2 -2
  11. package/dist/fondue-components15.js +2 -2
  12. package/dist/fondue-components16.js +2 -2
  13. package/dist/fondue-components17.js +36 -56
  14. package/dist/fondue-components17.js.map +1 -1
  15. package/dist/fondue-components18.js +16 -34
  16. package/dist/fondue-components18.js.map +1 -1
  17. package/dist/fondue-components19.js +73 -18
  18. package/dist/fondue-components19.js.map +1 -1
  19. package/dist/fondue-components20.js +36 -18
  20. package/dist/fondue-components20.js.map +1 -1
  21. package/dist/fondue-components21.js +50 -71
  22. package/dist/fondue-components21.js.map +1 -1
  23. package/dist/fondue-components22.js +138 -36
  24. package/dist/fondue-components22.js.map +1 -1
  25. package/dist/fondue-components23.js +50 -50
  26. package/dist/fondue-components23.js.map +1 -1
  27. package/dist/fondue-components24.js +33 -138
  28. package/dist/fondue-components24.js.map +1 -1
  29. package/dist/fondue-components25.js +193 -52
  30. package/dist/fondue-components25.js.map +1 -1
  31. package/dist/fondue-components26.js +137 -29
  32. package/dist/fondue-components26.js.map +1 -1
  33. package/dist/fondue-components27.js +127 -170
  34. package/dist/fondue-components27.js.map +1 -1
  35. package/dist/fondue-components28.js +30 -134
  36. package/dist/fondue-components28.js.map +1 -1
  37. package/dist/fondue-components29.js +63 -130
  38. package/dist/fondue-components29.js.map +1 -1
  39. package/dist/fondue-components3.js +1 -1
  40. package/dist/fondue-components30.js +101 -31
  41. package/dist/fondue-components30.js.map +1 -1
  42. package/dist/fondue-components31.js +29 -63
  43. package/dist/fondue-components31.js.map +1 -1
  44. package/dist/fondue-components32.js +52 -98
  45. package/dist/fondue-components32.js.map +1 -1
  46. package/dist/fondue-components33.js +20 -12
  47. package/dist/fondue-components33.js.map +1 -1
  48. package/dist/fondue-components34.js +23 -56
  49. package/dist/fondue-components34.js.map +1 -1
  50. package/dist/fondue-components35.js +7 -20
  51. package/dist/fondue-components35.js.map +1 -1
  52. package/dist/fondue-components36.js +6 -7
  53. package/dist/fondue-components36.js.map +1 -1
  54. package/dist/fondue-components37.js +32 -7
  55. package/dist/fondue-components37.js.map +1 -1
  56. package/dist/fondue-components38.js +5 -32
  57. package/dist/fondue-components38.js.map +1 -1
  58. package/dist/fondue-components39.js +12 -5
  59. package/dist/fondue-components39.js.map +1 -1
  60. package/dist/fondue-components4.js +35 -31
  61. package/dist/fondue-components4.js.map +1 -1
  62. package/dist/fondue-components40.js +153 -18
  63. package/dist/fondue-components40.js.map +1 -1
  64. package/dist/fondue-components41.js +22 -59
  65. package/dist/fondue-components41.js.map +1 -1
  66. package/dist/fondue-components42.js +19 -19
  67. package/dist/fondue-components42.js.map +1 -1
  68. package/dist/fondue-components43.js +15 -112
  69. package/dist/fondue-components43.js.map +1 -1
  70. package/dist/fondue-components44.js +30 -19
  71. package/dist/fondue-components44.js.map +1 -1
  72. package/dist/fondue-components45.js +54 -32
  73. package/dist/fondue-components45.js.map +1 -1
  74. package/dist/fondue-components46.js +125 -47
  75. package/dist/fondue-components46.js.map +1 -1
  76. package/dist/fondue-components47.js +20 -129
  77. package/dist/fondue-components47.js.map +1 -1
  78. package/dist/fondue-components48.js +53 -21
  79. package/dist/fondue-components48.js.map +1 -1
  80. package/dist/fondue-components49.js +8 -53
  81. package/dist/fondue-components49.js.map +1 -1
  82. package/dist/fondue-components5.js +2 -2
  83. package/dist/fondue-components50.js +13 -8
  84. package/dist/fondue-components50.js.map +1 -1
  85. package/dist/fondue-components51.js +15 -13
  86. package/dist/fondue-components51.js.map +1 -1
  87. package/dist/fondue-components52.js +4 -14
  88. package/dist/fondue-components52.js.map +1 -1
  89. package/dist/fondue-components53.js +60 -5
  90. package/dist/fondue-components53.js.map +1 -1
  91. package/dist/fondue-components54.js +17 -58
  92. package/dist/fondue-components54.js.map +1 -1
  93. package/dist/fondue-components55.js +19 -18
  94. package/dist/fondue-components55.js.map +1 -1
  95. package/dist/fondue-components56.js +4 -18
  96. package/dist/fondue-components56.js.map +1 -1
  97. package/dist/fondue-components57.js +13 -3
  98. package/dist/fondue-components57.js.map +1 -1
  99. package/dist/fondue-components58.js +3 -11
  100. package/dist/fondue-components58.js.map +1 -1
  101. package/dist/fondue-components59.js +17 -3
  102. package/dist/fondue-components59.js.map +1 -1
  103. package/dist/fondue-components6.js +4 -4
  104. package/dist/fondue-components60.js +10 -17
  105. package/dist/fondue-components60.js.map +1 -1
  106. package/dist/fondue-components61.js +35 -11
  107. package/dist/fondue-components61.js.map +1 -1
  108. package/dist/fondue-components62.js +4 -36
  109. package/dist/fondue-components62.js.map +1 -1
  110. package/dist/fondue-components63.js +13 -35
  111. package/dist/fondue-components63.js.map +1 -1
  112. package/dist/fondue-components64.js +1 -1
  113. package/dist/fondue-components65.js +24 -12
  114. package/dist/fondue-components65.js.map +1 -1
  115. package/dist/fondue-components66.js +16 -4
  116. package/dist/fondue-components66.js.map +1 -1
  117. package/dist/fondue-components67.js +150 -23
  118. package/dist/fondue-components67.js.map +1 -1
  119. package/dist/fondue-components68.js +19 -17
  120. package/dist/fondue-components68.js.map +1 -1
  121. package/dist/fondue-components69.js +75 -148
  122. package/dist/fondue-components69.js.map +1 -1
  123. package/dist/fondue-components7.js +2 -2
  124. package/dist/fondue-components70.js +8 -19
  125. package/dist/fondue-components70.js.map +1 -1
  126. package/dist/fondue-components71.js +36 -77
  127. package/dist/fondue-components71.js.map +1 -1
  128. package/dist/fondue-components72.js +71 -8
  129. package/dist/fondue-components72.js.map +1 -1
  130. package/dist/fondue-components73.js +10 -36
  131. package/dist/fondue-components73.js.map +1 -1
  132. package/dist/fondue-components74.js +12 -70
  133. package/dist/fondue-components74.js.map +1 -1
  134. package/dist/fondue-components75.js +12 -10
  135. package/dist/fondue-components75.js.map +1 -1
  136. package/dist/fondue-components76.js +22 -12
  137. package/dist/fondue-components76.js.map +1 -1
  138. package/dist/fondue-components77.js +34 -13
  139. package/dist/fondue-components77.js.map +1 -1
  140. package/dist/fondue-components78.js +10 -22
  141. package/dist/fondue-components78.js.map +1 -1
  142. package/dist/fondue-components79.js +67 -33
  143. package/dist/fondue-components79.js.map +1 -1
  144. package/dist/fondue-components8.js +5 -5
  145. package/dist/fondue-components80.js +11 -7
  146. package/dist/fondue-components80.js.map +1 -1
  147. package/dist/fondue-components81.js +25 -67
  148. package/dist/fondue-components81.js.map +1 -1
  149. package/dist/fondue-components82.js +18 -14
  150. package/dist/fondue-components82.js.map +1 -1
  151. package/dist/fondue-components83.js +21 -23
  152. package/dist/fondue-components83.js.map +1 -1
  153. package/dist/fondue-components84.js +6 -18
  154. package/dist/fondue-components84.js.map +1 -1
  155. package/dist/fondue-components85.js +19 -22
  156. package/dist/fondue-components85.js.map +1 -1
  157. package/dist/fondue-components86.js +6 -8
  158. package/dist/fondue-components86.js.map +1 -1
  159. package/dist/fondue-components87.js +3 -5
  160. package/dist/fondue-components87.js.map +1 -1
  161. package/dist/fondue-components88.js +5 -2
  162. package/dist/fondue-components88.js.map +1 -1
  163. package/dist/fondue-components89.js +15 -3
  164. package/dist/fondue-components89.js.map +1 -1
  165. package/dist/fondue-components9.js +92 -88
  166. package/dist/fondue-components9.js.map +1 -1
  167. package/dist/fondue-components90.js +2 -5
  168. package/dist/fondue-components90.js.map +1 -1
  169. package/dist/fondue-components91.js +39 -16
  170. package/dist/fondue-components91.js.map +1 -1
  171. package/dist/fondue-components92.js +20 -39
  172. package/dist/fondue-components92.js.map +1 -1
  173. package/dist/index.d.ts +58 -118
  174. package/dist/style.css +1 -1
  175. package/package.json +10 -7
  176. package/dist/fondue-components93.js +0 -9
  177. package/dist/fondue-components93.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components23.js","sources":["../src/components/SegmentedControl/SegmentedControl.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { forwardRef, type ForwardedRef, type ReactElement, type ReactNode } from 'react';\n\nimport { useControllableState } from '#/hooks/useControllableState';\n\nimport styles from './styles/segmentedControl.module.scss';\n\nexport type SegmentedControlRootProps<TValue extends string = string> = {\n id?: string;\n children: ReactNode;\n /**\n * The default value of the segmented control\n * Used for uncontrolled components\n */\n defaultValue: TValue;\n /**\n * The controlled value of the segmented control\n */\n value?: TValue;\n /**\n * Event handler called when the value changes\n */\n onValueChange?: (value: TValue) => void;\n /**\n * Disable the segmented control\n * @default false\n */\n disabled?: boolean;\n /**\n * Specify if the segmented control should only take the width of its content\n * @default true\n */\n hugWidth?: boolean;\n};\n\nexport const SegmentedControlRoot = <TValue extends string = string>(\n {\n children,\n value: propsValue,\n defaultValue,\n onValueChange,\n hugWidth = true,\n ...rootProps\n }: SegmentedControlRootProps<TValue>,\n ref: ForwardedRef<HTMLDivElement>,\n) => {\n const [value, setValue] = useControllableState({\n prop: propsValue,\n defaultProp: defaultValue,\n onChange: onValueChange,\n });\n\n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n {...rootProps}\n className={styles.root}\n onValueChange={(value) => {\n if (value) {\n setValue(value as TValue);\n }\n }}\n value={value}\n type=\"single\"\n asChild={false}\n data-hug-width={hugWidth}\n aria-disabled={rootProps.disabled}\n >\n {children}\n {/* Active indicator */}\n <div className={styles.activeIndicator} />\n </ToggleGroupPrimitive.Root>\n );\n};\nSegmentedControlRoot.displayName = 'SegmentedControl.Root';\n\ntype SegmentedControlItemProps = {\n children: ReactNode;\n value: string;\n};\n\nexport const SegmentedControlItem = (\n { children, ...itemProps }: SegmentedControlItemProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) => (\n <ToggleGroupPrimitive.Item ref={ref} {...itemProps} className={styles.item} asChild={false}>\n {/* Separator */}\n <span className={styles.separator} />\n <span className={styles.itemLabel}>\n {/* Active children */}\n <span className={styles.itemLabelActive}>{children}</span>\n\n {/* Inactive children */}\n <span className={styles.itemLabelInactive}>{children}</span>\n </span>\n </ToggleGroupPrimitive.Item>\n);\nSegmentedControlItem.displayName = 'SegmentedControl.Item';\n\nexport const SegmentedControl = {\n Root: forwardRef(SegmentedControlRoot) as <TValue extends string = string>(\n props: SegmentedControlRootProps<TValue> & { ref?: ForwardedRef<HTMLDivElement> },\n ) => ReactElement,\n Item: forwardRef(SegmentedControlItem),\n};\n"],"names":["SegmentedControlRoot","children","propsValue","defaultValue","onValueChange","hugWidth","rootProps","ref","value","setValue","useControllableState","jsxs","ToggleGroupPrimitive","styles","jsx","SegmentedControlItem","itemProps","SegmentedControl","forwardRef"],"mappings":";;;;;AAqCO,MAAMA,IAAuB,CAChC;AAAA,EACI,UAAAC;AAAA,EACA,OAAOC;AAAA,EACP,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAGC;AACP,GACAC,MACC;AACD,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAqB;AAAA,IAC3C,MAAMR;AAAA,IACN,aAAaC;AAAA,IACb,UAAUC;AAAA,EAAA,CACb;AAED,SACI,gBAAAO;AAAA,IAACC,EAAqB;AAAA,IAArB;AAAA,MACG,KAAAL;AAAA,MACC,GAAGD;AAAA,MACJ,WAAWO,EAAO;AAAA,MAClB,eAAe,CAACL,MAAU;AACtB,QAAIA,KACAC,EAASD,CAAe;AAAA,MAEhC;AAAA,MACA,OAAAA;AAAA,MACA,MAAK;AAAA,MACL,SAAS;AAAA,MACT,kBAAgBH;AAAA,MAChB,iBAAeC,EAAU;AAAA,MAExB,UAAA;AAAA,QAAAL;AAAA,QAED,gBAAAa,EAAC,OAAA,EAAI,WAAWD,EAAO,gBAAA,CAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGpD;AACAb,EAAqB,cAAc;AAO5B,MAAMe,IAAuB,CAChC,EAAE,UAAAd,GAAU,GAAGe,EAAA,GACfT,MAEA,gBAAAI,EAACC,EAAqB,MAArB,EAA0B,KAAAL,GAAW,GAAGS,GAAW,WAAWH,EAAO,MAAM,SAAS,IAEjF,UAAA;AAAA,EAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,UAAA,CAAW;AAAA,EACnC,gBAAAF,EAAC,QAAA,EAAK,WAAWE,EAAO,WAEpB,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,iBAAkB,UAAAZ,GAAS;AAAA,IAGnD,gBAAAa,EAAC,QAAA,EAAK,WAAWD,EAAO,mBAAoB,UAAAZ,EAAA,CAAS;AAAA,EAAA,EAAA,CACzD;AAAA,EAAA,CACJ;AAEJc,EAAqB,cAAc;AAE5B,MAAME,IAAmB;AAAA,EAC5B,MAAMC,EAAWlB,CAAoB;AAAA,EAGrC,MAAMkB,EAAWH,CAAoB;AACzC;"}
1
+ {"version":3,"file":"fondue-components23.js","sources":["../src/components/Slider/Slider.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport * as RadixSlider from '@radix-ui/react-slider';\nimport { type ForwardedRef, forwardRef, useRef } from 'react';\n\nimport { type CommonAriaAttrs } from '#/utilities/types';\n\nimport styles from './styles/slider.module.scss';\n\nexport type SliderProps = {\n id?: string;\n name?: string;\n /**\n * The default value of the slider\n * Used for uncontrolled components\n * @default [0]\n */\n defaultValue?: number[];\n /**\n * The controlled value of the slider\n * @default [0]\n */\n value?: number[];\n /**\n * Minimum value of the slider\n * @default 0\n */\n min?: number;\n /**\n * Maximum value of the slider\n * @default 100\n */\n max?: number;\n /**\n * The granularity with which the slider can step through values\n * @default 1\n */\n step?: number;\n /**\n * The minimum steps between thumbs in a range slider\n * @default 0\n */\n minStepsBetweenThumbs?: number;\n /**\n * Disable the slider\n * @default false\n */\n disabled?: boolean;\n onChange?: (value: number[]) => void;\n onCommit?: (value: number[]) => void;\n 'data-test-id'?: string;\n} & CommonAriaAttrs;\n\nconst SliderComponent = (\n {\n value,\n defaultValue = [0],\n onChange,\n onCommit,\n 'data-test-id': dataTestId = 'fondue-slider',\n ...props\n }: SliderProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) => {\n const sliderThumbRef = useRef<HTMLSpanElement | null>(null);\n return (\n <RadixSlider.Root\n ref={ref}\n className={styles.root}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onChange}\n onValueCommit={onCommit}\n data-test-id={dataTestId}\n {...props}\n >\n <RadixSlider.Track\n onPointerDown={() => {\n if (sliderThumbRef.current) {\n sliderThumbRef.current.dataset.showFocusRing = 'false';\n }\n }}\n className={styles.track}\n >\n <RadixSlider.Range className={styles.range} />\n </RadixSlider.Track>\n {(value || defaultValue).map((_, index) => (\n <RadixSlider.Thumb\n ref={sliderThumbRef}\n className={styles.thumb}\n onPointerDown={(event) => {\n event.currentTarget.dataset.showFocusRing = 'false';\n }}\n onBlur={(event) => {\n event.currentTarget.dataset.showFocusRing = 'true';\n }}\n key={index}\n />\n ))}\n </RadixSlider.Root>\n );\n};\n\nexport const Slider = forwardRef<HTMLButtonElement, SliderProps>(SliderComponent);\nSlider.displayName = 'Slider';\n"],"names":["SliderComponent","value","defaultValue","onChange","onCommit","dataTestId","props","ref","sliderThumbRef","useRef","jsxs","RadixSlider","styles","jsx","_","index","event","Slider","forwardRef"],"mappings":";;;;AAqDA,MAAMA,IAAkB,CACpB;AAAA,EACI,OAAAC;AAAA,EACA,cAAAC,IAAe,CAAC,CAAC;AAAA,EACjB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAgBC,IAAa;AAAA,EAC7B,GAAGC;AACP,GACAC,MACC;AACD,QAAMC,IAAiBC,EAA+B,IAAI;AAC1D,SACI,gBAAAC;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACG,KAAAJ;AAAA,MACA,WAAWK,EAAO;AAAA,MAClB,OAAAX;AAAA,MACA,cAAAC;AAAA,MACA,eAAeC;AAAA,MACf,eAAeC;AAAA,MACf,gBAAcC;AAAA,MACb,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAO;AAAA,UAACF,EAAY;AAAA,UAAZ;AAAA,YACG,eAAe,MAAM;AACjB,cAAIH,EAAe,YACfA,EAAe,QAAQ,QAAQ,gBAAgB;AAAA,YAEvD;AAAA,YACA,WAAWI,EAAO;AAAA,YAElB,4BAACD,EAAY,OAAZ,EAAkB,WAAWC,EAAO,MAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,SAE9CX,KAASC,GAAc,IAAI,CAACY,GAAGC,MAC7B,gBAAAF;AAAA,UAACF,EAAY;AAAA,UAAZ;AAAA,YACG,KAAKH;AAAA,YACL,WAAWI,EAAO;AAAA,YAClB,eAAe,CAACI,MAAU;AACtB,cAAAA,EAAM,cAAc,QAAQ,gBAAgB;AAAA,YAChD;AAAA,YACA,QAAQ,CAACA,MAAU;AACf,cAAAA,EAAM,cAAc,QAAQ,gBAAgB;AAAA,YAChD;AAAA,UAAA;AAAA,UACKD;AAAA,QAAA,CAEZ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb,GAEaE,IAASC,EAA2ClB,CAAe;AAChFiB,EAAO,cAAc;"}
@@ -1,141 +1,36 @@
1
- import { jsxs as d, jsx as a } from "react/jsx-runtime";
2
- import { IconCaretDown as T, IconCheckMark as $, IconExclamationMarkTriangle as A } from "@frontify/fondue-icons";
3
- import * as g from "@radix-ui/react-popover";
4
- import { Slot as q } from "@radix-ui/react-slot";
5
- import { useSelect as J } from "downshift";
6
- import { forwardRef as K, useRef as L, useState as Q } from "react";
7
- import { ForwardedRefCombobox as U } from "./fondue-components69.js";
8
- import { ForwardedRefSelectItem as W, ForwardedRefSelectItemGroup as X } from "./fondue-components70.js";
9
- import { SelectMenu as Y } from "./fondue-components71.js";
10
- import { ForwardedRefSelectSlot as Z } from "./fondue-components72.js";
11
- import o from "./fondue-components73.js";
12
- import { useSelectData as _ } from "./fondue-components74.js";
13
- const S = ({
14
- children: h,
15
- onSelect: s,
16
- value: b,
17
- defaultValue: I,
18
- placeholder: N = "",
19
- status: n = "neutral",
20
- disabled: m,
21
- alignMenu: w = "start",
22
- side: y = "bottom",
23
- id: C,
24
- showStringValue: R = !0,
25
- "data-test-id": c = "fondue-select",
26
- viewportCollisionPadding: x = "compact",
27
- ...l
28
- }, F) => {
29
- const { inputSlots: v, menuSlots: k, items: B, clearButton: u, getItemByValue: p } = _(h), M = p(I), P = p(b), i = L(!1), [G, f] = Q(!1), { getToggleButtonProps: O, getMenuProps: z, getItemProps: D, reset: V, selectedItem: r, isOpen: j, highlightedIndex: E } = J({
30
- items: B,
31
- defaultSelectedItem: M,
32
- selectedItem: P,
33
- toggleButtonId: C,
34
- labelId: "aria-labelledby" in l ? l["aria-labelledby"] : void 0,
35
- onIsOpenChange: () => {
36
- f(!1);
37
- },
38
- onHighlightedIndexChange: () => {
39
- f(!0);
40
- },
41
- onSelectedItemChange: ({ selectedItem: e }) => {
42
- s == null || s((e == null ? void 0 : e.value) ?? null);
43
- },
44
- itemToString: (e) => e ? e.label : ""
45
- }), H = r ? !R && r.children || r.label : N;
46
- return /* @__PURE__ */ d(g.Root, { open: j, children: [
47
- /* @__PURE__ */ a(
48
- g.Anchor,
49
- {
50
- asChild: !0,
51
- onMouseDown: (e) => {
52
- i.current = !0, e.currentTarget.dataset.showFocusRing = "false";
53
- },
54
- onFocus: (e) => {
55
- i.current || (e.target.dataset.showFocusRing = "true");
56
- },
57
- onBlur: (e) => {
58
- e.target.dataset.showFocusRing = "false", i.current = !1;
59
- },
60
- children: /* @__PURE__ */ d(
61
- "div",
62
- {
63
- className: o.root,
64
- "data-status": n,
65
- "data-disabled": m,
66
- "data-empty": !r,
67
- "data-test-id": c,
68
- ...m ? {} : O({
69
- "aria-label": "aria-label" in l ? l["aria-label"] : void 0,
70
- ref: F
71
- }),
72
- children: [
73
- /* @__PURE__ */ a("span", { className: o.selectedValue, children: H }),
74
- v,
75
- u ? /* @__PURE__ */ a(
76
- q,
77
- {
78
- onClick: (e) => {
79
- e.stopPropagation(), V();
80
- },
81
- className: o.clear,
82
- children: u
83
- }
84
- ) : null,
85
- /* @__PURE__ */ d("div", { className: o.icons, children: [
86
- /* @__PURE__ */ a(T, { size: 16, className: o.caret }),
87
- n === "success" ? /* @__PURE__ */ a(
88
- $,
89
- {
90
- size: 16,
91
- className: o.iconSuccess,
92
- "data-test-id": `${c}-success-icon`
93
- }
94
- ) : null,
95
- n === "error" ? /* @__PURE__ */ a(
96
- A,
97
- {
98
- size: 16,
99
- className: o.iconError,
100
- "data-test-id": `${c}-error-icon`
101
- }
102
- ) : null
103
- ] })
104
- ]
105
- }
106
- )
107
- }
108
- ),
109
- /* @__PURE__ */ a(
110
- Y,
111
- {
112
- align: w,
113
- side: y,
114
- highlightedIndex: E,
115
- getMenuProps: z,
116
- getItemProps: D,
117
- selectedItem: r,
118
- hasInteractedSinceOpening: G,
119
- viewportCollisionPadding: x,
120
- children: k
121
- }
122
- )
123
- ] });
124
- };
125
- S.displayName = "Select";
126
- const ee = K(S), t = ee;
127
- t.displayName = "Select";
128
- t.Combobox = U;
129
- t.Combobox.displayName = "Select.Combobox";
130
- t.Item = W;
131
- t.Item.displayName = "Select.Item";
132
- t.Group = X;
133
- t.Group.displayName = "Select.Group";
134
- t.Slot = Z;
135
- t.Slot.displayName = "Select.Slot";
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import * as o from "@radix-ui/react-switch";
3
+ import { forwardRef as n } from "react";
4
+ import { useTranslation as f } from "./fondue-components34.js";
5
+ import { cn as p } from "./fondue-components39.js";
6
+ import t from "./fondue-components74.js";
7
+ const u = ({
8
+ value: a,
9
+ defaultValue: r,
10
+ size: i = "medium",
11
+ onChange: m,
12
+ "data-test-id": c = "fondue-switch",
13
+ "aria-label": s,
14
+ ...d
15
+ }, h) => {
16
+ const { t: l } = f();
17
+ return /* @__PURE__ */ e(
18
+ o.Root,
19
+ {
20
+ ref: h,
21
+ checked: a,
22
+ defaultChecked: r,
23
+ className: p([t.root, t[i]]),
24
+ onCheckedChange: m,
25
+ "aria-label": s ?? l("Switch_defaultLabel"),
26
+ "data-test-id": c,
27
+ ...d,
28
+ children: /* @__PURE__ */ e(o.Thumb, { className: t.thumb })
29
+ }
30
+ );
31
+ }, w = n(u);
32
+ w.displayName = "Switch";
136
33
  export {
137
- ee as ForwardedRefSelect,
138
- t as Select,
139
- S as SelectInput
34
+ w as Switch
140
35
  };
141
36
  //# sourceMappingURL=fondue-components24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components24.js","sources":["../src/components/Select/Select.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown, IconCheckMark, IconExclamationMarkTriangle } from '@frontify/fondue-icons';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { Slot as RadixSlot } from '@radix-ui/react-slot';\nimport { useSelect } from 'downshift';\nimport { forwardRef, useRef, useState, type ForwardedRef, type ReactNode } from 'react';\n\nimport { type CommonAriaProps } from '#/helpers/aria';\n\nimport { ForwardedRefCombobox } from './Combobox';\nimport { ForwardedRefSelectItem, ForwardedRefSelectItemGroup } from './SelectItem';\nimport { SelectMenu, type SelectMenuViewportCollisionPadding } from './SelectMenu';\nimport { ForwardedRefSelectSlot } from './SelectSlot';\nimport styles from './styles/select.module.scss';\nimport { useSelectData } from './useSelectData';\n\nexport type SelectComponentProps = {\n /**\n * Children of the Select component. This can contain the `Select.Slot` components for the label, decorators, clear action and menu.\n */\n children?: ReactNode;\n /**\n * Callback function that is called when an item is selected.\n */\n onSelect?: (selectedValue: string | null) => void;\n /**\n * The active value in the select component. This is used to control the select externally.\n */\n value?: string | null;\n /**\n * The default value of the select component. Used for uncontrolled usages.\n */\n defaultValue?: string;\n /**\n * The placeholder in the select component.\n */\n placeholder?: string;\n /**\n * Status of the text input\n * @default \"neutral\"\n */\n status?: 'neutral' | 'success' | 'error';\n /**\n * Disables the select component.\n */\n disabled?: boolean;\n /**\n * The alignment of the menu.\n * @default \"start\"\n */\n alignMenu?: 'start' | 'center' | 'end';\n /**\n * Defines the preferred side of the select. It will not be respected if there are collisions with the viewport.\n * @default \"bottom\"\n */\n side?: 'left' | 'right' | 'bottom' | 'top';\n /**\n * The data test id of the select component.\n */\n 'data-test-id'?: string;\n /**\n * Id of the select component\n */\n id?: string;\n /**\n * The value of the select is shown as plan text when set to true, items child components are used if set to true\n * @default true\n */\n showStringValue?: boolean;\n /**\n * Define the minimum distance between the select menu and the viewport edge\n * @default 'compact'\n */\n viewportCollisionPadding?: SelectMenuViewportCollisionPadding;\n} & CommonAriaProps;\n\nexport const SelectInput = (\n {\n children,\n onSelect,\n value,\n defaultValue,\n placeholder = '',\n status = 'neutral',\n disabled,\n alignMenu = 'start',\n side = 'bottom',\n id,\n showStringValue = true,\n 'data-test-id': dataTestId = 'fondue-select',\n viewportCollisionPadding = 'compact',\n ...props\n }: SelectComponentProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) => {\n const { inputSlots, menuSlots, items, clearButton, getItemByValue } = useSelectData(children);\n\n const defaultItem = getItemByValue(defaultValue);\n const activeItem = getItemByValue(value);\n\n const wasClicked = useRef(false);\n\n const [hasInteractedSinceOpening, setHasInteractedSinceOpening] = useState(false);\n\n const { getToggleButtonProps, getMenuProps, getItemProps, reset, selectedItem, isOpen, highlightedIndex } =\n useSelect({\n items,\n defaultSelectedItem: defaultItem,\n selectedItem: activeItem,\n toggleButtonId: id,\n labelId: 'aria-labelledby' in props ? props['aria-labelledby'] : undefined,\n onIsOpenChange: () => {\n setHasInteractedSinceOpening(false);\n },\n onHighlightedIndexChange: () => {\n setHasInteractedSinceOpening(true);\n },\n onSelectedItemChange: ({ selectedItem }) => {\n onSelect?.(selectedItem?.value ?? null);\n },\n itemToString: (item) => (item ? item.label : ''),\n });\n\n const displayedValue = selectedItem\n ? (!showStringValue && selectedItem.children) || selectedItem.label\n : placeholder;\n\n return (\n <RadixPopover.Root open={isOpen}>\n <RadixPopover.Anchor\n asChild\n onMouseDown={(mouseEvent) => {\n wasClicked.current = true;\n mouseEvent.currentTarget.dataset.showFocusRing = 'false';\n }}\n onFocus={(focusEvent) => {\n if (!wasClicked.current) {\n focusEvent.target.dataset.showFocusRing = 'true';\n }\n }}\n onBlur={(blurEvent) => {\n blurEvent.target.dataset.showFocusRing = 'false';\n wasClicked.current = false;\n }}\n >\n <div\n className={styles.root}\n data-status={status}\n data-disabled={disabled}\n data-empty={!selectedItem}\n data-test-id={dataTestId}\n {...(disabled\n ? {}\n : getToggleButtonProps({\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n ref: forwardedRef,\n }))}\n >\n <span className={styles.selectedValue}>{displayedValue}</span>\n {inputSlots}\n {clearButton ? (\n <RadixSlot\n onClick={(event) => {\n event.stopPropagation();\n reset();\n }}\n className={styles.clear}\n >\n {clearButton}\n </RadixSlot>\n ) : null}\n <div className={styles.icons}>\n <IconCaretDown size={16} className={styles.caret} />\n {status === 'success' ? (\n <IconCheckMark\n size={16}\n className={styles.iconSuccess}\n data-test-id={`${dataTestId}-success-icon`}\n />\n ) : null}\n {status === 'error' ? (\n <IconExclamationMarkTriangle\n size={16}\n className={styles.iconError}\n data-test-id={`${dataTestId}-error-icon`}\n />\n ) : null}\n </div>\n </div>\n </RadixPopover.Anchor>\n\n <SelectMenu\n align={alignMenu}\n side={side}\n highlightedIndex={highlightedIndex}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n selectedItem={selectedItem}\n hasInteractedSinceOpening={hasInteractedSinceOpening}\n viewportCollisionPadding={viewportCollisionPadding}\n >\n {menuSlots}\n </SelectMenu>\n </RadixPopover.Root>\n );\n};\nSelectInput.displayName = 'Select';\n\nexport const ForwardedRefSelect = forwardRef<HTMLDivElement, SelectComponentProps>(SelectInput);\n\n// @ts-expect-error We support both Select and Select.Combobox as the Root\nexport const Select: typeof SelectInput & {\n Combobox: typeof ForwardedRefCombobox;\n Item: typeof ForwardedRefSelectItem;\n Group: typeof ForwardedRefSelectItemGroup;\n Slot: typeof ForwardedRefSelectSlot;\n} = ForwardedRefSelect;\nSelect.displayName = 'Select';\nSelect.Combobox = ForwardedRefCombobox;\nSelect.Combobox.displayName = 'Select.Combobox';\nSelect.Item = ForwardedRefSelectItem;\nSelect.Item.displayName = 'Select.Item';\nSelect.Group = ForwardedRefSelectItemGroup;\nSelect.Group.displayName = 'Select.Group';\nSelect.Slot = ForwardedRefSelectSlot;\nSelect.Slot.displayName = 'Select.Slot';\n"],"names":["SelectInput","children","onSelect","value","defaultValue","placeholder","status","disabled","alignMenu","side","id","showStringValue","dataTestId","viewportCollisionPadding","props","forwardedRef","inputSlots","menuSlots","items","clearButton","getItemByValue","useSelectData","defaultItem","activeItem","wasClicked","useRef","hasInteractedSinceOpening","setHasInteractedSinceOpening","useState","getToggleButtonProps","getMenuProps","getItemProps","reset","selectedItem","isOpen","highlightedIndex","useSelect","item","displayedValue","jsxs","RadixPopover","jsx","mouseEvent","focusEvent","blurEvent","styles","RadixSlot","event","IconCaretDown","IconCheckMark","IconExclamationMarkTriangle","SelectMenu","ForwardedRefSelect","forwardRef","Select","ForwardedRefCombobox","ForwardedRefSelectItem","ForwardedRefSelectItemGroup","ForwardedRefSelectSlot"],"mappings":"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"}
1
+ {"version":3,"file":"fondue-components24.js","sources":["../src/components/Switch/Switch.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport * as RadixSwitch from '@radix-ui/react-switch';\nimport { type FormEvent, type ForwardedRef, forwardRef } from 'react';\n\nimport { useTranslation } from '#/hooks/useTranslation';\nimport { cn } from '#/utilities/styleUtilities';\nimport { type CommonAriaAttrs } from '#/utilities/types';\n\nimport styles from './styles/switch.module.scss';\n\ntype SwitchProps = {\n id?: string;\n name?: string;\n /**\n * The size of the switch component.\n * @default medium\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * The active value in the select component. This is used to control the select externally.\n * @default false\n */\n value?: boolean;\n /**\n * The default value of the select component. Used for uncontrolled usages.\n * @default false\n */\n defaultValue?: boolean;\n /**\n * Disables the select component.\n * @default false\n */\n disabled?: boolean;\n /**\n * Whether the switch is required.\n * @default false\n */\n required?: boolean;\n /**\n * Callback function that is called when the switch is toggled.\n * @param checked - The new checked state of the switch\n */\n onChange?: (checked: boolean) => void;\n /**\n * Event handler called when the checkbox is blurred\n * @param event - The event object\n */\n onBlur?: (event: FormEvent<HTMLButtonElement>) => void;\n /**\n * Event handler called when the checkbox is focused\n * @param event - The event object\n */\n onFocus?: (event: FormEvent<HTMLButtonElement>) => void;\n 'data-test-id'?: string;\n} & CommonAriaAttrs;\n\nconst SwitchComponent = (\n {\n value,\n defaultValue,\n size = 'medium',\n onChange,\n 'data-test-id': dataTestId = 'fondue-switch',\n 'aria-label': ariaLabel,\n ...props\n }: SwitchProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) => {\n const { t } = useTranslation();\n\n return (\n <RadixSwitch.Root\n ref={ref}\n checked={value}\n defaultChecked={defaultValue}\n className={cn([styles.root, styles[size]])}\n onCheckedChange={onChange}\n aria-label={ariaLabel ?? t('Switch_defaultLabel')}\n data-test-id={dataTestId}\n {...props}\n >\n <RadixSwitch.Thumb className={styles.thumb} />\n </RadixSwitch.Root>\n );\n};\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(SwitchComponent);\nSwitch.displayName = 'Switch';\n"],"names":["SwitchComponent","value","defaultValue","size","onChange","dataTestId","ariaLabel","props","ref","t","useTranslation","jsx","RadixSwitch","cn","styles","Switch","forwardRef"],"mappings":";;;;;;AAyDA,MAAMA,IAAkB,CACpB;AAAA,EACI,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,UAAAC;AAAA,EACA,gBAAgBC,IAAa;AAAA,EAC7B,cAAcC;AAAA,EACd,GAAGC;AACP,GACAC,MACC;AACD,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,SACI,gBAAAC;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACG,KAAAJ;AAAA,MACA,SAASP;AAAA,MACT,gBAAgBC;AAAA,MAChB,WAAWW,EAAG,CAACC,EAAO,MAAMA,EAAOX,CAAI,CAAC,CAAC;AAAA,MACzC,iBAAiBC;AAAA,MACjB,cAAYE,KAAaG,EAAE,qBAAqB;AAAA,MAChD,gBAAcJ;AAAA,MACb,GAAGE;AAAA,MAEJ,4BAACK,EAAY,OAAZ,EAAkB,WAAWE,EAAO,MAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAGxD,GAEaC,IAASC,EAA2ChB,CAAe;AAChFe,EAAO,cAAc;"}
@@ -1,58 +1,199 @@
1
- import { jsxs as f, jsx as s } from "react/jsx-runtime";
2
- import * as e from "@radix-ui/react-slider";
3
- import { forwardRef as h, useRef as R } from "react";
4
- import r from "./fondue-components75.js";
5
- const g = ({
6
- value: a,
7
- defaultValue: n = [0],
8
- onChange: i,
9
- onCommit: m,
10
- "data-test-id": c = "fondue-slider",
11
- ...d
12
- }, l) => {
13
- const o = R(null);
14
- return /* @__PURE__ */ f(
15
- e.Root,
16
- {
17
- ref: l,
18
- className: r.root,
19
- value: a,
20
- defaultValue: n,
21
- onValueChange: i,
22
- onValueCommit: m,
23
- "data-test-id": c,
24
- ...d,
25
- children: [
26
- /* @__PURE__ */ s(
27
- e.Track,
1
+ import { jsx as n, jsxs as T } from "react/jsx-runtime";
2
+ import { IconArrowUp as O, IconArrowDown as K, IconArrowBidirectional as W } from "@frontify/fondue-icons";
3
+ import { forwardRef as u, useRef as N, useState as _, useEffect as D, useMemo as L } from "react";
4
+ import { useSyncRefs as R } from "./fondue-components49.js";
5
+ import { useTextTruncation as h } from "./fondue-components75.js";
6
+ import { useTranslation as j } from "./fondue-components34.js";
7
+ import { Box as M } from "./fondue-components5.js";
8
+ import { LoadingCircle as S } from "./fondue-components18.js";
9
+ import c from "./fondue-components76.js";
10
+ import { handleKeyDown as U, shouldIgnoreRowClick as q } from "./fondue-components77.js";
11
+ const x = u(
12
+ ({ layout: t = "auto", fontSize: e = "medium", gutter: r = "0px", sticky: o, noBorder: a = !1, children: l, ...b }, f) => {
13
+ const m = N(null), [p, s] = _(!1);
14
+ R(m, f);
15
+ const i = o === "head" || o === "both", v = o === "col" || o === "both";
16
+ return D(() => {
17
+ const d = m.current;
18
+ if (!d)
19
+ return;
20
+ const y = () => {
21
+ const g = d.parentElement;
22
+ if (!g)
23
+ return;
24
+ const C = d.scrollWidth, E = g.clientWidth;
25
+ s(C > E);
26
+ };
27
+ y();
28
+ const w = new ResizeObserver(y);
29
+ return w.observe(d), d.parentElement && w.observe(d.parentElement), () => {
30
+ w.disconnect();
31
+ };
32
+ }, [l]), // eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions
33
+ /* @__PURE__ */ n(
34
+ "table",
35
+ {
36
+ ref: m,
37
+ className: c.table,
38
+ style: {
39
+ // @ts-expect-error CSS custom properties are not in CSSProperties type
40
+ "--table-gutter": r
41
+ },
42
+ "data-layout": t,
43
+ "data-font-size": e,
44
+ "data-sticky-header": i,
45
+ "data-sticky-left-column": v,
46
+ "data-no-border": a,
47
+ "data-has-horizontal-overflow": p,
48
+ onKeyDown: U,
49
+ ...b,
50
+ children: l
51
+ }
52
+ );
53
+ }
54
+ );
55
+ x.displayName = "Table.Root";
56
+ const k = u(({ children: t }, e) => /* @__PURE__ */ n("caption", { ref: e, className: c.caption, children: t }));
57
+ k.displayName = "Table.Caption";
58
+ const z = u(
59
+ ({ sticky: t = !1, children: e, "aria-label": r, "aria-busy": o }, a) => /* @__PURE__ */ n("thead", { ref: a, className: c.header, "data-sticky": t, "aria-label": r, "aria-busy": o, children: e })
60
+ );
61
+ z.displayName = "Table.Header";
62
+ const H = u(
63
+ ({
64
+ noShrink: t = !1,
65
+ truncate: e = !1,
66
+ align: r = "left",
67
+ scope: o = "col",
68
+ sortTranslations: a,
69
+ sortDirection: l,
70
+ colSpan: b,
71
+ width: f,
72
+ state: m = "idle",
73
+ loadingStateAriaLabel: p,
74
+ onSortChange: s,
75
+ children: i
76
+ }, v) => {
77
+ const { t: d } = j(), y = N(null);
78
+ R(y, v), h(y);
79
+ const w = L(() => typeof i == "string" ? l === "ascending" ? (a == null ? void 0 : a.sortDescending) ?? d("Table_sortByDescending", { column: i }) : (a == null ? void 0 : a.sortAscending) ?? d("Table_sortByAscending", { column: i }) : d(l === "ascending" ? "Table_sortDescending" : "Table_sortAscending"), [i, l, a, d]), g = () => {
80
+ if (!s)
81
+ return;
82
+ s(l === void 0 || l === "descending" ? "ascending" : "descending");
83
+ };
84
+ return /* @__PURE__ */ n(
85
+ "th",
86
+ {
87
+ ref: y,
88
+ style: { width: f },
89
+ className: c.headerCell,
90
+ scope: o,
91
+ colSpan: b,
92
+ "data-align": r,
93
+ "data-truncate": e,
94
+ "data-no-shrink": t,
95
+ "data-sortable": !!s,
96
+ "aria-sort": s ? l || "none" : void 0,
97
+ children: m === "loading" ? /* @__PURE__ */ T("div", { className: c.cellContent, "aria-live": "polite", "aria-label": p, children: [
98
+ typeof i == "string" && e ? /* @__PURE__ */ n("span", { className: c.buttonText, children: i }) : i,
99
+ /* @__PURE__ */ n(S, { "data-test-id": "fondue-loading-circle", size: "xx-small" })
100
+ ] }) : s ? /* @__PURE__ */ T(
101
+ "button",
28
102
  {
29
- onPointerDown: () => {
30
- o.current && (o.current.dataset.showFocusRing = "false");
31
- },
32
- className: r.track,
33
- children: /* @__PURE__ */ s(e.Range, { className: r.range })
103
+ className: c.cellContent,
104
+ "aria-label": w,
105
+ "data-active": !!l,
106
+ onClick: g,
107
+ type: "button",
108
+ children: [
109
+ typeof i == "string" && e ? /* @__PURE__ */ n("span", { className: c.buttonText, children: i }) : i,
110
+ /* @__PURE__ */ n(M, { width: 3, children: l === "ascending" ? /* @__PURE__ */ n(O, { size: "12" }) : l === "descending" ? /* @__PURE__ */ n(K, { size: "12" }) : /* @__PURE__ */ n(W, { className: c.sortIndicator, size: "12" }) })
111
+ ]
34
112
  }
35
- ),
36
- (a || n).map((w, u) => /* @__PURE__ */ s(
37
- e.Thumb,
38
- {
39
- ref: o,
40
- className: r.thumb,
41
- onPointerDown: (t) => {
42
- t.currentTarget.dataset.showFocusRing = "false";
43
- },
44
- onBlur: (t) => {
45
- t.currentTarget.dataset.showFocusRing = "true";
46
- }
47
- },
48
- u
49
- ))
50
- ]
113
+ ) : i
114
+ }
115
+ );
116
+ }
117
+ );
118
+ H.displayName = "Table.HeaderCell";
119
+ const B = u(
120
+ ({ firstColumnSticky: t = !1, lastColumnSticky: e = !1, children: r, "aria-busy": o }, a) => /* @__PURE__ */ n(
121
+ "tbody",
122
+ {
123
+ ref: a,
124
+ className: c.body,
125
+ "data-first-column-sticky": t,
126
+ "data-last-column-sticky": e,
127
+ "aria-busy": o,
128
+ children: r
51
129
  }
52
- );
53
- }, p = h(g);
54
- p.displayName = "Slider";
130
+ )
131
+ );
132
+ B.displayName = "Table.Body";
133
+ const I = u(
134
+ ({ disabled: t = !1, selected: e = !1, onClick: r, children: o, "aria-label": a, "data-test-id": l }, b) => {
135
+ const f = r !== void 0 && !t, m = (s) => {
136
+ t || q(s) || r && r(e);
137
+ }, p = (s) => {
138
+ f && (s.key === "Enter" || s.key === " ") && (s.preventDefault(), m());
139
+ };
140
+ return /* @__PURE__ */ n(
141
+ "tr",
142
+ {
143
+ ref: b,
144
+ className: c.row,
145
+ tabIndex: 0,
146
+ role: f ? "button" : "row",
147
+ "data-disabled": t,
148
+ "data-interactive": f,
149
+ "data-selected": f ? void 0 : e,
150
+ "aria-disabled": t,
151
+ "aria-label": a,
152
+ "aria-selected": f ? void 0 : e,
153
+ onClick: f ? m : void 0,
154
+ onKeyDown: f ? p : void 0,
155
+ "data-test-id": l,
156
+ children: o
157
+ }
158
+ );
159
+ }
160
+ );
161
+ I.displayName = "Table.Row";
162
+ const A = u(
163
+ ({ colSpan: t, truncate: e, align: r = "left", children: o, "aria-label": a }, l) => {
164
+ const b = N(null);
165
+ return R(b, l), h(b), /* @__PURE__ */ n(
166
+ "td",
167
+ {
168
+ ref: b,
169
+ className: c.rowCell,
170
+ colSpan: t,
171
+ "data-align": r,
172
+ "data-truncate": e,
173
+ "aria-label": a,
174
+ children: o
175
+ }
176
+ );
177
+ }
178
+ );
179
+ A.displayName = "Table.RowCell";
180
+ const ee = {
181
+ Root: x,
182
+ Caption: k,
183
+ Header: z,
184
+ HeaderCell: H,
185
+ Body: B,
186
+ Row: I,
187
+ RowCell: A
188
+ };
55
189
  export {
56
- p as Slider
190
+ ee as Table,
191
+ B as TableBody,
192
+ k as TableCaption,
193
+ z as TableHeader,
194
+ H as TableHeaderCell,
195
+ x as TableRoot,
196
+ I as TableRow,
197
+ A as TableRowCell
57
198
  };
58
199
  //# sourceMappingURL=fondue-components25.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components25.js","sources":["../src/components/Slider/Slider.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport * as RadixSlider from '@radix-ui/react-slider';\nimport { type ForwardedRef, forwardRef, useRef } from 'react';\n\nimport { type CommonAriaAttrs } from '#/utilities/types';\n\nimport styles from './styles/slider.module.scss';\n\nexport type SliderProps = {\n id?: string;\n name?: string;\n /**\n * The default value of the slider\n * Used for uncontrolled components\n * @default [0]\n */\n defaultValue?: number[];\n /**\n * The controlled value of the slider\n * @default [0]\n */\n value?: number[];\n /**\n * Minimum value of the slider\n * @default 0\n */\n min?: number;\n /**\n * Maximum value of the slider\n * @default 100\n */\n max?: number;\n /**\n * The granularity with which the slider can step through values\n * @default 1\n */\n step?: number;\n /**\n * The minimum steps between thumbs in a range slider\n * @default 0\n */\n minStepsBetweenThumbs?: number;\n /**\n * Disable the slider\n * @default false\n */\n disabled?: boolean;\n onChange?: (value: number[]) => void;\n onCommit?: (value: number[]) => void;\n 'data-test-id'?: string;\n} & CommonAriaAttrs;\n\nconst SliderComponent = (\n {\n value,\n defaultValue = [0],\n onChange,\n onCommit,\n 'data-test-id': dataTestId = 'fondue-slider',\n ...props\n }: SliderProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) => {\n const sliderThumbRef = useRef<HTMLSpanElement | null>(null);\n return (\n <RadixSlider.Root\n ref={ref}\n className={styles.root}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onChange}\n onValueCommit={onCommit}\n data-test-id={dataTestId}\n {...props}\n >\n <RadixSlider.Track\n onPointerDown={() => {\n if (sliderThumbRef.current) {\n sliderThumbRef.current.dataset.showFocusRing = 'false';\n }\n }}\n className={styles.track}\n >\n <RadixSlider.Range className={styles.range} />\n </RadixSlider.Track>\n {(value || defaultValue).map((_, index) => (\n <RadixSlider.Thumb\n ref={sliderThumbRef}\n className={styles.thumb}\n onPointerDown={(event) => {\n event.currentTarget.dataset.showFocusRing = 'false';\n }}\n onBlur={(event) => {\n event.currentTarget.dataset.showFocusRing = 'true';\n }}\n key={index}\n />\n ))}\n </RadixSlider.Root>\n );\n};\n\nexport const Slider = forwardRef<HTMLButtonElement, SliderProps>(SliderComponent);\nSlider.displayName = 'Slider';\n"],"names":["SliderComponent","value","defaultValue","onChange","onCommit","dataTestId","props","ref","sliderThumbRef","useRef","jsxs","RadixSlider","styles","jsx","_","index","event","Slider","forwardRef"],"mappings":";;;;AAqDA,MAAMA,IAAkB,CACpB;AAAA,EACI,OAAAC;AAAA,EACA,cAAAC,IAAe,CAAC,CAAC;AAAA,EACjB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAgBC,IAAa;AAAA,EAC7B,GAAGC;AACP,GACAC,MACC;AACD,QAAMC,IAAiBC,EAA+B,IAAI;AAC1D,SACI,gBAAAC;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACG,KAAAJ;AAAA,MACA,WAAWK,EAAO;AAAA,MAClB,OAAAX;AAAA,MACA,cAAAC;AAAA,MACA,eAAeC;AAAA,MACf,eAAeC;AAAA,MACf,gBAAcC;AAAA,MACb,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAO;AAAA,UAACF,EAAY;AAAA,UAAZ;AAAA,YACG,eAAe,MAAM;AACjB,cAAIH,EAAe,YACfA,EAAe,QAAQ,QAAQ,gBAAgB;AAAA,YAEvD;AAAA,YACA,WAAWI,EAAO;AAAA,YAElB,4BAACD,EAAY,OAAZ,EAAkB,WAAWC,EAAO,MAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,SAE9CX,KAASC,GAAc,IAAI,CAACY,GAAGC,MAC7B,gBAAAF;AAAA,UAACF,EAAY;AAAA,UAAZ;AAAA,YACG,KAAKH;AAAA,YACL,WAAWI,EAAO;AAAA,YAClB,eAAe,CAACI,MAAU;AACtB,cAAAA,EAAM,cAAc,QAAQ,gBAAgB;AAAA,YAChD;AAAA,YACA,QAAQ,CAACA,MAAU;AACf,cAAAA,EAAM,cAAc,QAAQ,gBAAgB;AAAA,YAChD;AAAA,UAAA;AAAA,UACKD;AAAA,QAAA,CAEZ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGb,GAEaE,IAASC,EAA2ClB,CAAe;AAChFiB,EAAO,cAAc;"}
1
+ {"version":3,"file":"fondue-components25.js","sources":["../src/components/Table/Table.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconArrowBidirectional, IconArrowDown, IconArrowUp } from '@frontify/fondue-icons';\nimport {\n type AriaAttributes,\n forwardRef,\n useMemo,\n useRef,\n useEffect,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\n\nimport { useSyncRefs } from '#/hooks/useSyncRefs';\nimport { useTextTruncation } from '#/hooks/useTextTruncation';\nimport { useTranslation } from '#/hooks/useTranslation';\nimport { type CommonAriaAttrs } from '#/utilities/types';\n\nimport { Box } from '../Box/Box';\nimport { LoadingCircle } from '../LoadingCircle/LoadingCircle';\n\nimport styles from './styles/table.module.scss';\nimport { handleKeyDown, shouldIgnoreRowClick } from './utils';\n\ntype TableRootProps = {\n /**\n * Whether the table should have a fixed or auto layout\n * @default 'auto'\n */\n layout?: 'auto' | 'fixed';\n /**\n * Font size of the table content\n * @default 'small'\n */\n fontSize?: 'small' | 'medium';\n /**\n * Additional spacing between table cells (both horizontal and vertical)\n *\n * This value is added to the default cell spacing. For example, with `gutter=\"48px\"`,\n * cells will have 48px of additional space between them in both directions\n * (24px added to each side).\n *\n * Accepts any CSS length value with units (e.g., '16px', '1rem', '48px')\n *\n * **Important:** Always include a unit, even for zero (use '0px', not '0')\n * @default '0px'\n */\n gutter?: CSSProperties['borderSpacing'];\n /**\n * Whether header should stick to the top when scrolling\n * @deprecated Use `Table.Header sticky` prop instead. For sticky columns, use `Table.Body firstColumnSticky` or `lastColumnSticky` props\n */\n sticky?: 'head' | 'col' | 'both';\n /**\n * Whether to remove the top and bottom borders from the table\n * @default false\n */\n noBorder?: boolean;\n children: ReactNode;\n} & CommonAriaAttrs &\n Pick<AriaAttributes, 'aria-multiselectable'>;\n\nexport const TableRoot = forwardRef<HTMLTableElement, TableRootProps>(\n ({ layout = 'auto', fontSize = 'medium', gutter = '0px', sticky, noBorder = false, children, ...props }, ref) => {\n const tableRef = useRef<HTMLTableElement>(null);\n const [hasHorizontalOverflow, setHasHorizontalOverflow] = useState(false);\n\n useSyncRefs<HTMLTableElement>(tableRef, ref);\n\n // Handle deprecated `sticky` prop for backward compatibility\n const legacyStickyHeader = sticky === 'head' || sticky === 'both';\n const legacyStickyLeftColumn = sticky === 'col' || sticky === 'both';\n\n useEffect(() => {\n const table = tableRef.current;\n if (!table) {\n return;\n }\n\n const checkOverflow = () => {\n const parent = table.parentElement;\n if (!parent) {\n return;\n }\n\n const tableWidth = table.scrollWidth;\n const parentWidth = parent.clientWidth;\n setHasHorizontalOverflow(tableWidth > parentWidth);\n };\n\n checkOverflow();\n\n const resizeObserver = new ResizeObserver(checkOverflow);\n resizeObserver.observe(table);\n if (table.parentElement) {\n resizeObserver.observe(table.parentElement);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [children]);\n\n return (\n // eslint-disable-next-line jsx-a11y-x/no-noninteractive-element-interactions\n <table\n ref={tableRef}\n className={styles.table}\n style={{\n // @ts-expect-error CSS custom properties are not in CSSProperties type\n '--table-gutter': gutter,\n }}\n data-layout={layout}\n data-font-size={fontSize}\n data-sticky-header={legacyStickyHeader}\n data-sticky-left-column={legacyStickyLeftColumn}\n data-no-border={noBorder}\n data-has-horizontal-overflow={hasHorizontalOverflow}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </table>\n );\n },\n);\nTableRoot.displayName = 'Table.Root';\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, { children: ReactNode }>(({ children }, ref) => {\n return (\n <caption ref={ref} className={styles.caption}>\n {children}\n </caption>\n );\n});\nTableCaption.displayName = 'Table.Caption';\n\ntype TableHeaderProps = {\n /**\n * Whether the header should stick to the top when scrolling\n * @default false\n */\n sticky?: boolean;\n children: ReactNode;\n 'aria-label'?: string;\n 'aria-busy'?: boolean;\n};\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ sticky = false, children, 'aria-label': ariaLabel, 'aria-busy': ariaBusy }, ref) => {\n return (\n <thead ref={ref} className={styles.header} data-sticky={sticky} aria-label={ariaLabel} aria-busy={ariaBusy}>\n {children}\n </thead>\n );\n },\n);\nTableHeader.displayName = 'Table.Header';\n\ntype SortDirection = 'ascending' | 'descending' | undefined;\ntype HorizontalAlignment = 'left' | 'center' | 'right';\n\ntype TableHeaderCellProps = {\n /**\n * Scope of the column\n * @default 'col'\n */\n scope?: HTMLTableCellElement['scope'];\n /**\n * Number of columns the cell should span\n */\n colSpan?: HTMLTableCellElement['colSpan'];\n /**\n * Width of the column\n */\n width?: CSSProperties['width'];\n /**\n * Current sort direction of the column\n */\n sortDirection?: SortDirection;\n /**\n * Horizontal alignment of the content\n * @default 'left'\n */\n align?: HorizontalAlignment;\n /**\n * Whether to truncate content with ellipsis when it overflows\n * @default false\n */\n truncate?: boolean;\n /**\n * Aria label for asceding/descending sort. Variables: {column} - column name\n * @default \"Sort by {column} ascending/descending\"\n */\n sortTranslations?: {\n sortAscending?: string;\n sortDescending?: string;\n };\n /**\n * Whether the column should have a minimum width\n * @default false\n */\n noShrink?: boolean;\n /**\n * State of the cell, used for displaying loading state\n * @default 'idle'\n */\n state?: 'idle' | 'loading';\n /**\n * The aria-label to be applied when state='loading'\n */\n loadingStateAriaLabel?: string;\n /**\n * Handler called when the sort direction changes\n * @param direction - The new sort direction\n */\n onSortChange?: (direction: SortDirection) => void;\n children: ReactNode;\n};\n\nexport const TableHeaderCell = forwardRef<HTMLTableCellElement, TableHeaderCellProps>(\n (\n {\n noShrink = false,\n truncate = false,\n align = 'left',\n scope = 'col',\n sortTranslations,\n sortDirection,\n colSpan,\n width,\n state = 'idle',\n loadingStateAriaLabel,\n onSortChange,\n children,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const cellRef = useRef<HTMLTableCellElement>(null);\n useSyncRefs<HTMLTableCellElement>(cellRef, ref);\n\n useTextTruncation(cellRef);\n\n const sortLabel = useMemo(() => {\n if (typeof children === 'string') {\n if (sortDirection === 'ascending') {\n return sortTranslations?.sortDescending ?? t('Table_sortByDescending', { column: children });\n }\n return sortTranslations?.sortAscending ?? t('Table_sortByAscending', { column: children });\n }\n\n return sortDirection === 'ascending' ? t('Table_sortDescending') : t('Table_sortAscending');\n }, [children, sortDirection, sortTranslations, t]);\n\n const handleSortChange = () => {\n if (!onSortChange) {\n return;\n }\n\n const newDirection: SortDirection =\n sortDirection === undefined || sortDirection === 'descending' ? 'ascending' : 'descending';\n\n onSortChange(newDirection);\n };\n\n return (\n <th\n ref={cellRef}\n style={{ width }}\n className={styles.headerCell}\n scope={scope}\n colSpan={colSpan}\n data-align={align}\n data-truncate={truncate}\n data-no-shrink={noShrink}\n data-sortable={!!onSortChange}\n aria-sort={onSortChange ? sortDirection || 'none' : undefined}\n >\n {state === 'loading' ? (\n <div className={styles.cellContent} aria-live=\"polite\" aria-label={loadingStateAriaLabel}>\n {typeof children === 'string' && truncate ? (\n <span className={styles.buttonText}>{children}</span>\n ) : (\n children\n )}\n <LoadingCircle data-test-id=\"fondue-loading-circle\" size=\"xx-small\" />\n </div>\n ) : onSortChange ? (\n <button\n className={styles.cellContent}\n aria-label={sortLabel}\n data-active={!!sortDirection}\n onClick={handleSortChange}\n type=\"button\"\n >\n {typeof children === 'string' && truncate ? (\n <span className={styles.buttonText}>{children}</span>\n ) : (\n children\n )}\n <Box width={3}>\n {sortDirection === 'ascending' ? (\n <IconArrowUp size=\"12\" />\n ) : sortDirection === 'descending' ? (\n <IconArrowDown size=\"12\" />\n ) : (\n <IconArrowBidirectional className={styles.sortIndicator} size=\"12\" />\n )}\n </Box>\n </button>\n ) : (\n children\n )}\n </th>\n );\n },\n);\nTableHeaderCell.displayName = 'Table.HeaderCell';\n\ntype TableBodyProps = {\n /**\n * Whether the first column should stick to the left when scrolling horizontally\n * @default false\n */\n firstColumnSticky?: boolean;\n /**\n * Whether the last column should stick to the right when scrolling horizontally\n * @default false\n */\n lastColumnSticky?: boolean;\n children: ReactNode;\n 'aria-busy'?: boolean;\n};\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ firstColumnSticky = false, lastColumnSticky = false, children, 'aria-busy': ariaBusy }, ref) => {\n return (\n <tbody\n ref={ref}\n className={styles.body}\n data-first-column-sticky={firstColumnSticky}\n data-last-column-sticky={lastColumnSticky}\n aria-busy={ariaBusy}\n >\n {children}\n </tbody>\n );\n },\n);\nTableBody.displayName = 'Table.Body';\n\ntype TableRowProps = {\n /**\n * Whether the row is in a selected state\n * @default false\n */\n selected?: boolean;\n /**\n * Whether to disable interactions for this row\n * @default false\n */\n disabled?: boolean;\n /**\n * Handler called when the row is clicked or activated via keyboard\n * If provided, the row will be hoverable and interactive\n */\n onClick?: (selected: boolean) => void;\n /**\n * Content to be rendered within the row\n */\n children: ReactNode;\n /**\n * Accessible label for the row\n */\n 'aria-label'?: string;\n 'data-test-id'?: string;\n};\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { disabled = false, selected = false, onClick, children, 'aria-label': ariaLabel, 'data-test-id': dataTestId },\n ref,\n ) => {\n const isInteractive = onClick !== undefined && !disabled;\n\n const handleClick = (event?: MouseEvent) => {\n if (disabled) {\n return;\n }\n\n if (shouldIgnoreRowClick(event)) {\n return;\n }\n\n if (onClick) {\n onClick(selected);\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTableRowElement>) => {\n if (!isInteractive) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n handleClick();\n }\n };\n\n return (\n <tr\n ref={ref}\n className={styles.row}\n tabIndex={0}\n role={isInteractive ? 'button' : 'row'}\n data-disabled={disabled}\n data-interactive={isInteractive}\n data-selected={!isInteractive ? selected : undefined}\n aria-disabled={disabled}\n aria-label={ariaLabel}\n aria-selected={!isInteractive ? selected : undefined}\n onClick={isInteractive ? handleClick : undefined}\n onKeyDown={isInteractive ? handleKeyDown : undefined}\n data-test-id={dataTestId}\n >\n {children}\n </tr>\n );\n },\n);\nTableRow.displayName = 'Table.Row';\n\ntype TableRowCellProps = {\n /**\n * Number of columns the cell should span\n */\n colSpan?: HTMLTableCellElement['colSpan'];\n /**\n * Whether to truncate content with ellipsis when it overflows\n * @default false\n */\n truncate?: boolean;\n /**\n * Horizontal alignment of the content\n * @default 'left'\n */\n align?: HorizontalAlignment;\n children: ReactNode;\n 'aria-label'?: string;\n};\n\nexport const TableRowCell = forwardRef<HTMLTableCellElement, TableRowCellProps>(\n ({ colSpan, truncate, align = 'left', children, 'aria-label': ariaLabel }, ref): ReactElement => {\n const cellRef = useRef<HTMLTableCellElement>(null);\n useSyncRefs<HTMLTableCellElement>(cellRef, ref);\n\n useTextTruncation(cellRef);\n\n return (\n <td\n ref={cellRef}\n className={styles.rowCell}\n colSpan={colSpan}\n data-align={align}\n data-truncate={truncate}\n aria-label={ariaLabel}\n >\n {children}\n </td>\n );\n },\n);\nTableRowCell.displayName = 'Table.RowCell';\n\nexport const Table = {\n Root: TableRoot,\n Caption: TableCaption,\n Header: TableHeader,\n HeaderCell: TableHeaderCell,\n Body: TableBody,\n Row: TableRow,\n RowCell: TableRowCell,\n};\n"],"names":["TableRoot","forwardRef","layout","fontSize","gutter","sticky","noBorder","children","props","ref","tableRef","useRef","hasHorizontalOverflow","setHasHorizontalOverflow","useState","useSyncRefs","legacyStickyHeader","legacyStickyLeftColumn","useEffect","table","checkOverflow","parent","tableWidth","parentWidth","resizeObserver","jsx","styles","handleKeyDown","TableCaption","TableHeader","ariaLabel","ariaBusy","TableHeaderCell","noShrink","truncate","align","scope","sortTranslations","sortDirection","colSpan","width","state","loadingStateAriaLabel","onSortChange","t","useTranslation","cellRef","useTextTruncation","sortLabel","useMemo","handleSortChange","jsxs","LoadingCircle","Box","IconArrowUp","IconArrowDown","IconArrowBidirectional","TableBody","firstColumnSticky","lastColumnSticky","TableRow","disabled","selected","onClick","dataTestId","isInteractive","handleClick","event","shouldIgnoreRowClick","TableRowCell","Table"],"mappings":"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"}