@helpwave/hightide 0.1.24 → 0.1.25

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 (136) hide show
  1. package/dist/components/date/DatePicker.js +48 -53
  2. package/dist/components/date/DatePicker.js.map +1 -1
  3. package/dist/components/date/DatePicker.mjs +48 -53
  4. package/dist/components/date/DatePicker.mjs.map +1 -1
  5. package/dist/components/date/YearMonthPicker.js +26 -29
  6. package/dist/components/date/YearMonthPicker.js.map +1 -1
  7. package/dist/components/date/YearMonthPicker.mjs +26 -29
  8. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  9. package/dist/components/dialogs/ConfirmDialog.js +40 -43
  10. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  11. package/dist/components/dialogs/ConfirmDialog.mjs +40 -43
  12. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  13. package/dist/components/layout-and-navigation/Carousel.js +40 -43
  14. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  15. package/dist/components/layout-and-navigation/Carousel.mjs +40 -43
  16. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  17. package/dist/components/layout-and-navigation/Overlay.js +40 -43
  18. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  19. package/dist/components/layout-and-navigation/Overlay.mjs +40 -43
  20. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  21. package/dist/components/layout-and-navigation/Pagination.js +40 -43
  22. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  23. package/dist/components/layout-and-navigation/Pagination.mjs +40 -43
  24. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  25. package/dist/components/layout-and-navigation/SearchableList.js +40 -43
  26. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  27. package/dist/components/layout-and-navigation/SearchableList.mjs +40 -43
  28. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  29. package/dist/components/layout-and-navigation/StepperBar.js +26 -29
  30. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  31. package/dist/components/layout-and-navigation/StepperBar.mjs +26 -29
  32. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  33. package/dist/components/loading-states/LoadingButton.js +26 -29
  34. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  35. package/dist/components/loading-states/LoadingButton.mjs +26 -29
  36. package/dist/components/loading-states/LoadingButton.mjs.map +1 -1
  37. package/dist/components/modals/ConfirmModal.js +40 -43
  38. package/dist/components/modals/ConfirmModal.js.map +1 -1
  39. package/dist/components/modals/ConfirmModal.mjs +40 -43
  40. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  41. package/dist/components/modals/DiscardChangesModal.js +40 -43
  42. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  43. package/dist/components/modals/DiscardChangesModal.mjs +40 -43
  44. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  45. package/dist/components/modals/InputModal.js +40 -43
  46. package/dist/components/modals/InputModal.js.map +1 -1
  47. package/dist/components/modals/InputModal.mjs +40 -43
  48. package/dist/components/modals/InputModal.mjs.map +1 -1
  49. package/dist/components/modals/LanguageModal.js +43 -49
  50. package/dist/components/modals/LanguageModal.js.map +1 -1
  51. package/dist/components/modals/LanguageModal.mjs +43 -49
  52. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  53. package/dist/components/modals/ThemeModal.js +43 -49
  54. package/dist/components/modals/ThemeModal.js.map +1 -1
  55. package/dist/components/modals/ThemeModal.mjs +43 -49
  56. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  57. package/dist/components/properties/CheckboxProperty.js +96 -75
  58. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  59. package/dist/components/properties/CheckboxProperty.mjs +96 -75
  60. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  61. package/dist/components/properties/DateProperty.js +48 -53
  62. package/dist/components/properties/DateProperty.js.map +1 -1
  63. package/dist/components/properties/DateProperty.mjs +48 -53
  64. package/dist/components/properties/DateProperty.mjs.map +1 -1
  65. package/dist/components/properties/MultiSelectProperty.js +114 -93
  66. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  67. package/dist/components/properties/MultiSelectProperty.mjs +114 -93
  68. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  69. package/dist/components/properties/NumberProperty.js +48 -53
  70. package/dist/components/properties/NumberProperty.js.map +1 -1
  71. package/dist/components/properties/NumberProperty.mjs +48 -53
  72. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  73. package/dist/components/properties/PropertyBase.js +48 -53
  74. package/dist/components/properties/PropertyBase.js.map +1 -1
  75. package/dist/components/properties/PropertyBase.mjs +48 -53
  76. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  77. package/dist/components/properties/SelectProperty.js +65 -73
  78. package/dist/components/properties/SelectProperty.js.map +1 -1
  79. package/dist/components/properties/SelectProperty.mjs +65 -73
  80. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  81. package/dist/components/properties/TextProperty.js +51 -56
  82. package/dist/components/properties/TextProperty.js.map +1 -1
  83. package/dist/components/properties/TextProperty.mjs +51 -56
  84. package/dist/components/properties/TextProperty.mjs.map +1 -1
  85. package/dist/components/table/Table.js +88 -65
  86. package/dist/components/table/Table.js.map +1 -1
  87. package/dist/components/table/Table.mjs +88 -65
  88. package/dist/components/table/Table.mjs.map +1 -1
  89. package/dist/components/table/TableFilterButton.js +40 -43
  90. package/dist/components/table/TableFilterButton.js.map +1 -1
  91. package/dist/components/table/TableFilterButton.mjs +40 -43
  92. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  93. package/dist/components/table/TableSortButton.js +40 -43
  94. package/dist/components/table/TableSortButton.js.map +1 -1
  95. package/dist/components/table/TableSortButton.mjs +40 -43
  96. package/dist/components/table/TableSortButton.mjs.map +1 -1
  97. package/dist/components/user-action/Button.d.mts +3 -3
  98. package/dist/components/user-action/Button.d.ts +3 -3
  99. package/dist/components/user-action/Button.js +76 -84
  100. package/dist/components/user-action/Button.js.map +1 -1
  101. package/dist/components/user-action/Button.mjs +76 -84
  102. package/dist/components/user-action/Button.mjs.map +1 -1
  103. package/dist/components/user-action/Checkbox.js +48 -22
  104. package/dist/components/user-action/Checkbox.js.map +1 -1
  105. package/dist/components/user-action/Checkbox.mjs +48 -22
  106. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  107. package/dist/components/user-action/DateAndTimePicker.js +48 -53
  108. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  109. package/dist/components/user-action/DateAndTimePicker.mjs +48 -53
  110. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  111. package/dist/components/user-action/MultiSelect.js +92 -69
  112. package/dist/components/user-action/MultiSelect.js.map +1 -1
  113. package/dist/components/user-action/MultiSelect.mjs +92 -69
  114. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  115. package/dist/components/user-action/SearchBar.js +40 -43
  116. package/dist/components/user-action/SearchBar.js.map +1 -1
  117. package/dist/components/user-action/SearchBar.mjs +40 -43
  118. package/dist/components/user-action/SearchBar.mjs.map +1 -1
  119. package/dist/components/user-action/Select.js +43 -49
  120. package/dist/components/user-action/Select.js.map +1 -1
  121. package/dist/components/user-action/Select.mjs +43 -49
  122. package/dist/components/user-action/Select.mjs.map +1 -1
  123. package/dist/components/user-action/Textarea.js +3 -3
  124. package/dist/components/user-action/Textarea.js.map +1 -1
  125. package/dist/components/user-action/Textarea.mjs +3 -3
  126. package/dist/components/user-action/Textarea.mjs.map +1 -1
  127. package/dist/css/globals.css +269 -136
  128. package/dist/index.js +139 -124
  129. package/dist/index.js.map +1 -1
  130. package/dist/index.mjs +139 -124
  131. package/dist/index.mjs.map +1 -1
  132. package/dist/theming/useTheme.js +1 -1
  133. package/dist/theming/useTheme.js.map +1 -1
  134. package/dist/theming/useTheme.mjs +1 -1
  135. package/dist/theming/useTheme.mjs.map +1 -1
  136. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/user-action/Button.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport { forwardRef } from 'react'\nimport clsx from 'clsx'\n\n\nexport const ButtonColorUtil = {\n solid: ['primary', 'secondary', 'tertiary', 'positive', 'warning', 'negative', 'neutral'] as const,\n text: ['primary', 'negative', 'neutral'] as const,\n outline: ['primary'] as const,\n}\n\nexport const IconButtonUtil = {\n icon: [...ButtonColorUtil.solid, 'transparent'] as const,\n}\n\n\n/**\n * The allowed colors for the SolidButton and IconButton\n */\nexport type SolidButtonColor = typeof ButtonColorUtil.solid[number]\n/**\n * The allowed colors for the OutlineButton\n */\nexport type OutlineButtonColor = typeof ButtonColorUtil.outline[number]\n/**\n * The allowed colors for the TextButton\n */\nexport type TextButtonColor = typeof ButtonColorUtil.text[number]\n/**\n * The allowed colors for the IconButton\n */\nexport type IconButtonColor = typeof IconButtonUtil.icon[number]\n\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\ntype IconButtonSize = 'tiny' | 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: ButtonSizes,\n}> & ButtonHTMLAttributes<Element>\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n small: 'btn-sm',\n medium: 'btn-md',\n large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<IconButtonSize, string> = {\n tiny: 'icon-btn-xs',\n small: 'icon-btn-sm',\n medium: 'icon-btn-md',\n large: 'icon-btn-lg'\n}\n\nexport const ButtonUtil = {\n paddingMapping,\n iconPaddingMapping\n}\n\ntype ButtonWithIconsProps = ButtonProps & {\n startIcon?: ReactNode,\n endIcon?: ReactNode,\n}\n\nexport type SolidButtonProps = ButtonWithIconsProps & {\n color?: SolidButtonColor,\n}\n\nexport type OutlineButtonProps = ButtonWithIconsProps & {\n color?: OutlineButtonColor,\n}\n\nexport type TextButtonProps = ButtonWithIconsProps & {\n color?: TextButtonColor,\n coloredHoverBackground?: boolean,\n}\n\n/**\n * The shard properties between all button types\n */\nexport type IconButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: IconButtonSize,\n color?: IconButtonColor,\n}> & ButtonHTMLAttributes<Element>\n\n/**\n * A button with a solid background and different sizes\n */\nconst SolidButton = forwardRef<HTMLButtonElement, SolidButtonProps>(function SolidButton({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }, ref) {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-solid-primary-icon',\n secondary: 'text-button-solid-secondary-icon',\n tertiary: 'text-button-solid-tertiary-icon',\n positive: 'text-button-solid-positive-icon',\n warning: 'text-button-solid-warning-icon',\n negative: 'text-button-solid-negative-icon',\n neutral: 'text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n ref={ref}\n onClick={onClick}\n disabled={disabled}\n className={clsx(\n 'font-semibold',\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n})\n\n/**\n * A button with an outline border and different sizes\n */\nconst OutlineButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent border-2 border-button-outline-primary-text text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={clsx(\n 'font-semibold',\n {\n 'text-disabled-text border-disabled-outline cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-80')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A text that is a button that can have different sizes\n */\nconst TextButton = ({\n children,\n disabled = false,\n color = 'neutral',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n coloredHoverBackground = true,\n className,\n ...restProps\n }: TextButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent text-button-text-primary-text',\n negative: 'bg-transparent text-button-text-negative-text',\n neutral: 'bg-transparent text-button-text-neutral-text',\n }[color]\n\n const backgroundColor = {\n primary: 'hover:bg-button-text-primary-text/20',\n negative: 'hover:bg-button-text-negative-text/20',\n neutral: 'hover:bg-button-text-neutral-text/20',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-text-primary-icon',\n negative: 'text-button-text-negative-icon',\n neutral: 'text-button-text-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={clsx(\n 'font-semibold',\n {\n 'text-disabled-text cursor-not-allowed': disabled,\n [colorClasses]: !disabled,\n [backgroundColor]: !disabled && coloredHoverBackground,\n 'hover:bg-button-text-hover-background': !disabled && !coloredHoverBackground,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n\n/**\n * A button for icons with a solid background and different sizes\n */\nconst IconButton = ({\n children,\n disabled = false,\n color = 'primary',\n size = 'medium',\n className,\n ...restProps\n }: IconButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n transparent: 'bg-transparent',\n }[color]\n\n return (\n <button\n disabled={disabled}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled && color !== 'transparent',\n 'text-disabled-text cursor-not-allowed opacity-70': disabled && color === 'transparent',\n 'hover:bg-button-text-hover-background': !disabled && color === 'transparent',\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled,\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n"],"mappings":"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","names":["SolidButton"]}
1
+ {"version":3,"sources":["../../../src/components/user-action/Button.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport { forwardRef } from 'react'\nimport clsx from 'clsx'\n\n\nexport const ButtonColorUtil = {\n solid: ['primary', 'secondary', 'tertiary', 'positive', 'warning', 'negative', 'neutral'] as const,\n text: ['primary', 'negative', 'neutral'] as const,\n outline: ['primary'] as const,\n}\n\nexport const IconButtonUtil = {\n icon: [...ButtonColorUtil.solid, 'transparent'] as const,\n}\n\n\n/**\n * The allowed colors for the SolidButton and IconButton\n */\nexport type SolidButtonColor = typeof ButtonColorUtil.solid[number]\n/**\n * The allowed colors for the OutlineButton\n */\nexport type OutlineButtonColor = typeof ButtonColorUtil.outline[number]\n/**\n * The allowed colors for the TextButton\n */\nexport type TextButtonColor = typeof ButtonColorUtil.text[number]\n/**\n * The allowed colors for the IconButton\n */\nexport type IconButtonColor = typeof IconButtonUtil.icon[number]\n\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\ntype IconButtonSize = 'tiny' | 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: ButtonSizes,\n}> & ButtonHTMLAttributes<Element>\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n small: 'btn-sm',\n medium: 'btn-md',\n large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<IconButtonSize, string> = {\n tiny: 'icon-btn-xs',\n small: 'icon-btn-sm',\n medium: 'icon-btn-md',\n large: 'icon-btn-lg'\n}\n\nexport const ButtonUtil = {\n paddingMapping,\n iconPaddingMapping\n}\n\ntype ButtonWithIconsProps = ButtonProps & {\n startIcon?: ReactNode,\n endIcon?: ReactNode,\n}\n\nexport type SolidButtonProps = ButtonWithIconsProps & {\n color?: SolidButtonColor,\n}\n\nexport type OutlineButtonProps = ButtonWithIconsProps & {\n color?: OutlineButtonColor,\n}\n\nexport type TextButtonProps = ButtonWithIconsProps & {\n color?: TextButtonColor,\n coloredHoverBackground?: boolean,\n}\n\n/**\n * The shard properties between all button types\n */\nexport type IconButtonProps = PropsWithChildren<{\n /**\n * @default 'medium'\n */\n size?: IconButtonSize,\n color?: IconButtonColor,\n}> & ButtonHTMLAttributes<Element>\n\n/**\n * A button with a solid background and different sizes\n */\nconst SolidButton = forwardRef<HTMLButtonElement, SolidButtonProps>(function SolidButton({\n children,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }, ref) {\n const colorClasses = {\n primary: 'not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text',\n secondary: 'not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text',\n tertiary: 'not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text',\n positive: 'not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text',\n warning: 'not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text',\n negative: 'not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text',\n neutral: 'not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'not-group-disabled:text-button-solid-primary-icon',\n secondary: 'not-group-disabled:text-button-solid-secondary-icon',\n tertiary: 'not-group-disabled:text-button-solid-tertiary-icon',\n positive: 'not-group-disabled:text-button-solid-positive-icon',\n warning: 'not-group-disabled:text-button-solid-warning-icon',\n negative: 'not-group-disabled:text-button-solid-negative-icon',\n neutral: 'not-group-disabled:text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n ref={ref}\n onClick={onClick}\n className={clsx(\n 'group font-semibold',\n colorClasses,\n 'not-disabled:hover:brightness-90',\n 'disabled:text-disabled-text disabled:bg-disabled-background',\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n})\n\n/**\n * A button with an outline border and different sizes\n */\nconst OutlineButton = ({\n children,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'not-disabled:border-button-outline-primary-text not-disabled:text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'not-group-disabled:text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={onClick}\n className={clsx(\n 'group font-semibold bg-transparent border-2 ',\n 'not-disabled:hover:brightness-80',\n colorClasses,\n 'disabled:text-disabled-text disabled:border-disabled-outline',\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n/**\n * A text that is a button that can have different sizes\n */\nconst TextButton = ({\n children,\n color = 'neutral',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n coloredHoverBackground = true,\n className,\n ...restProps\n }: TextButtonProps) => {\n const colorClasses = {\n primary: 'not-disabled:bg-transparent not-disabled:text-button-text-primary-text',\n negative: 'not-disabled:bg-transparent not-disabled:text-button-text-negative-text',\n neutral: 'not-disabled:bg-transparent not-disabled:text-button-text-neutral-text',\n }[color]\n\n const backgroundColor = {\n primary: 'not-disabled:hover:bg-button-text-primary-text/20',\n negative: 'not-disabled:hover:bg-button-text-negative-text/20',\n neutral: 'not-disabled:hover:bg-button-text-neutral-text/20',\n }[color]\n\n const iconColorClasses = {\n primary: 'not-group-disabled:text-button-text-primary-icon',\n negative: 'not-group-disabled:text-button-text-negative-icon',\n neutral: 'not-group-disabled:text-button-text-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={onClick}\n className={clsx(\n 'group font-semibold',\n 'disabled:text-disabled-text',\n colorClasses,\n {\n [backgroundColor]: coloredHoverBackground,\n 'not-disabled:hover:bg-button-text-hover-background': !coloredHoverBackground,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx(\n iconColorClasses,\n 'group-disabled:text-disabled-icon'\n )}\n >\n {endIcon}\n </span>\n )}\n </button>\n )\n}\n\n\n/**\n * A button for icons with a solid background and different sizes\n */\nconst IconButton = ({\n children,\n color = 'primary',\n size = 'medium',\n className,\n ...restProps\n }: IconButtonProps) => {\n const colorClasses = {\n primary: 'not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text',\n secondary: 'not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text',\n tertiary: 'not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text',\n positive: 'not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text',\n warning: 'not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text',\n negative: 'not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text',\n neutral: 'not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text',\n transparent: 'not-disabled:bg-transparent',\n }[color]\n\n return (\n <button\n className={clsx(\n colorClasses,\n 'not-disabled:hover:brightness-90',\n 'disabled:text-disabled-text',\n {\n 'disabled:bg-disabled-background': color !== 'transparent',\n 'disabled:opacity-70': color === 'transparent',\n 'not-disabled:hover:bg-button-text-hover-background': color === 'transparent',\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n"],"mappings":"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","names":["SolidButton"]}
@@ -90,31 +90,57 @@ var Checkbox = ({
90
90
  }
91
91
  };
92
92
  const changeValue = () => {
93
+ if (disabled) {
94
+ return;
95
+ }
93
96
  const newValue = checked === "indeterminate" ? false : !checked;
94
97
  propagateChange(newValue);
95
98
  };
96
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: (0, import_clsx2.default)("group flex-row-2 items-center cursor-pointer", containerClassName), onClick: changeValue, children: [
97
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
98
- CheckboxPrimitive.Root,
99
- {
100
- onCheckedChange: propagateChange,
101
- checked,
102
- disabled,
103
- id,
104
- className: (0, import_clsx2.default)(usedSizeClass, `items-center border-2 rounded outline-none `, {
105
- "text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed": disabled,
106
- "focus:border-primary group-hover:border-primary ": !disabled,
107
- "bg-input-background": !disabled && !checked,
108
- "bg-primary/30 border-primary text-primary": !disabled && checked === true || checked === "indeterminate"
109
- }, className),
110
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(CheckboxPrimitive.Indicator, { children: [
111
- checked === true && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.Check, { className: innerIconSize }),
112
- checked === "indeterminate" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.Minus, { className: innerIconSize })
113
- ] })
114
- }
115
- ),
116
- label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Label, { ...label, className: (0, import_clsx2.default)(label.className), htmlFor: id })
117
- ] });
99
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
100
+ "div",
101
+ {
102
+ className: (0, import_clsx2.default)("group flex-row-2 items-center", {
103
+ "cursor-pointer": !disabled,
104
+ "cursor-not-allowed": disabled
105
+ }, containerClassName),
106
+ onClick: changeValue,
107
+ children: [
108
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
109
+ CheckboxPrimitive.Root,
110
+ {
111
+ onCheckedChange: propagateChange,
112
+ checked,
113
+ disabled,
114
+ id,
115
+ className: (0, import_clsx2.default)(usedSizeClass, `items-center border-2 rounded outline-none `, {
116
+ "text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed": disabled,
117
+ "focus:border-primary group-hover:border-primary ": !disabled,
118
+ "bg-input-background": !disabled && !checked,
119
+ "bg-primary/30 border-primary text-primary": !disabled && checked === true || checked === "indeterminate"
120
+ }, className),
121
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(CheckboxPrimitive.Indicator, { children: [
122
+ checked === true && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.Check, { className: innerIconSize }),
123
+ checked === "indeterminate" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_lucide_react.Minus, { className: innerIconSize })
124
+ ] })
125
+ }
126
+ ),
127
+ label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
128
+ Label,
129
+ {
130
+ ...label,
131
+ className: (0, import_clsx2.default)(
132
+ label.className,
133
+ {
134
+ "cursor-pointer": !disabled,
135
+ "cursor-not-allowed": disabled
136
+ }
137
+ ),
138
+ htmlFor: id
139
+ }
140
+ )
141
+ ]
142
+ }
143
+ );
118
144
  };
119
145
  var CheckboxUncontrolled = ({
120
146
  onChange,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/user-action/Checkbox.tsx","../../../src/components/user-action/Label.tsx"],"sourcesContent":["import { useState } from 'react'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-5',\n medium: 'size-6',\n large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-4',\n medium: 'size-5',\n large: 'size-7',\n}\n\ntype CheckboxProps = {\n /** used for the label's `for` attribute */\n id?: string,\n label?: Omit<LabelProps, 'id'>,\n /**\n * @default false\n */\n checked: CheckedState,\n disabled?: boolean,\n onChange?: (checked: boolean) => void,\n onChangeTristate?: (checked: CheckedState) => void,\n size?: CheckBoxSize,\n className?: string,\n containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst Checkbox = ({\n id,\n label,\n checked,\n disabled,\n onChange,\n onChangeTristate,\n size = 'medium',\n className = '',\n containerClassName\n }: CheckboxProps) => {\n const usedSizeClass = checkboxSizeMapping[size]\n const innerIconSize = checkboxIconSizeMapping[size]\n\n const propagateChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n }\n\n const changeValue = () => {\n const newValue = checked === 'indeterminate' ? false : !checked\n propagateChange(newValue)\n }\n\n return (\n <div className={clsx('group flex-row-2 items-center cursor-pointer', containerClassName)} onClick={changeValue}>\n <CheckboxPrimitive.Root\n onCheckedChange={propagateChange}\n checked={checked}\n disabled={disabled}\n id={id}\n className={clsx(usedSizeClass, `items-center border-2 rounded outline-none `, {\n 'text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed': disabled,\n 'focus:border-primary group-hover:border-primary ': !disabled,\n 'bg-input-background': !disabled && !checked,\n 'bg-primary/30 border-primary text-primary': !disabled && checked === true || checked === 'indeterminate',\n }, className)}\n >\n <CheckboxPrimitive.Indicator>\n {checked === true && <Check className={innerIconSize}/>}\n {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <Label {...label} className={clsx(label.className)} htmlFor={id}/>\n )}\n </div>\n )\n}\n\ntype CheckboxUncontrolledProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n /**\n * @default false\n */\n defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst CheckboxUncontrolled = ({\n onChange,\n onChangeTristate,\n defaultValue = false,\n ...props\n }: CheckboxUncontrolledProps) => {\n const [checked, setChecked] = useState(defaultValue)\n\n const handleChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n setChecked(checked)\n }\n\n return (\n <Checkbox\n {...props}\n checked={checked}\n onChangeTristate={handleChange}\n />\n )\n}\n\nexport {\n CheckboxProps,\n CheckboxUncontrolled,\n Checkbox,\n}\n","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAyB;AAEzB,wBAAmC;AACnC,0BAA6B;AAC7B,IAAAA,eAAiB;;;ACHjB,kBAAiB;AA4Bb;AAxBJ,IAAM,eAA0C;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AACZ;AAYO,IAAM,QAAQ,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,MAAkB;AACtC,SACE,4CAAC,WAAO,GAAG,OAAO,eAAW,YAAAC,SAAK,aAAa,SAAS,GAAG,SAAS,GACjE,qBAAW,WAAW,MACzB;AAEJ;;;ADoDQ,IAAAC,sBAAA;AA3ER,IAAM,sBAAoD;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,0BAAwD;AAAA,EAC5D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAuBA,IAAM,WAAW,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AACF,MAAqB;AACrC,QAAM,gBAAgB,oBAAoB,IAAI;AAC9C,QAAM,gBAAgB,wBAAwB,IAAI;AAElD,QAAM,kBAAkB,CAACC,aAA0B;AACjD,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM,WAAW,YAAY,kBAAkB,QAAQ,CAAC;AACxD,oBAAgB,QAAQ;AAAA,EAC1B;AAEA,SACE,8CAAC,SAAI,eAAW,aAAAC,SAAK,gDAAgD,kBAAkB,GAAG,SAAS,aACjG;AAAA;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAW,aAAAA,SAAK,eAAe,+CAA+C;AAAA,UAC5E,wFAAwF;AAAA,UACxF,oDAAoD,CAAC;AAAA,UACrD,uBAAuB,CAAC,YAAY,CAAC;AAAA,UACrC,6CAA8C,CAAC,YAAY,YAAY,QAAQ,YAAY;AAAA,QAC7F,GAAG,SAAS;AAAA,QAEZ,wDAAmB,6BAAlB,EACE;AAAA,sBAAY,QAAQ,6CAAC,6BAAM,WAAW,eAAc;AAAA,UACpD,YAAY,mBAAmB,6CAAC,6BAAM,WAAW,eAAc;AAAA,WAClE;AAAA;AAAA,IACF;AAAA,IACC,SACC,6CAAC,SAAO,GAAG,OAAO,eAAW,aAAAA,SAAK,MAAM,SAAS,GAAG,SAAS,IAAG;AAAA,KAEpE;AAEJ;AAcA,IAAM,uBAAuB,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,MAAiC;AAC7D,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,YAAY;AAEnD,QAAM,eAAe,CAACD,aAA0B;AAC9C,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AACA,eAAWA,QAAO;AAAA,EACpB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA;AAAA,EACpB;AAEJ;","names":["import_clsx","clsx","import_jsx_runtime","checked","clsx"]}
1
+ {"version":3,"sources":["../../../src/components/user-action/Checkbox.tsx","../../../src/components/user-action/Label.tsx"],"sourcesContent":["import { useState } from 'react'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-5',\n medium: 'size-6',\n large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-4',\n medium: 'size-5',\n large: 'size-7',\n}\n\ntype CheckboxProps = {\n /** used for the label's `for` attribute */\n id?: string,\n label?: Omit<LabelProps, 'id'>,\n /**\n * @default false\n */\n checked: CheckedState,\n disabled?: boolean,\n onChange?: (checked: boolean) => void,\n onChangeTristate?: (checked: CheckedState) => void,\n size?: CheckBoxSize,\n className?: string,\n containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst Checkbox = ({\n id,\n label,\n checked,\n disabled,\n onChange,\n onChangeTristate,\n size = 'medium',\n className = '',\n containerClassName\n }: CheckboxProps) => {\n const usedSizeClass = checkboxSizeMapping[size]\n const innerIconSize = checkboxIconSizeMapping[size]\n\n const propagateChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n }\n\n const changeValue = () => {\n if (disabled) {\n return\n }\n const newValue = checked === 'indeterminate' ? false : !checked\n propagateChange(newValue)\n }\n\n return (\n <div\n className={clsx('group flex-row-2 items-center', {\n 'cursor-pointer': !disabled,\n 'cursor-not-allowed': disabled,\n }, containerClassName)}\n onClick={changeValue}\n >\n <CheckboxPrimitive.Root\n onCheckedChange={propagateChange}\n checked={checked}\n disabled={disabled}\n id={id}\n className={clsx(usedSizeClass, `items-center border-2 rounded outline-none `, {\n 'text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed': disabled,\n 'focus:border-primary group-hover:border-primary ': !disabled,\n 'bg-input-background': !disabled && !checked,\n 'bg-primary/30 border-primary text-primary': !disabled && checked === true || checked === 'indeterminate',\n }, className)}\n >\n <CheckboxPrimitive.Indicator>\n {checked === true && <Check className={innerIconSize}/>}\n {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <Label\n {...label}\n className={clsx(\n label.className,\n {\n 'cursor-pointer': !disabled,\n 'cursor-not-allowed': disabled,\n }\n )}\n htmlFor={id}\n />\n )}\n </div>\n )\n}\n\ntype CheckboxUncontrolledProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n /**\n * @default false\n */\n defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst CheckboxUncontrolled = ({\n onChange,\n onChangeTristate,\n defaultValue = false,\n ...props\n }: CheckboxUncontrolledProps) => {\n const [checked, setChecked] = useState(defaultValue)\n\n const handleChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n setChecked(checked)\n }\n\n return (\n <Checkbox\n {...props}\n checked={checked}\n onChangeTristate={handleChange}\n />\n )\n}\n\nexport {\n CheckboxProps,\n CheckboxUncontrolled,\n Checkbox,\n}\n","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n"],"mappings":"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","names":["import_clsx","clsx","import_jsx_runtime","checked","clsx"]}
@@ -56,31 +56,57 @@ var Checkbox = ({
56
56
  }
57
57
  };
58
58
  const changeValue = () => {
59
+ if (disabled) {
60
+ return;
61
+ }
59
62
  const newValue = checked === "indeterminate" ? false : !checked;
60
63
  propagateChange(newValue);
61
64
  };
62
- return /* @__PURE__ */ jsxs("div", { className: clsx2("group flex-row-2 items-center cursor-pointer", containerClassName), onClick: changeValue, children: [
63
- /* @__PURE__ */ jsx2(
64
- CheckboxPrimitive.Root,
65
- {
66
- onCheckedChange: propagateChange,
67
- checked,
68
- disabled,
69
- id,
70
- className: clsx2(usedSizeClass, `items-center border-2 rounded outline-none `, {
71
- "text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed": disabled,
72
- "focus:border-primary group-hover:border-primary ": !disabled,
73
- "bg-input-background": !disabled && !checked,
74
- "bg-primary/30 border-primary text-primary": !disabled && checked === true || checked === "indeterminate"
75
- }, className),
76
- children: /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, { children: [
77
- checked === true && /* @__PURE__ */ jsx2(Check, { className: innerIconSize }),
78
- checked === "indeterminate" && /* @__PURE__ */ jsx2(Minus, { className: innerIconSize })
79
- ] })
80
- }
81
- ),
82
- label && /* @__PURE__ */ jsx2(Label, { ...label, className: clsx2(label.className), htmlFor: id })
83
- ] });
65
+ return /* @__PURE__ */ jsxs(
66
+ "div",
67
+ {
68
+ className: clsx2("group flex-row-2 items-center", {
69
+ "cursor-pointer": !disabled,
70
+ "cursor-not-allowed": disabled
71
+ }, containerClassName),
72
+ onClick: changeValue,
73
+ children: [
74
+ /* @__PURE__ */ jsx2(
75
+ CheckboxPrimitive.Root,
76
+ {
77
+ onCheckedChange: propagateChange,
78
+ checked,
79
+ disabled,
80
+ id,
81
+ className: clsx2(usedSizeClass, `items-center border-2 rounded outline-none `, {
82
+ "text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed": disabled,
83
+ "focus:border-primary group-hover:border-primary ": !disabled,
84
+ "bg-input-background": !disabled && !checked,
85
+ "bg-primary/30 border-primary text-primary": !disabled && checked === true || checked === "indeterminate"
86
+ }, className),
87
+ children: /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, { children: [
88
+ checked === true && /* @__PURE__ */ jsx2(Check, { className: innerIconSize }),
89
+ checked === "indeterminate" && /* @__PURE__ */ jsx2(Minus, { className: innerIconSize })
90
+ ] })
91
+ }
92
+ ),
93
+ label && /* @__PURE__ */ jsx2(
94
+ Label,
95
+ {
96
+ ...label,
97
+ className: clsx2(
98
+ label.className,
99
+ {
100
+ "cursor-pointer": !disabled,
101
+ "cursor-not-allowed": disabled
102
+ }
103
+ ),
104
+ htmlFor: id
105
+ }
106
+ )
107
+ ]
108
+ }
109
+ );
84
110
  };
85
111
  var CheckboxUncontrolled = ({
86
112
  onChange,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/user-action/Checkbox.tsx","../../../src/components/user-action/Label.tsx"],"sourcesContent":["import { useState } from 'react'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-5',\n medium: 'size-6',\n large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-4',\n medium: 'size-5',\n large: 'size-7',\n}\n\ntype CheckboxProps = {\n /** used for the label's `for` attribute */\n id?: string,\n label?: Omit<LabelProps, 'id'>,\n /**\n * @default false\n */\n checked: CheckedState,\n disabled?: boolean,\n onChange?: (checked: boolean) => void,\n onChangeTristate?: (checked: CheckedState) => void,\n size?: CheckBoxSize,\n className?: string,\n containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst Checkbox = ({\n id,\n label,\n checked,\n disabled,\n onChange,\n onChangeTristate,\n size = 'medium',\n className = '',\n containerClassName\n }: CheckboxProps) => {\n const usedSizeClass = checkboxSizeMapping[size]\n const innerIconSize = checkboxIconSizeMapping[size]\n\n const propagateChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n }\n\n const changeValue = () => {\n const newValue = checked === 'indeterminate' ? false : !checked\n propagateChange(newValue)\n }\n\n return (\n <div className={clsx('group flex-row-2 items-center cursor-pointer', containerClassName)} onClick={changeValue}>\n <CheckboxPrimitive.Root\n onCheckedChange={propagateChange}\n checked={checked}\n disabled={disabled}\n id={id}\n className={clsx(usedSizeClass, `items-center border-2 rounded outline-none `, {\n 'text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed': disabled,\n 'focus:border-primary group-hover:border-primary ': !disabled,\n 'bg-input-background': !disabled && !checked,\n 'bg-primary/30 border-primary text-primary': !disabled && checked === true || checked === 'indeterminate',\n }, className)}\n >\n <CheckboxPrimitive.Indicator>\n {checked === true && <Check className={innerIconSize}/>}\n {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <Label {...label} className={clsx(label.className)} htmlFor={id}/>\n )}\n </div>\n )\n}\n\ntype CheckboxUncontrolledProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n /**\n * @default false\n */\n defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst CheckboxUncontrolled = ({\n onChange,\n onChangeTristate,\n defaultValue = false,\n ...props\n }: CheckboxUncontrolledProps) => {\n const [checked, setChecked] = useState(defaultValue)\n\n const handleChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n setChecked(checked)\n }\n\n return (\n <Checkbox\n {...props}\n checked={checked}\n onChangeTristate={handleChange}\n />\n )\n}\n\nexport {\n CheckboxProps,\n CheckboxUncontrolled,\n Checkbox,\n}\n","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AAEzB,YAAY,uBAAuB;AACnC,SAAS,OAAO,aAAa;AAC7B,OAAOA,WAAU;;;ACHjB,OAAO,UAAU;AA4Bb;AAxBJ,IAAM,eAA0C;AAAA,EAC9C,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AACZ;AAYO,IAAM,QAAQ,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,MAAkB;AACtC,SACE,oBAAC,WAAO,GAAG,OAAO,WAAW,KAAK,aAAa,SAAS,GAAG,SAAS,GACjE,qBAAW,WAAW,MACzB;AAEJ;;;ADoDQ,SACuB,OAAAC,MADvB;AA3ER,IAAM,sBAAoD;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,IAAM,0BAAwD;AAAA,EAC5D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAuBA,IAAM,WAAW,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AACF,MAAqB;AACrC,QAAM,gBAAgB,oBAAoB,IAAI;AAC9C,QAAM,gBAAgB,wBAAwB,IAAI;AAElD,QAAM,kBAAkB,CAACC,aAA0B;AACjD,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM,WAAW,YAAY,kBAAkB,QAAQ,CAAC;AACxD,oBAAgB,QAAQ;AAAA,EAC1B;AAEA,SACE,qBAAC,SAAI,WAAWC,MAAK,gDAAgD,kBAAkB,GAAG,SAAS,aACjG;AAAA,oBAAAF;AAAA,MAAmB;AAAA,MAAlB;AAAA,QACC,iBAAiB;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAWE,MAAK,eAAe,+CAA+C;AAAA,UAC5E,wFAAwF;AAAA,UACxF,oDAAoD,CAAC;AAAA,UACrD,uBAAuB,CAAC,YAAY,CAAC;AAAA,UACrC,6CAA8C,CAAC,YAAY,YAAY,QAAQ,YAAY;AAAA,QAC7F,GAAG,SAAS;AAAA,QAEZ,+BAAmB,6BAAlB,EACE;AAAA,sBAAY,QAAQ,gBAAAF,KAAC,SAAM,WAAW,eAAc;AAAA,UACpD,YAAY,mBAAmB,gBAAAA,KAAC,SAAM,WAAW,eAAc;AAAA,WAClE;AAAA;AAAA,IACF;AAAA,IACC,SACC,gBAAAA,KAAC,SAAO,GAAG,OAAO,WAAWE,MAAK,MAAM,SAAS,GAAG,SAAS,IAAG;AAAA,KAEpE;AAEJ;AAcA,IAAM,uBAAuB,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,MAAiC;AAC7D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,YAAY;AAEnD,QAAM,eAAe,CAACD,aAA0B;AAC9C,QAAI,kBAAkB;AACpB,uBAAiBA,QAAO;AAAA,IAC1B;AACA,QAAI,UAAU;AACZ,eAASA,aAAY,kBAAkB,QAAQA,QAAO;AAAA,IACxD;AACA,eAAWA,QAAO;AAAA,EACpB;AAEA,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,kBAAkB;AAAA;AAAA,EACpB;AAEJ;","names":["clsx","jsx","checked","clsx"]}
1
+ {"version":3,"sources":["../../../src/components/user-action/Checkbox.tsx","../../../src/components/user-action/Label.tsx"],"sourcesContent":["import { useState } from 'react'\nimport type { CheckedState } from '@radix-ui/react-checkbox'\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check, Minus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\n\ntype CheckBoxSize = 'small' | 'medium' | 'large'\n\nconst checkboxSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-5',\n medium: 'size-6',\n large: 'size-8',\n}\n\nconst checkboxIconSizeMapping: Record<CheckBoxSize, string> = {\n small: 'size-4',\n medium: 'size-5',\n large: 'size-7',\n}\n\ntype CheckboxProps = {\n /** used for the label's `for` attribute */\n id?: string,\n label?: Omit<LabelProps, 'id'>,\n /**\n * @default false\n */\n checked: CheckedState,\n disabled?: boolean,\n onChange?: (checked: boolean) => void,\n onChangeTristate?: (checked: CheckedState) => void,\n size?: CheckBoxSize,\n className?: string,\n containerClassName?: string,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by the parent\n */\nconst Checkbox = ({\n id,\n label,\n checked,\n disabled,\n onChange,\n onChangeTristate,\n size = 'medium',\n className = '',\n containerClassName\n }: CheckboxProps) => {\n const usedSizeClass = checkboxSizeMapping[size]\n const innerIconSize = checkboxIconSizeMapping[size]\n\n const propagateChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n }\n\n const changeValue = () => {\n if (disabled) {\n return\n }\n const newValue = checked === 'indeterminate' ? false : !checked\n propagateChange(newValue)\n }\n\n return (\n <div\n className={clsx('group flex-row-2 items-center', {\n 'cursor-pointer': !disabled,\n 'cursor-not-allowed': disabled,\n }, containerClassName)}\n onClick={changeValue}\n >\n <CheckboxPrimitive.Root\n onCheckedChange={propagateChange}\n checked={checked}\n disabled={disabled}\n id={id}\n className={clsx(usedSizeClass, `items-center border-2 rounded outline-none `, {\n 'text-disabled-text border-disabled-outline bg-disabled-background cursor-not-allowed': disabled,\n 'focus:border-primary group-hover:border-primary ': !disabled,\n 'bg-input-background': !disabled && !checked,\n 'bg-primary/30 border-primary text-primary': !disabled && checked === true || checked === 'indeterminate',\n }, className)}\n >\n <CheckboxPrimitive.Indicator>\n {checked === true && <Check className={innerIconSize}/>}\n {checked === 'indeterminate' && <Minus className={innerIconSize}/>}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n {label && (\n <Label\n {...label}\n className={clsx(\n label.className,\n {\n 'cursor-pointer': !disabled,\n 'cursor-not-allowed': disabled,\n }\n )}\n htmlFor={id}\n />\n )}\n </div>\n )\n}\n\ntype CheckboxUncontrolledProps = Omit<CheckboxProps, 'value' | 'checked'> & {\n /**\n * @default false\n */\n defaultValue?: CheckedState,\n}\n\n/**\n * A Tristate checkbox\n *\n * The state is managed by this component\n */\nconst CheckboxUncontrolled = ({\n onChange,\n onChangeTristate,\n defaultValue = false,\n ...props\n }: CheckboxUncontrolledProps) => {\n const [checked, setChecked] = useState(defaultValue)\n\n const handleChange = (checked: CheckedState) => {\n if (onChangeTristate) {\n onChangeTristate(checked)\n }\n if (onChange) {\n onChange(checked === 'indeterminate' ? false : checked)\n }\n setChecked(checked)\n }\n\n return (\n <Checkbox\n {...props}\n checked={checked}\n onChangeTristate={handleChange}\n />\n )\n}\n\nexport {\n CheckboxProps,\n CheckboxUncontrolled,\n Checkbox,\n}\n","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n labelSmall: 'textstyle-label-sm',\n labelMedium: 'textstyle-label-md',\n labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n /** The text for the label */\n name?: string,\n /** The styling for the label */\n labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n children,\n name,\n labelType = 'labelSmall',\n className,\n ...props\n }: LabelProps) => {\n return (\n <label {...props} className={clsx(styleMapping[labelType], className)}>\n {children ? children : name}\n </label>\n )\n}\n"],"mappings":"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","names":["clsx","jsx","checked","clsx"]}
@@ -300,7 +300,6 @@ var ButtonUtil = {
300
300
  };
301
301
  var SolidButton = (0, import_react3.forwardRef)(function SolidButton2({
302
302
  children,
303
- disabled = false,
304
303
  color = "primary",
305
304
  size = "medium",
306
305
  startIcon,
@@ -310,35 +309,33 @@ var SolidButton = (0, import_react3.forwardRef)(function SolidButton2({
310
309
  ...restProps
311
310
  }, ref) {
312
311
  const colorClasses = {
313
- primary: "bg-button-solid-primary-background text-button-solid-primary-text",
314
- secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
315
- tertiary: "bg-button-solid-tertiary-background text-button-solid-tertiary-text",
316
- positive: "bg-button-solid-positive-background text-button-solid-positive-text",
317
- warning: "bg-button-solid-warning-background text-button-solid-warning-text",
318
- negative: "bg-button-solid-negative-background text-button-solid-negative-text",
319
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
312
+ primary: "not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text",
313
+ secondary: "not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text",
314
+ tertiary: "not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text",
315
+ positive: "not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text",
316
+ warning: "not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text",
317
+ negative: "not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text",
318
+ neutral: "not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text"
320
319
  }[color];
321
320
  const iconColorClasses = {
322
- primary: "text-button-solid-primary-icon",
323
- secondary: "text-button-solid-secondary-icon",
324
- tertiary: "text-button-solid-tertiary-icon",
325
- positive: "text-button-solid-positive-icon",
326
- warning: "text-button-solid-warning-icon",
327
- negative: "text-button-solid-negative-icon",
328
- neutral: "text-button-solid-neutral-icon"
321
+ primary: "not-group-disabled:text-button-solid-primary-icon",
322
+ secondary: "not-group-disabled:text-button-solid-secondary-icon",
323
+ tertiary: "not-group-disabled:text-button-solid-tertiary-icon",
324
+ positive: "not-group-disabled:text-button-solid-positive-icon",
325
+ warning: "not-group-disabled:text-button-solid-warning-icon",
326
+ negative: "not-group-disabled:text-button-solid-negative-icon",
327
+ neutral: "not-group-disabled:text-button-solid-neutral-icon"
329
328
  }[color];
330
329
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
331
330
  "button",
332
331
  {
333
332
  ref,
334
333
  onClick,
335
- disabled,
336
334
  className: (0, import_clsx.default)(
337
- "font-semibold",
338
- {
339
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
340
- [(0, import_clsx.default)(colorClasses, "hover:brightness-90")]: !disabled
341
- },
335
+ "group font-semibold",
336
+ colorClasses,
337
+ "not-disabled:hover:brightness-90",
338
+ "disabled:text-disabled-text disabled:bg-disabled-background",
342
339
  ButtonUtil.paddingMapping[size],
343
340
  className
344
341
  ),
@@ -347,10 +344,10 @@ var SolidButton = (0, import_react3.forwardRef)(function SolidButton2({
347
344
  startIcon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
348
345
  "span",
349
346
  {
350
- className: (0, import_clsx.default)({
351
- [iconColorClasses]: !disabled,
352
- [`text-disabled-icon`]: disabled
353
- }),
347
+ className: (0, import_clsx.default)(
348
+ iconColorClasses,
349
+ "group-disabled:text-disabled-icon"
350
+ ),
354
351
  children: startIcon
355
352
  }
356
353
  ),
@@ -358,10 +355,10 @@ var SolidButton = (0, import_react3.forwardRef)(function SolidButton2({
358
355
  endIcon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
359
356
  "span",
360
357
  {
361
- className: (0, import_clsx.default)({
362
- [iconColorClasses]: !disabled,
363
- [`text-disabled-icon`]: disabled
364
- }),
358
+ className: (0, import_clsx.default)(
359
+ iconColorClasses,
360
+ "group-disabled:text-disabled-icon"
361
+ ),
365
362
  children: endIcon
366
363
  }
367
364
  )
@@ -371,7 +368,6 @@ var SolidButton = (0, import_react3.forwardRef)(function SolidButton2({
371
368
  });
372
369
  var TextButton = ({
373
370
  children,
374
- disabled = false,
375
371
  color = "neutral",
376
372
  size = "medium",
377
373
  startIcon,
@@ -382,32 +378,31 @@ var TextButton = ({
382
378
  ...restProps
383
379
  }) => {
384
380
  const colorClasses = {
385
- primary: "bg-transparent text-button-text-primary-text",
386
- negative: "bg-transparent text-button-text-negative-text",
387
- neutral: "bg-transparent text-button-text-neutral-text"
381
+ primary: "not-disabled:bg-transparent not-disabled:text-button-text-primary-text",
382
+ negative: "not-disabled:bg-transparent not-disabled:text-button-text-negative-text",
383
+ neutral: "not-disabled:bg-transparent not-disabled:text-button-text-neutral-text"
388
384
  }[color];
389
385
  const backgroundColor = {
390
- primary: "hover:bg-button-text-primary-text/20",
391
- negative: "hover:bg-button-text-negative-text/20",
392
- neutral: "hover:bg-button-text-neutral-text/20"
386
+ primary: "not-disabled:hover:bg-button-text-primary-text/20",
387
+ negative: "not-disabled:hover:bg-button-text-negative-text/20",
388
+ neutral: "not-disabled:hover:bg-button-text-neutral-text/20"
393
389
  }[color];
394
390
  const iconColorClasses = {
395
- primary: "text-button-text-primary-icon",
396
- negative: "text-button-text-negative-icon",
397
- neutral: "text-button-text-neutral-icon"
391
+ primary: "not-group-disabled:text-button-text-primary-icon",
392
+ negative: "not-group-disabled:text-button-text-negative-icon",
393
+ neutral: "not-group-disabled:text-button-text-neutral-icon"
398
394
  }[color];
399
395
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
400
396
  "button",
401
397
  {
402
398
  onClick,
403
- disabled,
404
399
  className: (0, import_clsx.default)(
405
- "font-semibold",
400
+ "group font-semibold",
401
+ "disabled:text-disabled-text",
402
+ colorClasses,
406
403
  {
407
- "text-disabled-text cursor-not-allowed": disabled,
408
- [colorClasses]: !disabled,
409
- [backgroundColor]: !disabled && coloredHoverBackground,
410
- "hover:bg-button-text-hover-background": !disabled && !coloredHoverBackground
404
+ [backgroundColor]: coloredHoverBackground,
405
+ "not-disabled:hover:bg-button-text-hover-background": !coloredHoverBackground
411
406
  },
412
407
  ButtonUtil.paddingMapping[size],
413
408
  className
@@ -417,10 +412,10 @@ var TextButton = ({
417
412
  startIcon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
418
413
  "span",
419
414
  {
420
- className: (0, import_clsx.default)({
421
- [iconColorClasses]: !disabled,
422
- [`text-disabled-icon`]: disabled
423
- }),
415
+ className: (0, import_clsx.default)(
416
+ iconColorClasses,
417
+ "group-disabled:text-disabled-icon"
418
+ ),
424
419
  children: startIcon
425
420
  }
426
421
  ),
@@ -428,10 +423,10 @@ var TextButton = ({
428
423
  endIcon && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
429
424
  "span",
430
425
  {
431
- className: (0, import_clsx.default)({
432
- [iconColorClasses]: !disabled,
433
- [`text-disabled-icon`]: disabled
434
- }),
426
+ className: (0, import_clsx.default)(
427
+ iconColorClasses,
428
+ "group-disabled:text-disabled-icon"
429
+ ),
435
430
  children: endIcon
436
431
  }
437
432
  )