@oztix/roadie-components 0.2.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/Button.d.ts +31 -111
  2. package/dist/Button.js +1 -1
  3. package/dist/Code.d.ts +15 -5
  4. package/dist/Code.js +1 -1
  5. package/dist/Heading.d.ts +23 -6
  6. package/dist/Heading.js +1 -1
  7. package/dist/Text.d.ts +24 -37
  8. package/dist/Text.js +1 -1
  9. package/dist/View.d.ts +7 -70
  10. package/dist/View.js +1 -1
  11. package/dist/_chunks/chunk-6FIUWNC7.js +9 -0
  12. package/dist/_chunks/chunk-6FIUWNC7.js.map +1 -0
  13. package/dist/_chunks/chunk-GSK3G4DW.js +9 -0
  14. package/dist/_chunks/chunk-GSK3G4DW.js.map +1 -0
  15. package/dist/_chunks/chunk-P5L5LN6E.js +9 -0
  16. package/dist/_chunks/chunk-P5L5LN6E.js.map +1 -0
  17. package/dist/_chunks/chunk-RJEJUZ3O.js +7 -0
  18. package/dist/_chunks/chunk-RJEJUZ3O.js.map +1 -0
  19. package/dist/_chunks/chunk-VDMZIGT2.js +10 -0
  20. package/dist/_chunks/chunk-VDMZIGT2.js.map +1 -0
  21. package/dist/index.d.ts +5 -6
  22. package/dist/index.js +5 -5
  23. package/package.json +10 -5
  24. package/src/components/Button/Button.test.tsx +156 -0
  25. package/src/components/Button/index.tsx +48 -0
  26. package/src/components/Code/Code.test.tsx +85 -0
  27. package/src/components/Code/index.tsx +37 -0
  28. package/src/components/Heading/Heading.test.tsx +128 -0
  29. package/src/components/Heading/index.tsx +52 -0
  30. package/src/components/Text/Text.test.tsx +121 -0
  31. package/src/components/Text/index.tsx +54 -0
  32. package/src/components/View/View.test.tsx +161 -0
  33. package/src/components/View/index.tsx +12 -0
  34. package/src/components/index.ts +14 -0
  35. package/src/index.test.tsx +37 -0
  36. package/src/index.tsx +5 -0
  37. package/dist/_chunks/chunk-5EABNA3A.js +0 -8
  38. package/dist/_chunks/chunk-5EABNA3A.js.map +0 -1
  39. package/dist/_chunks/chunk-72747LP3.js +0 -8
  40. package/dist/_chunks/chunk-72747LP3.js.map +0 -1
  41. package/dist/_chunks/chunk-76TTGNAE.js +0 -8
  42. package/dist/_chunks/chunk-76TTGNAE.js.map +0 -1
  43. package/dist/_chunks/chunk-CNVMCX74.js +0 -8
  44. package/dist/_chunks/chunk-CNVMCX74.js.map +0 -1
  45. package/dist/_chunks/chunk-JDVDZGUN.js +0 -9
  46. package/dist/_chunks/chunk-JDVDZGUN.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ import { render } from '@testing-library/react'
2
+ import { describe, expect, it } from 'vitest'
3
+
4
+ import { View } from './index'
5
+
6
+ describe('View', () => {
7
+ it('renders with default props', () => {
8
+ const { getByTestId } = render(<View data-testid='view'>Content</View>)
9
+ const view = getByTestId('view')
10
+ expect(view).toBeInTheDocument()
11
+ expect(view.tagName.toLowerCase()).toBe('div')
12
+ expect(view).toHaveClass(
13
+ 'd_flex',
14
+ 'pos_relative',
15
+ 'flex-d_column',
16
+ 'flex-wrap_nowrap',
17
+ 'ai_stretch',
18
+ 'ac_flex-start',
19
+ 'jc_flex-start',
20
+ 'min-h_0',
21
+ 'min-w_0'
22
+ )
23
+ })
24
+
25
+ it('renders with different HTML elements', () => {
26
+ const elements: Array<'section' | 'article' | 'aside' | 'main'> = [
27
+ 'section',
28
+ 'article',
29
+ 'aside',
30
+ 'main'
31
+ ]
32
+
33
+ elements.forEach((element) => {
34
+ const { rerender, getByTestId } = render(
35
+ <View as={element} data-testid='view'>
36
+ {element} content
37
+ </View>
38
+ )
39
+ const view = getByTestId('view')
40
+ expect(view.tagName.toLowerCase()).toBe(element)
41
+ expect(view).toHaveClass(
42
+ 'd_flex',
43
+ 'pos_relative',
44
+ 'flex-d_column',
45
+ 'flex-wrap_nowrap',
46
+ 'ai_stretch',
47
+ 'ac_flex-start',
48
+ 'jc_flex-start',
49
+ 'min-h_0',
50
+ 'min-w_0'
51
+ )
52
+ rerender(<></>)
53
+ })
54
+ })
55
+
56
+ it('applies layout properties', () => {
57
+ const { getByTestId } = render(
58
+ <View
59
+ data-testid='view'
60
+ display='inline-flex'
61
+ position='absolute'
62
+ flexDirection='row'
63
+ flexWrap='wrap'
64
+ alignItems='center'
65
+ alignContent='center'
66
+ justifyContent='center'
67
+ >
68
+ Styled View
69
+ </View>
70
+ )
71
+ const view = getByTestId('view')
72
+ expect(view).toHaveClass(
73
+ 'd_inline-flex',
74
+ 'pos_absolute',
75
+ 'flex-d_row',
76
+ 'flex-wrap_wrap',
77
+ 'ai_center',
78
+ 'ac_center',
79
+ 'jc_center',
80
+ 'min-h_0',
81
+ 'min-w_0'
82
+ )
83
+ })
84
+
85
+ it('applies custom styles and attributes', () => {
86
+ const { getByTestId } = render(
87
+ <View
88
+ data-testid='view'
89
+ backgroundColor='neutral.bg.subtle'
90
+ padding='200'
91
+ title='tooltip'
92
+ aria-label='Accessible view'
93
+ >
94
+ Custom View
95
+ </View>
96
+ )
97
+ const view = getByTestId('view')
98
+ expect(view).toHaveClass('bg-c_neutral.bg.subtle', 'p_200')
99
+ expect(view).toHaveAttribute('title', 'tooltip')
100
+ expect(view).toHaveAttribute('aria-label', 'Accessible view')
101
+ })
102
+
103
+ it('renders nested views', () => {
104
+ const { getByTestId } = render(
105
+ <View data-testid='parent'>
106
+ <View data-testid='child'>Nested Content</View>
107
+ </View>
108
+ )
109
+ const parent = getByTestId('parent')
110
+ const child = getByTestId('child')
111
+ expect(parent).toContainElement(child)
112
+ expect(child).toHaveTextContent('Nested Content')
113
+ expect(parent).toHaveClass(
114
+ 'd_flex',
115
+ 'pos_relative',
116
+ 'flex-d_column',
117
+ 'flex-wrap_nowrap',
118
+ 'ai_stretch',
119
+ 'ac_flex-start',
120
+ 'jc_flex-start',
121
+ 'min-h_0',
122
+ 'min-w_0'
123
+ )
124
+ expect(child).toHaveClass(
125
+ 'd_flex',
126
+ 'pos_relative',
127
+ 'flex-d_column',
128
+ 'flex-wrap_nowrap',
129
+ 'ai_stretch',
130
+ 'ac_flex-start',
131
+ 'jc_flex-start',
132
+ 'min-h_0',
133
+ 'min-w_0'
134
+ )
135
+ })
136
+
137
+ it('combines multiple props', () => {
138
+ const { getByTestId } = render(
139
+ <View
140
+ as='section'
141
+ display='grid'
142
+ gap='200'
143
+ padding='400'
144
+ backgroundColor='neutral.bg.subtle'
145
+ className='custom-class'
146
+ data-testid='view'
147
+ >
148
+ Combined styles
149
+ </View>
150
+ )
151
+ const view = getByTestId('view')
152
+ expect(view.tagName.toLowerCase()).toBe('section')
153
+ expect(view).toHaveClass(
154
+ 'd_grid',
155
+ 'gap_200',
156
+ 'p_400',
157
+ 'bg-c_neutral.bg.subtle',
158
+ 'custom-class'
159
+ )
160
+ })
161
+ })
@@ -0,0 +1,12 @@
1
+ import { View as ViewPattern } from '@oztix/roadie-core/jsx'
2
+
3
+ /**
4
+ * A foundational layout component that provides a flexible container with sensible defaults.
5
+ * Based on the Panda CSS Box pattern but with better defaults for application UI layout.
6
+ *
7
+ */
8
+ export const View = ViewPattern
9
+
10
+ export type ViewProps = React.ComponentProps<typeof ViewPattern>
11
+
12
+ View.displayName = 'View'
@@ -0,0 +1,14 @@
1
+ export { Button } from './Button'
2
+ export type { ButtonProps } from './Button'
3
+
4
+ export { Code } from './Code'
5
+ export type { CodeProps } from './Code'
6
+
7
+ export { Heading } from './Heading'
8
+ export type { HeadingProps } from './Heading'
9
+
10
+ export { Text } from './Text'
11
+ export type { TextProps } from './Text'
12
+
13
+ export { View } from './View'
14
+ export type { ViewProps } from './View'
@@ -0,0 +1,37 @@
1
+ import '@testing-library/jest-dom/vitest'
2
+ import { render } from '@testing-library/react'
3
+ import { describe, expect, it } from 'vitest'
4
+
5
+ import { Button, Code, Heading, Text, View } from './index'
6
+
7
+ describe('Component exports', () => {
8
+ it('exports Button component', () => {
9
+ expect(Button).toBeDefined()
10
+ const { container } = render(<Button>Test</Button>)
11
+ expect(container).toBeInTheDocument()
12
+ })
13
+
14
+ it('exports Code component', () => {
15
+ expect(Code).toBeDefined()
16
+ const { container } = render(<Code>Test</Code>)
17
+ expect(container).toBeInTheDocument()
18
+ })
19
+
20
+ it('exports Heading component', () => {
21
+ expect(Heading).toBeDefined()
22
+ const { container } = render(<Heading>Test</Heading>)
23
+ expect(container).toBeInTheDocument()
24
+ })
25
+
26
+ it('exports Text component', () => {
27
+ expect(Text).toBeDefined()
28
+ const { container } = render(<Text>Test</Text>)
29
+ expect(container).toBeInTheDocument()
30
+ })
31
+
32
+ it('exports View component', () => {
33
+ expect(View).toBeDefined()
34
+ const { container } = render(<View>Test</View>)
35
+ expect(container).toBeInTheDocument()
36
+ })
37
+ })
package/src/index.tsx ADDED
@@ -0,0 +1,5 @@
1
+ export * from './components/Button'
2
+ export * from './components/Code'
3
+ export * from './components/Heading'
4
+ export * from './components/Text'
5
+ export * from './components/View'
@@ -1,8 +0,0 @@
1
- import 'react';
2
- import { styled } from '@oztix/roadie-core/jsx';
3
-
4
- var t=styled("h2",{base:{textStyle:"display.ui",color:"accent.fg.strong"}});t.displayName="Heading";
5
-
6
- export { t as a };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-5EABNA3A.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/Heading/index.tsx"],"names":["styled","Heading"],"mappings":"AAAA,MAAkB,QAGlB,OAAS,UAAAA,MAAc,yBAwBhB,IAAMC,EAAUD,EAAO,KAAM,CAClC,KAAM,CACJ,UAAW,aACX,MAAO,kBACT,CACF,CAAC,EAEDC,EAAQ,YAAc","sourcesContent":["import React from 'react'\n\nimport type { HTMLStyledProps } from '@oztix/roadie-core/jsx'\nimport { styled } from '@oztix/roadie-core/jsx'\nimport type { JsxStyleProps } from '@oztix/roadie-core/types'\n\ntype HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\n/**\n * A heading component that uses display styles for titles and section headers\n */\nexport interface HeadingProps extends HTMLStyledProps<'h2'>, JsxStyleProps {\n /**\n * The heading level to render\n * @default 'h2'\n */\n as?: HeadingLevel\n /**\n * The text style to use for the heading\n * @default 'display.ui'\n */\n textStyle?: Extract<\n JsxStyleProps['textStyle'],\n 'display' | `display${string}`\n >\n}\n\nexport const Heading = styled('h2', {\n base: {\n textStyle: 'display.ui',\n color: 'accent.fg.strong'\n }\n}) as React.ForwardRefExoticComponent<HeadingProps>\n\nHeading.displayName = 'Heading'\n"]}
@@ -1,8 +0,0 @@
1
- import 'react';
2
- import { styled } from '@oztix/roadie-core/jsx';
3
-
4
- var t=styled("div",{base:{display:"flex",position:"relative",flexDirection:"column",flexWrap:"nowrap",alignItems:"stretch",alignContent:"flex-start",justifyContent:"flex-start",minHeight:0,minWidth:0}}),o=t;o.displayName="View";
5
-
6
- export { o as a };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-72747LP3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/View/index.tsx"],"names":["styled","StyledView","View"],"mappings":"AACA,MAAkB,QAElB,OAAS,UAAAA,MAAc,yBAiFvB,IAAMC,EAAaD,EAAO,MAAO,CAC/B,KAAM,CACJ,QAAS,OACT,SAAU,WACV,cAAe,SACf,SAAU,SACV,WAAY,UACZ,aAAc,aACd,eAAgB,aAChB,UAAW,EACX,SAAU,CACZ,CACF,CAAC,EAEYE,EAAOD,EAEpBC,EAAK,YAAc","sourcesContent":["import type { ElementType } from 'react'\nimport React from 'react'\n\nimport { styled } from '@oztix/roadie-core/jsx'\nimport type { JsxStyleProps } from '@oztix/roadie-core/types'\n\ntype AsProp<C extends ElementType> = {\n as?: C\n}\n\ntype PropsToOmit<C extends ElementType, P> = keyof (AsProp<C> & P)\n\n/**\n * A foundational layout component that provides a flexible container with sensible defaults.\n */\nexport interface ViewProps<C extends ElementType = 'div'> {\n /**\n * The HTML element or React component to render the View as\n * @default 'div'\n */\n as?: C\n /**\n * The display property of the View\n * @default 'flex'\n */\n display?: JsxStyleProps['display']\n /**\n * The position property of the View\n * @default 'relative'\n */\n position?: JsxStyleProps['position']\n /**\n * The flex direction property of the View\n * @default 'column'\n */\n flexDirection?: JsxStyleProps['flexDirection']\n /**\n * The flex wrap property of the View\n * @default 'nowrap'\n */\n flexWrap?: JsxStyleProps['flexWrap']\n /**\n * The align items property of the View\n * @default 'stretch'\n */\n alignItems?: JsxStyleProps['alignItems']\n /**\n * The align self property of the View\n * @default 'flex-start'\n */\n alignSelf?: JsxStyleProps['alignSelf']\n /**\n * The align content property of the View\n * @default 'flex-start'\n */\n alignContent?: JsxStyleProps['alignContent']\n /**\n * The justify content property of the View\n * @default 'flex-start'\n */\n justifyContent?: JsxStyleProps['justifyContent']\n /**\n * The min height property of the View\n * @default '0'\n */\n minHeight?: JsxStyleProps['minHeight']\n /**\n * The min width property of the View\n * @default '0'\n */\n minWidth?: JsxStyleProps['minWidth']\n}\n\nexport type PolymorphicViewProps<C extends ElementType> = ViewProps<C> &\n Omit<React.ComponentPropsWithRef<C>, PropsToOmit<C, ViewProps>> &\n JsxStyleProps\n\ntype ViewComponent = {\n <C extends ElementType = 'div'>(\n props: PolymorphicViewProps<C>\n ): React.ReactElement | null\n displayName?: string\n}\n\nconst StyledView = styled('div', {\n base: {\n display: 'flex',\n position: 'relative',\n flexDirection: 'column',\n flexWrap: 'nowrap',\n alignItems: 'stretch',\n alignContent: 'flex-start',\n justifyContent: 'flex-start',\n minHeight: 0,\n minWidth: 0\n }\n})\n\nexport const View = StyledView as ViewComponent\n\nView.displayName = 'View'\n"]}
@@ -1,8 +0,0 @@
1
- import 'react';
2
- import { styled } from '@oztix/roadie-core/jsx';
3
-
4
- var e=styled("code",{base:{backgroundColor:"neutral.surface.subtle",textStyle:"code",px:"050",borderRadius:"050",border:"1px solid"},variants:{emphasis:{default:{borderColor:"neutral.border",backgroundColor:"neutral.surface.subtle"},strong:{borderColor:"neutral.border.strong",backgroundColor:"neutral.surface.strong"},subtle:{borderColor:"neutral.border.subtle"},muted:{borderColor:"transparent"}}},defaultVariants:{emphasis:"default"}});e.displayName="Code";
5
-
6
- export { e as a };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-76TTGNAE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/Code/index.tsx"],"names":["styled","Code"],"mappings":"AAAA,MAAkB,QAGlB,OAAS,UAAAA,MAAc,yBAchB,IAAMC,EAAOD,EAAO,OAAQ,CACjC,KAAM,CACJ,gBAAiB,yBACjB,UAAW,OACX,GAAI,MACJ,aAAc,MACd,OAAQ,WACV,EACA,SAAU,CACR,SAAU,CACR,QAAS,CACP,YAAa,iBACb,gBAAiB,wBACnB,EACA,OAAQ,CACN,YAAa,wBACb,gBAAiB,wBACnB,EACA,OAAQ,CACN,YAAa,uBACf,EACA,MAAO,CACL,YAAa,aACf,CACF,CACF,EACA,gBAAiB,CACf,SAAU,SACZ,CACF,CAAC,EAEDC,EAAK,YAAc","sourcesContent":["import React from 'react'\n\nimport type { HTMLStyledProps } from '@oztix/roadie-core/jsx'\nimport { styled } from '@oztix/roadie-core/jsx'\nimport type { JsxStyleProps } from '@oztix/roadie-core/types'\n\n/**\n * A code component that inherits from Text and renders as a code element\n */\nexport interface CodeProps extends HTMLStyledProps<'code'>, JsxStyleProps {\n /**\n * The appearance of the code block\n * @default 'outline'\n */\n emphasis?: 'default' | 'strong' | 'subtle' | 'muted'\n}\n\nexport const Code = styled('code', {\n base: {\n backgroundColor: 'neutral.surface.subtle',\n textStyle: 'code',\n px: '050',\n borderRadius: '050',\n border: '1px solid'\n },\n variants: {\n emphasis: {\n default: {\n borderColor: 'neutral.border',\n backgroundColor: 'neutral.surface.subtle'\n },\n strong: {\n borderColor: 'neutral.border.strong',\n backgroundColor: 'neutral.surface.strong'\n },\n subtle: {\n borderColor: 'neutral.border.subtle'\n },\n muted: {\n borderColor: 'transparent'\n }\n }\n },\n defaultVariants: {\n emphasis: 'default'\n }\n}) as React.ForwardRefExoticComponent<CodeProps>\n\nCode.displayName = 'Code'\n"]}
@@ -1,8 +0,0 @@
1
- import 'react';
2
- import { styled } from '@oztix/roadie-core/jsx';
3
-
4
- var t=styled("span",{base:{textStyle:"ui",color:"colorPalette.fg"},variants:{emphasis:{default:{color:"colorPalette.fg"},strong:{color:"colorPalette.fg.strong",fontWeight:"semibold"},subtle:{color:"colorPalette.fg.subtle"},muted:{color:"colorPalette.fg.muted"}},interactive:{true:{cursor:"pointer",_hover:{color:"colorPalette.fg.hover"},_focus:{color:"colorPalette.fg.hover"},_active:{color:"colorPalette.fg.active"},_groupHover:{color:"colorPalette.fg.hover"},_groupFocus:{color:"colorPalette.fg.hover"},_groupActive:{color:"colorPalette.fg.active"}}}},defaultVariants:{emphasis:"default",interactive:!1}}),o=t;o.displayName="Text";
5
-
6
- export { o as a };
7
- //# sourceMappingURL=out.js.map
8
- //# sourceMappingURL=chunk-CNVMCX74.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/Text/index.tsx"],"names":["styled","StyledText","Text"],"mappings":"AACA,MAAkB,QAElB,OAAS,UAAAA,MAAc,yBAmEvB,IAAMC,EAAaD,EAAO,OAAQ,CAChC,KAAM,CACJ,UAAW,KACX,MAAO,iBACT,EACA,SAAU,CACR,SAAU,CACR,QAAS,CACP,MAAO,iBACT,EACA,OAAQ,CACN,MAAO,yBACP,WAAY,UACd,EACA,OAAQ,CACN,MAAO,wBACT,EACA,MAAO,CACL,MAAO,uBACT,CACF,EACA,YAAa,CACX,KAAM,CACJ,OAAQ,UACR,OAAQ,CACN,MAAO,uBACT,EACA,OAAQ,CACN,MAAO,uBACT,EACA,QAAS,CACP,MAAO,wBACT,EACA,YAAa,CACX,MAAO,uBACT,EACA,YAAa,CACX,MAAO,uBACT,EACA,aAAc,CACZ,MAAO,wBACT,CACF,CACF,CACF,EACA,gBAAiB,CACf,SAAU,UACV,YAAa,EACf,CACF,CAAC,EAEYE,EAAOD,EAEpBC,EAAK,YAAc","sourcesContent":["import type { ElementType } from 'react'\nimport React from 'react'\n\nimport { styled } from '@oztix/roadie-core/jsx'\nimport type { JsxStyleProps } from '@oztix/roadie-core/types'\n\ntype AsProp<C extends ElementType> = {\n as?: C\n}\n\ntype PropsToOmit<C extends ElementType, P> = keyof (AsProp<C> & P)\n\n/**\n * A foundational text component that is responsive and customizable.\n */\nexport interface TextProps<C extends ElementType = 'span'> {\n /**\n * The HTML element or React component to render the Text as\n * @default 'span'\n */\n as?: C\n /**\n * Controls the font family, line height, and letter spacing of the text.\n * @default 'ui'\n */\n textStyle?: JsxStyleProps['textStyle']\n /**\n * The color of the text\n * @default 'neutral'\n */\n colorPalette?:\n | 'neutral'\n | 'accent'\n | 'brand'\n | 'information'\n | 'success'\n | 'warning'\n | 'danger'\n /**\n * The emphasis of the text\n * - default: For standard body text and general content\n * - strong: For text that needs visual emphasis or importance, like headings, key terms or warnings\n * - subtle: For secondary or supplementary text that should be visually de-emphasized\n * - muted: For text that should be visually muted, like placeholder text or disabled text\n * @default 'default'\n */\n emphasis?: 'default' | 'strong' | 'subtle' | 'muted'\n /**\n * Whether the text is interactive. Adds hover, focus, and active styles. Includes group styles.\n * @default false\n */\n interactive?: boolean\n /**\n * The line clamp of the text. Useful for limiting the number of lines of text in a component.\n * @default 'none'\n */\n lineClamp?: JsxStyleProps['lineClamp']\n}\n\nexport type PolymorphicTextProps<C extends ElementType> = TextProps<C> &\n Omit<React.ComponentPropsWithRef<C>, PropsToOmit<C, TextProps>> &\n JsxStyleProps\n\ntype TextComponent = {\n <C extends ElementType = 'span'>(\n props: PolymorphicTextProps<C>\n ): React.ReactElement | null\n displayName?: string\n}\n\nconst StyledText = styled('span', {\n base: {\n textStyle: 'ui',\n color: 'colorPalette.fg'\n },\n variants: {\n emphasis: {\n default: {\n color: 'colorPalette.fg'\n },\n strong: {\n color: 'colorPalette.fg.strong',\n fontWeight: 'semibold'\n },\n subtle: {\n color: 'colorPalette.fg.subtle'\n },\n muted: {\n color: 'colorPalette.fg.muted'\n }\n },\n interactive: {\n true: {\n cursor: 'pointer',\n _hover: {\n color: 'colorPalette.fg.hover'\n },\n _focus: {\n color: 'colorPalette.fg.hover'\n },\n _active: {\n color: 'colorPalette.fg.active'\n },\n _groupHover: {\n color: 'colorPalette.fg.hover'\n },\n _groupFocus: {\n color: 'colorPalette.fg.hover'\n },\n _groupActive: {\n color: 'colorPalette.fg.active'\n }\n }\n }\n },\n defaultVariants: {\n emphasis: 'default',\n interactive: false\n }\n})\n\nexport const Text = StyledText as TextComponent\n\nText.displayName = 'Text'\n"]}
@@ -1,9 +0,0 @@
1
- import { Button } from 'react-aria-components';
2
- import { cva, cx } from '@oztix/roadie-core/css';
3
- import { jsx } from 'react/jsx-runtime';
4
-
5
- var d=cva({base:{display:"inline-flex",alignItems:"center",justifyContent:"center",backgroundColor:"transparent",borderRadius:"050",fontWeight:"medium",fontFamily:"ui",cursor:"pointer",borderWidth:"1px",borderStyle:"solid",borderColor:"transparent",transition:"all 0.2s",color:"colorPalette.fg",_hover:{color:"colorPalette.fg.hover"},_active:{color:"colorPalette.fg.active"},_disabled:{opacity:.4,cursor:"not-allowed",color:"colorPalette.fg.subtle"},_focusVisible:{outlineColor:"colorPalette.border.strong",outlineWidth:"2px",outlineStyle:"solid",outlineOffset:"2px"}},variants:{emphasis:{strong:{color:"colorPalette.fg.inverted",backgroundColor:"colorPalette.solid.strong",_hover:{color:"colorPalette.fg.inverted.hover",backgroundColor:"colorPalette.solid.strong.hover"},_active:{color:"colorPalette.fg.inverted.active",backgroundColor:"colorPalette.solid.strong.active"}},default:{borderColor:"colorPalette.border",backgroundColor:"colorPalette.surface.subtle",_hover:{borderColor:"colorPalette.border.hover",backgroundColor:"colorPalette.surface.subtle.hover"},_active:{borderColor:"colorPalette.border.active",backgroundColor:"colorPalette.surface.subtle.active"}},subtle:{backgroundColor:"colorPalette.solid.subtle",_hover:{backgroundColor:"colorPalette.solid.subtle.hover"},_active:{backgroundColor:"colorPalette.solid.subtle.active"}},muted:{_hover:{backgroundColor:"colorPalette.solid.subtle.hover"},_active:{backgroundColor:"colorPalette.solid.subtle.active"}}},colorPalette:{neutral:{colorPalette:"neutral"},accent:{colorPalette:"accent"},brand:{colorPalette:"brand"},information:{colorPalette:"information"},success:{colorPalette:"success"},warning:{colorPalette:"warning"},danger:{colorPalette:"danger"}},size:{sm:{minHeight:"400",fontSize:"sm",px:"200",py:"075"},md:{minHeight:"500",fontSize:"md",px:"200",py:"100"},lg:{minHeight:"600",fontSize:"lg",px:"300",py:"150"}}},defaultVariants:{emphasis:"default",colorPalette:"neutral",size:"md"}});function f({children:o,emphasis:e="default",size:t="md",colorPalette:r="neutral",isDisabled:l=!1,onPress:a,className:n,...c}){return jsx(Button,{onPress:a,isDisabled:l,className:cx(d({emphasis:e,size:t,colorPalette:r}),n),...c,children:o})}
6
-
7
- export { d as a, f as b };
8
- //# sourceMappingURL=out.js.map
9
- //# sourceMappingURL=chunk-JDVDZGUN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/Button/index.tsx"],"names":["AriaButton","cva","cx","jsx","buttonRecipe","Button","children","emphasis","size","colorPalette","isDisabled","onPress","className","props"],"mappings":"AAAA,OACE,UAAUA,MAEL,wBAEP,OAAS,OAAAC,EAAK,MAAAC,MAAU,yBA6KpB,cAAAC,MAAA,oBA5IG,IAAMC,EAAeH,EAAI,CAC9B,KAAM,CACJ,QAAS,cACT,WAAY,SACZ,eAAgB,SAChB,gBAAiB,cACjB,aAAc,MACd,WAAY,SACZ,WAAY,KACZ,OAAQ,UACR,YAAa,MACb,YAAa,QACb,YAAa,cACb,WAAY,WACZ,MAAO,kBACP,OAAQ,CACN,MAAO,uBACT,EACA,QAAS,CACP,MAAO,wBACT,EACA,UAAW,CACT,QAAS,GACT,OAAQ,cACR,MAAO,wBACT,EACA,cAAe,CACb,aAAc,6BACd,aAAc,MACd,aAAc,QACd,cAAe,KACjB,CACF,EACA,SAAU,CACR,SAAU,CACR,OAAQ,CACN,MAAO,2BACP,gBAAiB,4BACjB,OAAQ,CACN,MAAO,iCACP,gBAAiB,iCACnB,EACA,QAAS,CACP,MAAO,kCACP,gBAAiB,kCACnB,CACF,EACA,QAAS,CACP,YAAa,sBACb,gBAAiB,8BACjB,OAAQ,CACN,YAAa,4BACb,gBAAiB,mCACnB,EACA,QAAS,CACP,YAAa,6BACb,gBAAiB,oCACnB,CACF,EACA,OAAQ,CACN,gBAAiB,4BAEjB,OAAQ,CACN,gBAAiB,iCACnB,EACA,QAAS,CACP,gBAAiB,kCACnB,CACF,EACA,MAAO,CACL,OAAQ,CACN,gBAAiB,iCACnB,EACA,QAAS,CACP,gBAAiB,kCACnB,CACF,CACF,EACA,aAAc,CACZ,QAAS,CACP,aAAc,SAChB,EACA,OAAQ,CACN,aAAc,QAChB,EACA,MAAO,CACL,aAAc,OAChB,EACA,YAAa,CACX,aAAc,aAChB,EACA,QAAS,CACP,aAAc,SAChB,EACA,QAAS,CACP,aAAc,SAChB,EACA,OAAQ,CACN,aAAc,QAChB,CACF,EACA,KAAM,CACJ,GAAI,CACF,UAAW,MACX,SAAU,KACV,GAAI,MACJ,GAAI,KACN,EACA,GAAI,CACF,UAAW,MACX,SAAU,KACV,GAAI,MACJ,GAAI,KACN,EACA,GAAI,CACF,UAAW,MACX,SAAU,KACV,GAAI,MACJ,GAAI,KACN,CACF,CACF,EACA,gBAAiB,CACf,SAAU,UACV,aAAc,UACd,KAAM,IACR,CACF,CAAC,EAEM,SAASI,EAAO,CACrB,SAAAC,EACA,SAAAC,EAAW,UACX,KAAAC,EAAO,KACP,aAAAC,EAAe,UACf,WAAAC,EAAa,GACb,QAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EAAgB,CACd,OACEV,EAACH,EAAA,CACC,QAASW,EACT,WAAYD,EACZ,UAAWR,EAAGE,EAAa,CAAE,SAAAG,EAAU,KAAAC,EAAM,aAAAC,CAAa,CAAC,EAAGG,CAAS,EACtE,GAAGC,EAEH,SAAAP,EACH,CAEJ","sourcesContent":["import {\n Button as AriaButton,\n type ButtonProps as AriaButtonProps\n} from 'react-aria-components'\n\nimport { cva, cx } from '@oztix/roadie-core/css'\n\n/**\n * Button emphasis variants\n */\ntype ButtonEmphasis = 'strong' | 'default' | 'subtle' | 'muted'\n\n/**\n * Button size variants\n */\ntype ButtonSize = 'sm' | 'md' | 'lg'\n\n/**\n * Props for the Button component\n */\nexport interface ButtonProps extends Omit<AriaButtonProps, 'className'> {\n /** The visual style of the button */\n emphasis?: ButtonEmphasis\n /** The size of the button */\n size?: ButtonSize\n /** The color palette to use for the button */\n colorPalette?:\n | 'neutral'\n | 'accent'\n | 'brand'\n | 'information'\n | 'success'\n | 'warning'\n | 'danger'\n /** Additional class names to be applied to the button */\n className?: string\n}\n\nexport const buttonRecipe = cva({\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'transparent',\n borderRadius: '050',\n fontWeight: 'medium',\n fontFamily: 'ui',\n cursor: 'pointer',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: 'transparent',\n transition: 'all 0.2s',\n color: 'colorPalette.fg',\n _hover: {\n color: 'colorPalette.fg.hover'\n },\n _active: {\n color: 'colorPalette.fg.active'\n },\n _disabled: {\n opacity: 0.4,\n cursor: 'not-allowed',\n color: 'colorPalette.fg.subtle'\n },\n _focusVisible: {\n outlineColor: 'colorPalette.border.strong',\n outlineWidth: '2px',\n outlineStyle: 'solid',\n outlineOffset: '2px'\n }\n },\n variants: {\n emphasis: {\n strong: {\n color: 'colorPalette.fg.inverted',\n backgroundColor: 'colorPalette.solid.strong',\n _hover: {\n color: 'colorPalette.fg.inverted.hover',\n backgroundColor: 'colorPalette.solid.strong.hover'\n },\n _active: {\n color: 'colorPalette.fg.inverted.active',\n backgroundColor: 'colorPalette.solid.strong.active'\n }\n },\n default: {\n borderColor: 'colorPalette.border',\n backgroundColor: 'colorPalette.surface.subtle',\n _hover: {\n borderColor: 'colorPalette.border.hover',\n backgroundColor: 'colorPalette.surface.subtle.hover'\n },\n _active: {\n borderColor: 'colorPalette.border.active',\n backgroundColor: 'colorPalette.surface.subtle.active'\n }\n },\n subtle: {\n backgroundColor: 'colorPalette.solid.subtle',\n\n _hover: {\n backgroundColor: 'colorPalette.solid.subtle.hover'\n },\n _active: {\n backgroundColor: 'colorPalette.solid.subtle.active'\n }\n },\n muted: {\n _hover: {\n backgroundColor: 'colorPalette.solid.subtle.hover'\n },\n _active: {\n backgroundColor: 'colorPalette.solid.subtle.active'\n }\n }\n },\n colorPalette: {\n neutral: {\n colorPalette: 'neutral'\n },\n accent: {\n colorPalette: 'accent'\n },\n brand: {\n colorPalette: 'brand'\n },\n information: {\n colorPalette: 'information'\n },\n success: {\n colorPalette: 'success'\n },\n warning: {\n colorPalette: 'warning'\n },\n danger: {\n colorPalette: 'danger'\n }\n },\n size: {\n sm: {\n minHeight: '400',\n fontSize: 'sm',\n px: '200',\n py: '075'\n },\n md: {\n minHeight: '500',\n fontSize: 'md',\n px: '200',\n py: '100'\n },\n lg: {\n minHeight: '600',\n fontSize: 'lg',\n px: '300',\n py: '150'\n }\n }\n },\n defaultVariants: {\n emphasis: 'default',\n colorPalette: 'neutral',\n size: 'md'\n }\n})\n\nexport function Button({\n children,\n emphasis = 'default',\n size = 'md',\n colorPalette = 'neutral',\n isDisabled = false,\n onPress,\n className,\n ...props\n}: ButtonProps) {\n return (\n <AriaButton\n onPress={onPress}\n isDisabled={isDisabled}\n className={cx(buttonRecipe({ emphasis, size, colorPalette }), className)}\n {...props}\n >\n {children}\n </AriaButton>\n )\n}\n"]}