@stack-spot/citric-react 0.3.2 → 0.4.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 (139) hide show
  1. package/dist/citric.css +4 -0
  2. package/dist/components/Accordion.d.ts +1 -2
  3. package/dist/components/Accordion.d.ts.map +1 -1
  4. package/dist/components/Accordion.js.map +1 -1
  5. package/dist/components/Alert.d.ts +1 -2
  6. package/dist/components/Alert.d.ts.map +1 -1
  7. package/dist/components/Alert.js.map +1 -1
  8. package/dist/components/Avatar.d.ts +2 -2
  9. package/dist/components/Avatar.d.ts.map +1 -1
  10. package/dist/components/AvatarGroup.d.ts +2 -2
  11. package/dist/components/AvatarGroup.d.ts.map +1 -1
  12. package/dist/components/Badge.d.ts +2 -2
  13. package/dist/components/Badge.d.ts.map +1 -1
  14. package/dist/components/Blockquote.d.ts +2 -2
  15. package/dist/components/Blockquote.d.ts.map +1 -1
  16. package/dist/components/Breadcrumb.d.ts +1 -2
  17. package/dist/components/Breadcrumb.d.ts.map +1 -1
  18. package/dist/components/Breadcrumb.js.map +1 -1
  19. package/dist/components/Button.d.ts +2 -2
  20. package/dist/components/Button.d.ts.map +1 -1
  21. package/dist/components/Card.d.ts +2 -2
  22. package/dist/components/Card.d.ts.map +1 -1
  23. package/dist/components/Checkbox.d.ts +2 -2
  24. package/dist/components/Checkbox.d.ts.map +1 -1
  25. package/dist/components/CheckboxGroup.d.ts +2 -2
  26. package/dist/components/CheckboxGroup.d.ts.map +1 -1
  27. package/dist/components/Circle.d.ts +2 -2
  28. package/dist/components/Circle.d.ts.map +1 -1
  29. package/dist/components/CitricComponent.d.ts +1 -1
  30. package/dist/components/CitricComponent.d.ts.map +1 -1
  31. package/dist/components/CitricComponent.js.map +1 -1
  32. package/dist/components/Divider.d.ts +2 -2
  33. package/dist/components/Divider.d.ts.map +1 -1
  34. package/dist/components/Favorite.d.ts +2 -2
  35. package/dist/components/Favorite.d.ts.map +1 -1
  36. package/dist/components/FieldGroup.d.ts +1 -2
  37. package/dist/components/FieldGroup.d.ts.map +1 -1
  38. package/dist/components/FieldGroup.js.map +1 -1
  39. package/dist/components/FormGroup.d.ts +1 -2
  40. package/dist/components/FormGroup.d.ts.map +1 -1
  41. package/dist/components/FormGroup.js.map +1 -1
  42. package/dist/components/IconBox.d.ts +2 -2
  43. package/dist/components/IconBox.d.ts.map +1 -1
  44. package/dist/components/Input.d.ts +3 -3
  45. package/dist/components/Input.d.ts.map +1 -1
  46. package/dist/components/Link.d.ts +2 -2
  47. package/dist/components/Link.d.ts.map +1 -1
  48. package/dist/components/MenuOverlay/types.d.ts +2 -3
  49. package/dist/components/MenuOverlay/types.d.ts.map +1 -1
  50. package/dist/components/Overlay/types.d.ts +2 -2
  51. package/dist/components/Overlay/types.d.ts.map +1 -1
  52. package/dist/components/Pagination.d.ts +1 -2
  53. package/dist/components/Pagination.d.ts.map +1 -1
  54. package/dist/components/Pagination.js.map +1 -1
  55. package/dist/components/ProgressBar.d.ts +2 -2
  56. package/dist/components/ProgressBar.d.ts.map +1 -1
  57. package/dist/components/ProgressCircular.d.ts +2 -2
  58. package/dist/components/ProgressCircular.d.ts.map +1 -1
  59. package/dist/components/RadioGroup.d.ts +2 -2
  60. package/dist/components/RadioGroup.d.ts.map +1 -1
  61. package/dist/components/Rating.d.ts +1 -2
  62. package/dist/components/Rating.d.ts.map +1 -1
  63. package/dist/components/Rating.js.map +1 -1
  64. package/dist/components/Select/SimpleSelect.d.ts.map +1 -1
  65. package/dist/components/Select/SimpleSelect.js +4 -6
  66. package/dist/components/Select/SimpleSelect.js.map +1 -1
  67. package/dist/components/Select/types.d.ts +2 -2
  68. package/dist/components/Select/types.d.ts.map +1 -1
  69. package/dist/components/SelectBox.d.ts +2 -2
  70. package/dist/components/SelectBox.d.ts.map +1 -1
  71. package/dist/components/Skeleton.d.ts +1 -2
  72. package/dist/components/Skeleton.d.ts.map +1 -1
  73. package/dist/components/Skeleton.js.map +1 -1
  74. package/dist/components/Slider.d.ts +2 -2
  75. package/dist/components/Slider.d.ts.map +1 -1
  76. package/dist/components/Stepper.d.ts +1 -2
  77. package/dist/components/Stepper.d.ts.map +1 -1
  78. package/dist/components/Stepper.js.map +1 -1
  79. package/dist/components/Switch.d.ts +2 -2
  80. package/dist/components/Switch.d.ts.map +1 -1
  81. package/dist/components/Table.d.ts +3 -4
  82. package/dist/components/Table.d.ts.map +1 -1
  83. package/dist/components/Table.js.map +1 -1
  84. package/dist/components/Tabs/types.d.ts +2 -2
  85. package/dist/components/Tabs/types.d.ts.map +1 -1
  86. package/dist/components/Text.d.ts +16 -4
  87. package/dist/components/Text.d.ts.map +1 -1
  88. package/dist/components/Text.js +8 -2
  89. package/dist/components/Text.js.map +1 -1
  90. package/dist/components/Textarea.d.ts +2 -2
  91. package/dist/components/Textarea.d.ts.map +1 -1
  92. package/dist/components/Tooltip.d.ts +2 -2
  93. package/dist/components/Tooltip.d.ts.map +1 -1
  94. package/dist/components/layout.d.ts +4 -4
  95. package/dist/components/layout.d.ts.map +1 -1
  96. package/dist/types.d.ts +2 -1
  97. package/dist/types.d.ts.map +1 -1
  98. package/package.json +1 -1
  99. package/src/components/Accordion.tsx +1 -2
  100. package/src/components/Alert.tsx +1 -2
  101. package/src/components/Avatar.tsx +2 -2
  102. package/src/components/AvatarGroup.tsx +2 -2
  103. package/src/components/Badge.tsx +2 -2
  104. package/src/components/Blockquote.tsx +2 -2
  105. package/src/components/Breadcrumb.tsx +1 -2
  106. package/src/components/Button.tsx +2 -2
  107. package/src/components/Card.tsx +2 -2
  108. package/src/components/Checkbox.tsx +2 -2
  109. package/src/components/CheckboxGroup.tsx +2 -2
  110. package/src/components/Circle.tsx +2 -2
  111. package/src/components/CitricComponent.ts +1 -1
  112. package/src/components/Divider.tsx +2 -2
  113. package/src/components/Favorite.tsx +2 -2
  114. package/src/components/FieldGroup.tsx +1 -2
  115. package/src/components/FormGroup.tsx +1 -2
  116. package/src/components/IconBox.tsx +2 -2
  117. package/src/components/Input.tsx +2 -2
  118. package/src/components/Link.tsx +2 -2
  119. package/src/components/MenuOverlay/types.ts +2 -3
  120. package/src/components/Overlay/types.ts +2 -3
  121. package/src/components/Pagination.tsx +1 -2
  122. package/src/components/ProgressBar.tsx +2 -2
  123. package/src/components/ProgressCircular.tsx +2 -2
  124. package/src/components/RadioGroup.tsx +2 -2
  125. package/src/components/Rating.tsx +1 -2
  126. package/src/components/Select/SimpleSelect.tsx +12 -6
  127. package/src/components/Select/types.ts +2 -2
  128. package/src/components/SelectBox.tsx +2 -2
  129. package/src/components/Skeleton.tsx +1 -2
  130. package/src/components/Slider.tsx +2 -2
  131. package/src/components/Stepper.tsx +1 -2
  132. package/src/components/Switch.tsx +2 -2
  133. package/src/components/Table.tsx +3 -4
  134. package/src/components/Tabs/types.ts +2 -2
  135. package/src/components/Text.ts +21 -4
  136. package/src/components/Textarea.tsx +2 -2
  137. package/src/components/Tooltip.tsx +2 -2
  138. package/src/components/layout.tsx +4 -4
  139. package/src/types.ts +2 -1
@@ -1,4 +1,4 @@
1
- import { HTMLExtension, WithColorPalette, WithColorScheme } from '../../types'
1
+ import { WithColorPalette, WithColorScheme } from '../../types'
2
2
  import { TabController } from './TabController'
3
3
 
4
4
  export interface Tab<Key extends string> {
@@ -45,4 +45,4 @@ export interface BaseTabsProps<Key extends string> extends WithColorScheme, With
45
45
  controller?: TabController<Key>,
46
46
  }
47
47
 
48
- export type TabsProps<Key extends string> = HTMLExtension<'div', BaseTabsProps<Key>>
48
+ export type TabsProps<Key extends string> = React.JSX.IntrinsicElements['div'] & BaseTabsProps<Key>
@@ -1,6 +1,6 @@
1
1
  import { listToClass } from '@stack-spot/portal-theme'
2
2
  import { createElement } from 'react'
3
- import { HTMLExtension, TextAppearance, WithColor } from '../types'
3
+ import { HTMLTag, TextAppearance, WithColor } from '../types'
4
4
  import { applyColor, applyTextAppearance } from '../utils/css'
5
5
 
6
6
  type SupportedTags = 'span' | 'small' | 'p' | `h${1|2|3|4|5|6}` | 'pre'
@@ -22,9 +22,21 @@ export interface BaseTextProps<T extends SupportedTags = SupportedTags> extends
22
22
  * @default false
23
23
  */
24
24
  showMargins?: boolean,
25
+ /**
26
+ * Shortcut to `style.fontWeight`.
27
+ */
28
+ weight?: React.CSSProperties['fontWeight'],
29
+ /**
30
+ * Shortcut to `style.textAlign`.
31
+ */
32
+ align?: React.CSSProperties['textAlign'],
33
+ /**
34
+ * Shortcut to `style.whiteSpace = 'nowrap'; style.overflow = 'hidden'; style.textOverflow = 'ellipsis'`.
35
+ */
36
+ nowrapEllipsis?: boolean,
25
37
  }
26
38
 
27
- export type TextProps<T extends SupportedTags> = HTMLExtension<T, BaseTextProps<T>>
39
+ export type TextProps<T extends SupportedTags> = HTMLTag[T] & BaseTextProps<T>
28
40
 
29
41
  const tagToAppearance: Record<SupportedTags, TextAppearance | undefined> = {
30
42
  h1: 'h1',
@@ -60,10 +72,15 @@ const appearanceToTag: Record<TextAppearance, SupportedTags> = {
60
72
  subtitle4: 'p',
61
73
  }
62
74
 
63
- export function Text<T extends SupportedTags>({ tag, appearance, color, showMargins, style, className, children, ...props }: TextProps<T>) {
75
+ export function Text<T extends SupportedTags>(
76
+ { tag, appearance, color, showMargins, weight, align, nowrapEllipsis, style, className, children, ...props }: TextProps<T>,
77
+ ) {
64
78
  const renderedTag = tag || appearanceToTag[appearance || 'body2']
65
79
  const renderedAppearance = appearance || (tag ? tagToAppearance[tag] : undefined)
66
- if (!appearance && !showMargins) style = { ...style, margin: 0 }
80
+ if (!appearance && !showMargins) style = { margin: 0, ...style }
81
+ if (weight) style = { fontWeight: weight, ...style }
82
+ if (align) style = { textAlign: align, ...style }
83
+ if (nowrapEllipsis) style = { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis', ...style }
67
84
  return createElement(
68
85
  renderedTag,
69
86
  {
@@ -1,4 +1,4 @@
1
- import { HTMLExtension, WithColorScheme } from '../types'
1
+ import { ControlledTextarea, WithColorScheme } from '../types'
2
2
  import { CitricComponent } from './CitricComponent'
3
3
 
4
4
  export interface BaseTextareaProps extends WithColorScheme {
@@ -6,7 +6,7 @@ export interface BaseTextareaProps extends WithColorScheme {
6
6
  onChange?: (value: string) => void,
7
7
  }
8
8
 
9
- export type TextareaProps = HTMLExtension<'textarea', BaseTextareaProps>
9
+ export type TextareaProps = ControlledTextarea & BaseTextareaProps
10
10
 
11
11
  export const Textarea = ({ value, onChange, ...props }: TextareaProps) =>
12
12
  <CitricComponent tag="textarea" component="textarea" value={value} onChange={e => onChange?.(e.target.value)} {...props} />
@@ -1,6 +1,6 @@
1
1
  import { listToClass } from '@stack-spot/portal-theme'
2
2
  import { useRef } from 'react'
3
- import { HTMLExtension, WithColorPalette, WithColorScheme } from '../types'
3
+ import { WithColorPalette, WithColorScheme } from '../types'
4
4
  import { Overlay } from './Overlay'
5
5
  import { BaseOverlayProps } from './Overlay/types'
6
6
 
@@ -32,7 +32,7 @@ export interface BaseTooltipProps extends
32
32
  disabled?: boolean,
33
33
  }
34
34
 
35
- export type TooltipProps = HTMLExtension<'div', BaseTooltipProps>
35
+ export type TooltipProps = React.JSX.IntrinsicElements['div'] & BaseTooltipProps
36
36
 
37
37
  export const Tooltip = (
38
38
  { tooltipId, children, showArrow = true, compact = true, attributes, colorScheme, colorPalette, disabled, ...props }: TooltipProps,
@@ -1,6 +1,6 @@
1
1
  import { listToClass } from '@stack-spot/portal-theme'
2
2
  import { createElement } from 'react'
3
- import { HTMLExtension, HTMLTag, WithStyleShortcuts } from '../types'
3
+ import { HTMLTag, WithStyleShortcuts } from '../types'
4
4
  import { applyStyles } from '../utils/css'
5
5
 
6
6
  export const layout = {
@@ -36,9 +36,9 @@ export interface BaseColumnProps<T extends keyof HTMLTag> extends BaseLayoutProp
36
36
  center?: boolean,
37
37
  }
38
38
 
39
- export type CenterProps<T extends keyof HTMLTag> = HTMLExtension<T, BaseLayoutProps<T>>
40
- export type RowProps<T extends keyof HTMLTag> = HTMLExtension<T, BaseRowProps<T>>
41
- export type ColumnProps<T extends keyof HTMLTag> = HTMLExtension<T, BaseColumnProps<T>>
39
+ export type CenterProps<T extends keyof HTMLTag> = HTMLTag[T] & BaseLayoutProps<T>
40
+ export type RowProps<T extends keyof HTMLTag> = HTMLTag[T] & BaseRowProps<T>
41
+ export type ColumnProps<T extends keyof HTMLTag> = HTMLTag[T] & BaseColumnProps<T>
42
42
 
43
43
  export function Center<T extends keyof HTMLTag = 'div'>({ tag, className, ...props }: CenterProps<T>) {
44
44
  return createElement(tag || 'div', { className: listToClass(['center', className]), ...applyStyles(props) })
package/src/types.ts CHANGED
@@ -51,7 +51,8 @@ export type HTMLTag = {
51
51
  ul: React.HTMLAttributes<HTMLUListElement>,
52
52
  }
53
53
 
54
- export type HTMLExtension<K extends keyof HTMLTag, Props> = Omit<HTMLTag[K], keyof Props> & Props
54
+ export type ControlledInput = Omit<React.JSX.IntrinsicElements['input'], 'value' | 'onChange'>
55
+ export type ControlledTextarea = Omit<React.JSX.IntrinsicElements['textarea'], 'value' | 'onChange'>
55
56
 
56
57
  export interface WithStyleShortcuts {
57
58
  /**