@xjur-ui/react 2.1.1 → 2.2.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 (108) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/steps/index.js +1 -1
  3. package/package.json +7 -4
  4. package/.turbo/turbo-build.log +0 -419
  5. package/eslint.config.js +0 -10
  6. package/postcss.config.js +0 -5
  7. package/prettier.config.js +0 -7
  8. package/src/components/avatar-group.tsx +0 -76
  9. package/src/components/avatar.tsx +0 -54
  10. package/src/components/badge.tsx +0 -40
  11. package/src/components/breadcrumb.tsx +0 -119
  12. package/src/components/chip.tsx +0 -117
  13. package/src/components/collapsible.tsx +0 -35
  14. package/src/components/controls/button.tsx +0 -107
  15. package/src/components/controls/calendar.tsx +0 -124
  16. package/src/components/controls/checkbox.tsx +0 -57
  17. package/src/components/controls/context/field.context.ts +0 -27
  18. package/src/components/controls/date-picker.tsx +0 -199
  19. package/src/components/controls/floating-label.tsx +0 -60
  20. package/src/components/controls/input.tsx +0 -237
  21. package/src/components/controls/otp-input.tsx +0 -45
  22. package/src/components/controls/radio.tsx +0 -74
  23. package/src/components/controls/rich-editor.tsx +0 -372
  24. package/src/components/controls/search-input.tsx +0 -154
  25. package/src/components/controls/search-selector.tsx +0 -98
  26. package/src/components/controls/select.tsx +0 -274
  27. package/src/components/controls/switch.tsx +0 -31
  28. package/src/components/custom/pessoa/index.ts +0 -9
  29. package/src/components/custom/pessoa/pessoa-add-button.tsx +0 -35
  30. package/src/components/custom/pessoa/pessoa-body.tsx +0 -22
  31. package/src/components/custom/pessoa/pessoa-close-button.tsx +0 -13
  32. package/src/components/custom/pessoa/pessoa-content.tsx +0 -25
  33. package/src/components/custom/pessoa/pessoa-footer.tsx +0 -15
  34. package/src/components/custom/pessoa/pessoa-header.tsx +0 -35
  35. package/src/components/custom/pessoa/pessoa-trigger.tsx +0 -25
  36. package/src/components/custom/pessoa/pessoa.context.tsx +0 -73
  37. package/src/components/custom/pessoa/pessoa.tsx +0 -35
  38. package/src/components/dialog.tsx +0 -242
  39. package/src/components/divider.tsx +0 -24
  40. package/src/components/drag-and-drop/drag-handle.tsx +0 -46
  41. package/src/components/drag-and-drop/drag-list-item.tsx +0 -91
  42. package/src/components/drag-and-drop/drag-list.tsx +0 -47
  43. package/src/components/drag-and-drop/drag-root.tsx +0 -30
  44. package/src/components/drag-and-drop/index.ts +0 -39
  45. package/src/components/drag-and-drop/types/drag-item.ts +0 -7
  46. package/src/components/dropdown-menu.tsx +0 -101
  47. package/src/components/full-calendar/calendar-add-event.tsx +0 -15
  48. package/src/components/full-calendar/calendar-body.tsx +0 -12
  49. package/src/components/full-calendar/calendar-cell.tsx +0 -120
  50. package/src/components/full-calendar/calendar-day-view.tsx +0 -76
  51. package/src/components/full-calendar/calendar-event.tsx +0 -178
  52. package/src/components/full-calendar/calendar-header.tsx +0 -14
  53. package/src/components/full-calendar/calendar-month-view.tsx +0 -69
  54. package/src/components/full-calendar/calendar-more-events-dropdown.tsx +0 -39
  55. package/src/components/full-calendar/calendar-navigator.tsx +0 -86
  56. package/src/components/full-calendar/calendar-root.tsx +0 -165
  57. package/src/components/full-calendar/calendar-today-button.tsx +0 -21
  58. package/src/components/full-calendar/calendar-toggle-view.tsx +0 -61
  59. package/src/components/full-calendar/calendar-view-renderer.tsx +0 -19
  60. package/src/components/full-calendar/calendar-week-day.tsx +0 -49
  61. package/src/components/full-calendar/calendar-week-view.tsx +0 -88
  62. package/src/components/full-calendar/helpers/calendar.ts +0 -158
  63. package/src/components/full-calendar/index.ts +0 -16
  64. package/src/components/full-calendar/types/calendar-cell.ts +0 -4
  65. package/src/components/full-calendar/types/calendar-event.ts +0 -7
  66. package/src/components/full-calendar/types/calendar-view.ts +0 -1
  67. package/src/components/full-calendar/types/calendar-week-hour.ts +0 -4
  68. package/src/components/horizontal-scroll.tsx +0 -159
  69. package/src/components/icon.tsx +0 -29
  70. package/src/components/list.tsx +0 -111
  71. package/src/components/logo.tsx +0 -44
  72. package/src/components/selection-bar.tsx +0 -273
  73. package/src/components/sheet.tsx +0 -150
  74. package/src/components/skeleton.tsx +0 -12
  75. package/src/components/status.tsx +0 -43
  76. package/src/components/steps/index.ts +0 -6
  77. package/src/components/steps/step.tsx +0 -23
  78. package/src/components/steps/steps-action.tsx +0 -65
  79. package/src/components/steps/steps-content.tsx +0 -12
  80. package/src/components/steps/steps-context.tsx +0 -121
  81. package/src/components/steps/steps-navigation.tsx +0 -80
  82. package/src/components/steps/steps-root.tsx +0 -9
  83. package/src/components/table/index.ts +0 -8
  84. package/src/components/table/table-body.tsx +0 -17
  85. package/src/components/table/table-cell.tsx +0 -14
  86. package/src/components/table/table-footer.tsx +0 -17
  87. package/src/components/table/table-head.tsx +0 -31
  88. package/src/components/table/table-header.tsx +0 -17
  89. package/src/components/table/table-row.tsx +0 -21
  90. package/src/components/table/table-sort.tsx +0 -34
  91. package/src/components/table/table.tsx +0 -16
  92. package/src/components/tabs.tsx +0 -72
  93. package/src/components/tag.tsx +0 -99
  94. package/src/components/tooltip.tsx +0 -63
  95. package/src/components/typography.tsx +0 -85
  96. package/src/components/upload.tsx +0 -647
  97. package/src/hooks/index.ts +0 -1
  98. package/src/hooks/use-os.ts +0 -32
  99. package/src/index.css +0 -5
  100. package/src/resources/icons.ts +0 -154
  101. package/src/resources/input-mask.ts +0 -91
  102. package/src/resources/logo/horizontal.tsx +0 -70
  103. package/src/resources/logo/icon.tsx +0 -54
  104. package/src/resources/logo/index.tsx +0 -33
  105. package/src/resources/logo/vertical.tsx +0 -70
  106. package/src/types.d.ts +0 -4
  107. package/tsconfig.json +0 -4
  108. package/tsup.config.ts +0 -30
@@ -1,150 +0,0 @@
1
- import * as React from 'react'
2
- import * as SheetPrimitive from '@radix-ui/react-dialog'
3
- import { cx, tv } from '@xjur-ui/util'
4
- import { Button } from './controls/button'
5
- import { Icon } from './icon'
6
-
7
- export function SheetRoot({
8
- ...props
9
- }: React.ComponentProps<typeof SheetPrimitive.Root>) {
10
- return <SheetPrimitive.Root data-slot="sheet" {...props} />
11
- }
12
-
13
- export function SheetTrigger({
14
- ...props
15
- }: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
16
- return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />
17
- }
18
-
19
- export function SheetClose({
20
- children = (
21
- <Button appearance="ghost" size="icon_md" variant="tertiary">
22
- <Icon className="text-icon-neutral-3" name="close" />
23
- </Button>
24
- ),
25
- ...props
26
- }: React.ComponentProps<typeof SheetPrimitive.Close>) {
27
- return (
28
- <SheetPrimitive.Close data-slot="sheet-close" {...props}>
29
- {children}
30
- </SheetPrimitive.Close>
31
- )
32
- }
33
-
34
- export function SheetPortal({
35
- ...props
36
- }: React.ComponentProps<typeof SheetPrimitive.Portal>) {
37
- return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />
38
- }
39
-
40
- export function SheetOverlay({
41
- className,
42
- ...props
43
- }: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
44
- return (
45
- <SheetPrimitive.Overlay
46
- className={cx(
47
- 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50',
48
- className
49
- )}
50
- data-slot="sheet-overlay"
51
- {...props}
52
- />
53
- )
54
- }
55
-
56
- export function SheetContent({
57
- className,
58
- children,
59
- side = 'right',
60
- overlay = false,
61
- ...props
62
- }: React.ComponentProps<typeof SheetPrimitive.Content> & {
63
- side?: 'top' | 'right' | 'bottom' | 'left'
64
- overlay?: boolean
65
- }) {
66
- const content = tv({
67
- base: [
68
- 'border-border-layer-2 bg-layer-2-idle shadow-elevation-2 fixed z-50 flex flex-col gap-medium',
69
- 'data-[state=open]:animate-in data-[state=closed]:animate-out transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500'
70
- ],
71
- variants: {
72
- side: {
73
- right:
74
- 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full border-l sm:max-w-sm',
75
- left: 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full border-r sm:max-w-sm',
76
- top: 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',
77
- bottom:
78
- 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t'
79
- }
80
- },
81
- defaultVariants: {
82
- side: 'right'
83
- }
84
- })
85
-
86
- return (
87
- <SheetPortal>
88
- {overlay && <SheetOverlay />}
89
- <SheetPrimitive.Content
90
- className={content({ side, className })}
91
- data-slot="sheet-content"
92
- {...props}
93
- >
94
- {children}
95
- </SheetPrimitive.Content>
96
- </SheetPortal>
97
- )
98
- }
99
-
100
- export function SheetBody({
101
- className,
102
- ...props
103
- }: React.ComponentProps<'div'>) {
104
- return <div className={cx('px-large-2x h-full', className)} {...props} />
105
- }
106
-
107
- export function SheetHeader({
108
- className,
109
- ...props
110
- }: React.ComponentProps<'div'>) {
111
- return (
112
- <div
113
- className={cx(
114
- 'py-large px-large-2x border-b-border-layer-2 border-b',
115
- className
116
- )}
117
- data-slot="sheet-header"
118
- {...props}
119
- />
120
- )
121
- }
122
-
123
- export function SheetFooter({
124
- className,
125
- ...props
126
- }: React.ComponentProps<'div'>) {
127
- return (
128
- <div
129
- className={cx(
130
- 'py-large px-large-2x border-t-border-layer-2 mt-auto border-t',
131
- className
132
- )}
133
- data-slot="sheet-footer"
134
- {...props}
135
- />
136
- )
137
- }
138
-
139
- export function SheetTitle({
140
- className,
141
- ...props
142
- }: React.ComponentProps<typeof SheetPrimitive.Title>) {
143
- return (
144
- <SheetPrimitive.Title
145
- className={cx('text-size-title-lg font-normal', className)}
146
- data-slot="sheet-title"
147
- {...props}
148
- />
149
- )
150
- }
@@ -1,12 +0,0 @@
1
- import type { ComponentProps } from 'react'
2
- import { cx } from '@xjur-ui/util'
3
-
4
- export function Skeleton({ className, ...props }: ComponentProps<'div'>) {
5
- return (
6
- <div
7
- className={cx('bg-layer-skeleton animate-pulse', className)}
8
- data-slot="skeleton"
9
- {...props}
10
- />
11
- )
12
- }
@@ -1,43 +0,0 @@
1
- import type { ComponentProps } from 'react'
2
- import { cva, cx, type ClassVariantProps } from '@xjur-ui/util'
3
- import { Typography } from './typography'
4
-
5
- export const statusVariants = cva(
6
- [
7
- 'inline-flex items-center justify-center px-small py-small-1x rounded-small-1x text-label-sm font-medium text-neutral-label h-large-2x'
8
- ],
9
- {
10
- variants: {
11
- variant: {
12
- success: 'bg-success-idle',
13
- warning: 'bg-warning-idle',
14
- danger: 'bg-danger-idle',
15
- neutral: 'bg-alt-3'
16
- }
17
- },
18
- defaultVariants: {
19
- variant: 'neutral'
20
- }
21
- }
22
- )
23
-
24
- export interface StatusProps
25
- extends ComponentProps<'div'>,
26
- ClassVariantProps<typeof statusVariants> {
27
- text?: string
28
- }
29
-
30
- export function Status({
31
- text = 'Status',
32
- variant = 'neutral',
33
- className,
34
- ...props
35
- }: StatusProps) {
36
- return (
37
- <div className={cx(statusVariants({ variant }), className)} {...props}>
38
- <Typography size="sm" variant="label" weight="medium">
39
- {text}
40
- </Typography>
41
- </div>
42
- )
43
- }
@@ -1,6 +0,0 @@
1
- export * from './steps-context'
2
- export * from './steps-root'
3
- export * from './steps-navigation'
4
- export * from './steps-content'
5
- export * from './step'
6
- export * from './steps-action'
@@ -1,23 +0,0 @@
1
- import type { ComponentProps } from 'react'
2
- import { twMerge } from '@xjur-ui/util'
3
- import { useSteps } from './steps-context'
4
-
5
- export function Step({
6
- stepIndex,
7
- className,
8
- ...props
9
- }: ComponentProps<'div'> & { stepIndex: number }) {
10
- const { currentStepIndex } = useSteps()
11
-
12
- if (currentStepIndex !== stepIndex) {
13
- return null
14
- }
15
-
16
- return (
17
- <div
18
- className={twMerge('h-full w-full', className)}
19
- data-slot="step-item"
20
- {...props}
21
- />
22
- )
23
- }
@@ -1,65 +0,0 @@
1
- import { useCallback, type ComponentProps } from 'react'
2
- import { Button } from '../controls/button'
3
- import { useSteps } from './steps-context'
4
-
5
- export function NextStep({
6
- children = 'Próximo',
7
- type,
8
- onClick,
9
- ...props
10
- }: Omit<ComponentProps<typeof Button>, 'children'> & {
11
- children?: React.ReactNode | ((stepIndex: number) => React.ReactNode)
12
- }) {
13
- const { handleNextStep, currentStepIndex, isLastStep } = useSteps()
14
-
15
- const handleClick = useCallback(
16
- (event: React.MouseEvent<HTMLButtonElement>) => {
17
- if (onClick) {
18
- onClick(event)
19
- } else {
20
- event.preventDefault()
21
- handleNextStep()
22
- }
23
- },
24
- [onClick, handleNextStep]
25
- )
26
-
27
- const buttonType = type || (isLastStep ? 'submit' : 'button')
28
-
29
- return (
30
- <Button
31
- type={buttonType}
32
- {...(buttonType === 'button' ? { onClick: handleClick } : {})}
33
- {...props}
34
- >
35
- {typeof children === 'function' ? children(currentStepIndex) : children}
36
- </Button>
37
- )
38
- }
39
-
40
- export function PreviousStep({
41
- appearance = 'ghost',
42
- children = 'Anterior',
43
- onClick,
44
- ...props
45
- }: ComponentProps<typeof Button>) {
46
- const { handlePreviousStep } = useSteps()
47
-
48
- const handleClick = useCallback(
49
- (event: React.MouseEvent<HTMLButtonElement>) => {
50
- if (onClick) {
51
- onClick(event)
52
- } else {
53
- event.preventDefault()
54
- handlePreviousStep()
55
- }
56
- },
57
- [onClick, handlePreviousStep]
58
- )
59
-
60
- return (
61
- <Button appearance={appearance} onClick={handleClick} {...props}>
62
- {children}
63
- </Button>
64
- )
65
- }
@@ -1,12 +0,0 @@
1
- import { twMerge } from '@xjur-ui/util'
2
- import type { ComponentProps } from 'react'
3
-
4
- export function Steps({ className, ...props }: ComponentProps<'div'>) {
5
- return (
6
- <div
7
- className={twMerge('h-full w-full', className)}
8
- data-slot="steps-content"
9
- {...props}
10
- />
11
- )
12
- }
@@ -1,121 +0,0 @@
1
- import { twMerge } from '@xjur-ui/util'
2
- import {
3
- createContext,
4
- useCallback,
5
- useContext,
6
- useMemo,
7
- useState,
8
- type ComponentProps
9
- } from 'react'
10
-
11
- export interface StepsContextValue {
12
- steps: string[]
13
- currentStepIndex: number
14
- isLastStep: boolean
15
-
16
- handleStepChange: (index: number) => void
17
- handleNextStep: () => void
18
- handlePreviousStep: () => void
19
- }
20
-
21
- export const StepsContext = createContext<StepsContextValue>({
22
- steps: [],
23
- currentStepIndex: 0,
24
- isLastStep: false,
25
- handleStepChange: () => {},
26
- handleNextStep: () => {},
27
- handlePreviousStep: () => {}
28
- })
29
-
30
- export function StepsProvider({
31
- steps,
32
- currentStepIndex: currentStepIndexProp = 0,
33
- onStepChange,
34
- children,
35
- className,
36
- ...props
37
- }: {
38
- steps: string[]
39
- currentStepIndex?: number
40
- onStepChange?: (index: number) => void
41
- children: React.ReactNode | ((context: StepsContextValue) => React.ReactNode)
42
- } & Omit<ComponentProps<'div'>, 'children'>) {
43
- const [currentStepIndex, setCurrentStepIndex] = useState(currentStepIndexProp)
44
-
45
- const handleStepChange = useCallback(
46
- (index: number) => {
47
- setCurrentStepIndex(index)
48
- onStepChange?.(index)
49
- },
50
- [onStepChange]
51
- )
52
-
53
- const handleNextStep = useCallback(() => {
54
- const isLastStep = currentStepIndex === steps.length - 1
55
-
56
- if (isLastStep) {
57
- return
58
- }
59
-
60
- setCurrentStepIndex(prev => prev + 1)
61
- onStepChange?.(currentStepIndex + 1)
62
- }, [currentStepIndex, onStepChange, steps])
63
-
64
- const handlePreviousStep = useCallback(() => {
65
- if (currentStepIndex === 0) {
66
- return
67
- }
68
-
69
- setCurrentStepIndex(prev => prev - 1)
70
- onStepChange?.(currentStepIndex - 1)
71
- }, [currentStepIndex, onStepChange])
72
-
73
- const isLastStep = useMemo(
74
- () => currentStepIndex === steps.length - 1,
75
- [currentStepIndex, steps]
76
- )
77
-
78
- const providerValue = useMemo(
79
- () => ({
80
- steps,
81
- currentStepIndex,
82
- isLastStep,
83
- setCurrentStepIndex,
84
-
85
- handleStepChange,
86
- handleNextStep,
87
- handlePreviousStep
88
- }),
89
- [
90
- steps,
91
- currentStepIndex,
92
- isLastStep,
93
- setCurrentStepIndex,
94
- handleStepChange,
95
- handleNextStep,
96
- handlePreviousStep
97
- ]
98
- )
99
-
100
- return (
101
- <StepsContext.Provider value={providerValue}>
102
- <div
103
- className={twMerge('h-full w-full', className)}
104
- data-slot="steps-root"
105
- {...props}
106
- >
107
- {typeof children === 'function' ? children(providerValue) : children}
108
- </div>
109
- </StepsContext.Provider>
110
- )
111
- }
112
-
113
- export function useSteps() {
114
- const context = useContext(StepsContext)
115
-
116
- if (!context) {
117
- throw new Error('useSteps must be used within a StepsContext.Provider')
118
- }
119
-
120
- return context
121
- }
@@ -1,80 +0,0 @@
1
- import { Fragment, useCallback, type ComponentProps } from 'react'
2
- import { twMerge } from '@xjur-ui/util'
3
- import { useSteps } from './steps-context'
4
-
5
- export function StepsNavigation({
6
- className,
7
- ...props
8
- }: ComponentProps<'div'>) {
9
- const { steps, currentStepIndex } = useSteps()
10
-
11
- const isLastStep = useCallback(
12
- (stepIndex: number) => stepIndex === steps.length - 1,
13
- [steps]
14
- )
15
-
16
- const stepState = useCallback(
17
- (stepIndex: number) => {
18
- const isActive = stepIndex === currentStepIndex
19
- const isPassed = stepIndex < currentStepIndex
20
-
21
- if (isPassed) {
22
- return 'disabled'
23
- }
24
-
25
- return isActive ? 'active' : 'normal'
26
- },
27
- [currentStepIndex]
28
- )
29
-
30
- return (
31
- <div
32
- className={twMerge('gap-small flex items-center', className)}
33
- data-slot="steps-navigation"
34
- {...props}
35
- >
36
- {steps.map((step, stepIndex) => {
37
- const state = stepState(stepIndex)
38
-
39
- return (
40
- <Fragment key={`${step}-${stepIndex}`}>
41
- <div
42
- className="group gap-small flex items-center"
43
- data-disabled={state === 'disabled'}
44
- data-slot="step-trigger"
45
- data-state={state}
46
- {...props}
47
- >
48
- <div
49
- className={twMerge(
50
- 'size-large-4x rounded-circle border-border-layer-2 text-size-label-sm bg-layer-2-idle flex items-center justify-center border',
51
- 'group-data-[state=active]:border-primary-active group-data-[state=active]:bg-primary-alt-active group-data-[state=active]:text-primary-label-active',
52
- 'group-data-[state=disabled]:bg-layer-1-idle group-data-[state=disabled]:border-border-layer-2 group-data-[state=disabled]:text-neutral-light'
53
- )}
54
- data-slot="step-number"
55
- >
56
- {stepIndex + 1}
57
- </div>
58
-
59
- <span
60
- className="text-size-label-sm group-data-[state=active]:text-primary-label-active group-data-[state=disabled]:text-neutral-light font-medium"
61
- data-slot="step-title"
62
- >
63
- {step}
64
- </span>
65
- </div>
66
-
67
- {!isLastStep(stepIndex) && (
68
- <div
69
- className={twMerge(
70
- 'bg-border-layer-2 mx-2 h-px flex-1',
71
- className
72
- )}
73
- />
74
- )}
75
- </Fragment>
76
- )
77
- })}
78
- </div>
79
- )
80
- }
@@ -1,9 +0,0 @@
1
- import type { ComponentProps } from 'react'
2
- import { StepsProvider } from './steps-context'
3
-
4
- export function StepsRoot({
5
- className,
6
- ...props
7
- }: ComponentProps<typeof StepsProvider>) {
8
- return <StepsProvider className={className} {...props} />
9
- }
@@ -1,8 +0,0 @@
1
- export * from './table'
2
- export * from './table-body'
3
- export * from './table-cell'
4
- export * from './table-footer'
5
- export * from './table-header'
6
- export * from './table-head'
7
- export * from './table-row'
8
- export * from './table-sort'
@@ -1,17 +0,0 @@
1
- import { cx } from '@xjur-ui/util'
2
-
3
- export function TableBody({
4
- className,
5
- ...props
6
- }: React.ComponentProps<'tbody'>) {
7
- return (
8
- <tbody
9
- className={cx(
10
- '[&_tr]:border-border-layer-2 [&_tr]:border-b [&_tr:last-child]:border-0',
11
- className
12
- )}
13
- data-slot="table-body"
14
- {...props}
15
- />
16
- )
17
- }
@@ -1,14 +0,0 @@
1
- import { cx } from '@xjur-ui/util'
2
-
3
- export function TableCell({ className, ...props }: React.ComponentProps<'td'>) {
4
- return (
5
- <td
6
- className={cx(
7
- 'px-small py-none h-large-8x text-left align-middle whitespace-nowrap',
8
- className
9
- )}
10
- data-slot="table-cell"
11
- {...props}
12
- />
13
- )
14
- }
@@ -1,17 +0,0 @@
1
- import { cx } from '@xjur-ui/util'
2
-
3
- export function TableFooter({
4
- className,
5
- ...props
6
- }: React.ComponentProps<'tfoot'>) {
7
- return (
8
- <tfoot
9
- className={cx(
10
- 'border-border-layer-2 border-t font-medium [&>tr]:last:border-b-0',
11
- className
12
- )}
13
- data-slot="table-footer"
14
- {...props}
15
- />
16
- )
17
- }
@@ -1,31 +0,0 @@
1
- import { cx } from '@xjur-ui/util'
2
-
3
- export function TableHead({ className, ...props }: React.ComponentProps<'th'>) {
4
- return (
5
- <th
6
- className={cx(
7
- 'group/th text-neutral-placeholder text-size-label-sm h-large-4x py-small-1x px-small text-left align-middle font-medium whitespace-nowrap',
8
- 'pr-large-2x relative',
9
- 'animate-in fade-in duration-200 ease-in',
10
- className
11
- )}
12
- data-slot="table-head"
13
- {...props}
14
- />
15
- )
16
- }
17
-
18
- export function TableHeadContent({
19
- className,
20
- ...props
21
- }: React.ComponentProps<'div'>) {
22
- return (
23
- <div
24
- className={cx(
25
- 'gap-small pr-large-3x relative flex w-fit items-center',
26
- className
27
- )}
28
- {...props}
29
- />
30
- )
31
- }
@@ -1,17 +0,0 @@
1
- import { cx } from '@xjur-ui/util'
2
-
3
- export function TableHeader({
4
- className,
5
- ...props
6
- }: React.ComponentProps<'thead'>) {
7
- return (
8
- <thead
9
- className={cx(
10
- 'group/table-header [&_tr]:border-border-layer-2 hover:bg-layer-2-hover [&_tr]:border-b',
11
- className
12
- )}
13
- data-slot="table-header"
14
- {...props}
15
- />
16
- )
17
- }
@@ -1,21 +0,0 @@
1
- import { cx } from '@xjur-ui/util'
2
-
3
- export function TableRow({
4
- className,
5
- isSelected = false,
6
- ...props
7
- }: React.ComponentProps<'tr'> & { isSelected?: boolean }) {
8
- return (
9
- <tr
10
- className={cx(
11
- 'bg-layer-2-idle hover:bg-layer-2-hover ease border-b transition-colors duration-100',
12
- 'active:bg-layer-2-pressed',
13
- 'data-[selected=true]:bg-primary-alt-active',
14
- className
15
- )}
16
- data-selected={isSelected}
17
- data-slot="table-row"
18
- {...props}
19
- />
20
- )
21
- }