tuix-webcomponents 0.0.21 → 0.0.24

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 (116) hide show
  1. package/README.md +110 -4
  2. package/dist/assets/tuix-styles.css +72 -0
  3. package/dist/src/index.d.ts +34 -1
  4. package/dist/src/index.js +26 -16
  5. package/dist/src/react/index.d.ts +42 -0
  6. package/dist/src/react/index.js +114 -0
  7. package/dist/src/tuix-button/TuixBaseButton.d.ts +17 -0
  8. package/dist/src/tuix-button/TuixBaseButton.js +60 -0
  9. package/dist/src/tuix-button/TuixButton.d.ts +11 -0
  10. package/dist/src/tuix-button/TuixButton.js +84 -0
  11. package/dist/src/tuix-button/TuixButton.styles.d.ts +3 -0
  12. package/dist/src/tuix-button/TuixButton.styles.js +107 -0
  13. package/dist/src/tuix-button/enums/tuix-button.enums.d.ts +2 -0
  14. package/dist/src/tuix-button/enums/tuix-button.enums.js +6 -0
  15. package/dist/src/tuix-button/interfaces/tuix-button.interface.d.ts +1 -0
  16. package/dist/src/tuix-button/interfaces/tuix-button.interface.js +1 -0
  17. package/dist/src/tuix-checkbox/TuixCheckbox.d.ts +17 -0
  18. package/dist/src/tuix-checkbox/TuixCheckbox.js +108 -0
  19. package/dist/src/tuix-checkbox/TuixCheckbox.styles.d.ts +4 -0
  20. package/dist/src/tuix-checkbox/TuixCheckbox.styles.js +132 -0
  21. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.d.ts +21 -0
  22. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.js +23 -0
  23. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.d.ts +5 -0
  24. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.js +1 -0
  25. package/dist/src/tuix-dropdown/TuixDropdown.d.ts +56 -0
  26. package/dist/src/tuix-dropdown/TuixDropdown.js +361 -0
  27. package/dist/src/tuix-dropdown/TuixDropdown.styles.d.ts +3 -0
  28. package/dist/src/tuix-dropdown/TuixDropdown.styles.js +125 -0
  29. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.d.ts +4 -0
  30. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.js +5 -0
  31. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.d.ts +15 -0
  32. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.js +1 -0
  33. package/dist/src/tuix-icon/TuixIcon.d.ts +15 -0
  34. package/dist/src/tuix-icon/TuixIcon.icons.d.ts +6 -0
  35. package/dist/src/tuix-icon/TuixIcon.icons.js +395 -0
  36. package/dist/src/tuix-icon/TuixIcon.js +79 -0
  37. package/dist/src/tuix-icon/enums/tuix-icon.enums.d.ts +89 -0
  38. package/dist/src/tuix-icon/enums/tuix-icon.enums.js +96 -0
  39. package/dist/src/tuix-icon-button/TuixIconButton.d.ts +9 -0
  40. package/dist/src/tuix-icon-button/TuixIconButton.js +51 -0
  41. package/dist/src/tuix-input/TuixInput.d.ts +52 -0
  42. package/dist/src/tuix-input/TuixInput.js +374 -0
  43. package/dist/src/tuix-input/TuixInput.styles.d.ts +8 -0
  44. package/dist/src/tuix-input/TuixInput.styles.js +296 -0
  45. package/dist/src/tuix-input/enums/tuix-input.enums.d.ts +38 -0
  46. package/dist/src/tuix-input/enums/tuix-input.enums.js +41 -0
  47. package/dist/src/tuix-input/interfaces/tuix-input.interface.d.ts +18 -0
  48. package/dist/src/tuix-input/interfaces/tuix-input.interface.js +5 -0
  49. package/dist/src/tuix-link/TuixLink.d.ts +15 -0
  50. package/dist/src/tuix-link/TuixLink.js +71 -0
  51. package/dist/src/tuix-link/TuixLink.styles.d.ts +2 -0
  52. package/dist/src/tuix-link/TuixLink.styles.js +55 -0
  53. package/dist/src/tuix-link/enums/linkTarget.enum.d.ts +6 -0
  54. package/dist/src/tuix-link/enums/linkTarget.enum.js +7 -0
  55. package/dist/src/tuix-modal/TuixModal.d.ts +11 -0
  56. package/dist/src/tuix-modal/TuixModal.js +65 -0
  57. package/dist/src/tuix-modal/TuixModal.styles.d.ts +2 -0
  58. package/dist/src/tuix-modal/TuixModal.styles.js +55 -0
  59. package/dist/src/tuix-paper/TuixPaper.d.ts +10 -0
  60. package/dist/src/tuix-paper/TuixPaper.js +46 -0
  61. package/dist/src/tuix-paper/TuixPaper.styles.d.ts +1 -0
  62. package/dist/src/tuix-paper/TuixPaper.styles.js +30 -0
  63. package/dist/src/tuix-paper/enums/tuix-paper.enum.d.ts +13 -0
  64. package/dist/src/tuix-paper/enums/tuix-paper.enum.js +15 -0
  65. package/dist/src/tuix-radio-button/TuixRadioButton.d.ts +17 -0
  66. package/dist/src/tuix-radio-button/TuixRadioButton.js +96 -0
  67. package/dist/src/tuix-radio-button/TuixRadioButton.styles.d.ts +5 -0
  68. package/dist/src/tuix-radio-button/TuixRadioButton.styles.js +135 -0
  69. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.d.ts +3 -0
  70. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.js +1 -0
  71. package/dist/src/tuix-table/TuixTable.d.ts +48 -0
  72. package/dist/src/tuix-table/TuixTable.js +369 -0
  73. package/dist/src/tuix-table/TuixTable.styles.d.ts +2 -0
  74. package/dist/src/tuix-table/TuixTable.styles.js +197 -0
  75. package/dist/src/tuix-table/interfaces/tuix-table.interface.d.ts +45 -0
  76. package/dist/src/tuix-table/interfaces/tuix-table.interface.js +1 -0
  77. package/dist/src/tuix-text/TuixText.d.ts +7 -5
  78. package/dist/src/tuix-text/TuixText.js +45 -137
  79. package/dist/src/tuix-text/TuixText.styles.d.ts +2 -0
  80. package/dist/src/tuix-text/TuixText.styles.js +195 -0
  81. package/dist/src/tuix-text/enums/tuix-text.enums.d.ts +36 -0
  82. package/dist/src/tuix-text/enums/tuix-text.enums.js +72 -0
  83. package/dist/src/tuix-toast/TuixToast.d.ts +18 -0
  84. package/dist/src/tuix-toast/TuixToast.js +103 -0
  85. package/dist/src/tuix-toast/TuixToast.styles.d.ts +3 -0
  86. package/dist/src/tuix-toast/TuixToast.styles.js +43 -0
  87. package/dist/src/tuix-toast/enums/tuix-toast.enums.d.ts +20 -0
  88. package/dist/src/tuix-toast/enums/tuix-toast.enums.js +59 -0
  89. package/dist/src/tuix-toggle-button/TuixToggleButton.d.ts +14 -0
  90. package/dist/src/tuix-toggle-button/TuixToggleButton.js +86 -0
  91. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.d.ts +5 -0
  92. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.js +134 -0
  93. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.d.ts +2 -0
  94. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.js +1 -0
  95. package/dist/src/utils/colors.d.ts +30 -10
  96. package/dist/src/utils/colors.js +31 -11
  97. package/dist/src/utils/darkColors.d.ts +32 -0
  98. package/dist/src/utils/darkColors.js +33 -0
  99. package/dist/src/utils/hex-rgb.d.ts +5 -0
  100. package/dist/src/utils/hex-rgb.js +15 -0
  101. package/dist/src/utils/interfaces/detail-value.interface.d.ts +3 -0
  102. package/dist/src/utils/interfaces/detail-value.interface.js +1 -0
  103. package/dist/src/utils/mainVariant.enum.d.ts +4 -0
  104. package/dist/src/utils/mainVariant.enum.js +5 -0
  105. package/dist/src/utils/screenSizes.enum.d.ts +4 -0
  106. package/dist/src/utils/screenSizes.enum.js +5 -0
  107. package/dist/src/utils/slottedClassName.d.ts +2 -0
  108. package/dist/src/utils/slottedClassName.js +1 -0
  109. package/package.json +118 -66
  110. package/dist/src/enums/tuix-text.enums.d.ts +0 -24
  111. package/dist/src/enums/tuix-text.enums.js +0 -29
  112. package/dist/src/enums/tuix-text.enums.js.map +0 -1
  113. package/dist/src/index.js.map +0 -1
  114. package/dist/src/tuix-text/TuixText.js.map +0 -1
  115. package/dist/src/utils/colors.js.map +0 -1
  116. package/dist/tsconfig.publish.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -10,14 +10,110 @@ npm i tuix-webcomponents
10
10
 
11
11
  ## Usage
12
12
 
13
+ ### Webbundle version
14
+
15
+ Webbundle Link: https://tuix-webcomponents.s3.eu-central-1.amazonaws.com/build-bf814e0@0.89.0.js
16
+ Styles Link: https://tuix-webcomponents.s3.eu-central-1.amazonaws.com/build-bf814e0@0.89.0.css
17
+
18
+ ### React
19
+
20
+ The package ships generated [@lit/react](https://lit.dev/docs/frameworks/react/)
21
+ wrappers, one per element, so nothing has to be wrapped by hand. `@lit/react` is
22
+ a peer dependency:
23
+
24
+ ```bash
25
+ npm i tuix-webcomponents @lit/react
26
+ ```
27
+
28
+ ```tsx
29
+ import 'tuix-webcomponents/dist/assets/tuix-styles.css';
30
+ import { TuixButton, TuixText } from 'tuix-webcomponents/react';
31
+ import { IconName, MainVariant, TextSize } from 'tuix-webcomponents';
32
+
33
+ function App() {
34
+ return (
35
+ <>
36
+ <TuixText size={TextSize.XL}>Test text</TuixText>
37
+ <TuixButton
38
+ variant={MainVariant.PRIMARY}
39
+ iconLeft={IconName.SAVE}
40
+ onCustomClick={() => console.log('clicked')}
41
+ >
42
+ Save
43
+ </TuixButton>
44
+ </>
45
+ );
46
+ }
47
+ ```
48
+
49
+ The props are the element's own properties, so objects and arrays pass through
50
+ untouched, and each custom event arrives as an `on*` prop. Because those
51
+ properties are typed with the exported enums, pass `MainVariant.PRIMARY` rather
52
+ than the string `'primary'`.
53
+
54
+ The wrappers are generated by `scripts/build-react.ts` during `npm run build`
55
+ and land in `dist/src/react`; `src/react/` is gitignored. Nothing about them is
56
+ hand-kept: the generator reads `src/`, so every element with a `@customElement`
57
+ decorator gets a wrapper, and every event it dispatches gets its `on*` prop,
58
+ typed with the detail type written at the dispatch site.
59
+
60
+ ### Fonts
61
+
62
+ The components render in Rubik, served from the Tuix CDN. The design tokens
63
+ stylesheet imports it, so `import 'tuix-webcomponents/dist/assets/tuix-styles.css'`
64
+ is enough. To start the request earlier, add the link to the document head:
65
+
13
66
  ```html
14
- <script type="module">
15
- import 'tuix-webcomponents/tuix-webcomponents.js';
16
- </script>
67
+ <link rel="preconnect" href="https://hccdn.tuix.ch" />
68
+ <link rel="stylesheet" href="https://hccdn.tuix.ch/rubik_d444e2375d.css" />
69
+ ```
70
+
71
+ There is no `loadFonts()` helper any more: injecting the stylesheet from
72
+ JavaScript reflowed the page once the face arrived.
73
+
74
+ ## Documentation
17
75
 
18
- <tuix-webcomponents></tuix-webcomponents>
76
+ The developer documentation site (Fumadocs, statically exported) lives in
77
+ `docs/` as its own npm project:
78
+
79
+ ```bash
80
+ cd docs
81
+ npm install
82
+ npm run dev # http://localhost:3000/en/developers
83
+ npm run build # static export into docs/dist
84
+ ```
85
+
86
+ It carries step-by-step integration guides for React/Next.js, Vue and Angular,
87
+ and a page per component with live previews of every variant, in English and
88
+ German. Pages are MDX files in `docs/content/docs/` (`*.mdx` English,
89
+ `*.de.mdx` German), ordered by `meta.json` and `meta.de.json`.
90
+
91
+ See `docs/src/modules/docs/README.md` for how the site is put together, and
92
+ [the contributing page](docs/content/docs/contributing.mdx) for the workflow.
93
+
94
+ ## Building the package
95
+
96
+ ```bash
97
+ npm run build
19
98
  ```
20
99
 
100
+ writes `dist/`, which is exactly what `npm publish` ships (`files: ["dist"]`):
101
+
102
+ | Path | Entry point |
103
+ | -------------------------------- | -------------------------------------------- |
104
+ | `dist/src/index.js` + `.d.ts` | `tuix-webcomponents` — the custom elements |
105
+ | `dist/src/react/index.js` | `tuix-webcomponents/react` — the wrappers |
106
+ | `dist/assets/tuix-styles.css` | `tuix-webcomponents/dist/assets/tuix-styles.css` — the design tokens |
107
+
108
+ The steps behind it: `cem analyze` refreshes `custom-elements.json`,
109
+ `scripts/build-react.ts` regenerates `src/react/`, `tsc -p tsconfig.publish.json`
110
+ compiles both entry points with their declarations, `build:css` renders the
111
+ tokens, and `tsc-esm-fix` adds the `.js` extensions Node's ESM resolver needs.
112
+
113
+ `npm publish` re-runs it through `prepublishOnly`, so a release cannot ship a
114
+ stale `dist/`. `npm run publish:local` packs the same output into a linkable
115
+ `local/` folder for trying it in another project.
116
+
21
117
  ## Linting and formatting
22
118
 
23
119
  To scan the project for linting and formatting errors, run
@@ -46,6 +142,15 @@ To build a production version of Storybook, run
46
142
  npm run storybook:build
47
143
  ```
48
144
 
145
+ That writes `dist/storybook`, which is where the deployed site serves it from.
146
+ The site root is the documentation, and the Storybook sidebar brand links back
147
+ to it. `scripts/build.sh` is what assembles both into `dist/` for CI.
148
+
149
+ Note that `dist/` carries two different products, one per CI job: the site
150
+ (`scripts/build.sh`, deployed to S3) and the npm package (`npm run build`, what
151
+ `files` publishes). Both start by clearing it, so locally the last one to run
152
+ wins.
153
+
49
154
 
50
155
  ## Tooling configs
51
156
 
@@ -60,3 +165,4 @@ npm start
60
165
  ```
61
166
 
62
167
  To run a local development server that serves the basic demo located in `demo/index.html`
168
+
@@ -0,0 +1,72 @@
1
+ @import url('https://hccdn.tuix.ch/rubik_d444e2375d.css');
2
+
3
+ :root {
4
+ --tuix-light-color-primary-50: #F2F3FA;
5
+ --tuix-light-color-primary-100: #E3E5F4;
6
+ --tuix-light-color-primary-200: #C7CAE8;
7
+ --tuix-light-color-primary-300: #AAAFE0;
8
+ --tuix-light-color-primary-400: #8B90D2;
9
+ --tuix-light-color-main: #585A9D;
10
+ --tuix-light-color-dark-main: #6F73B8;
11
+ --tuix-light-color-primary-600: #4E508E;
12
+ --tuix-light-color-primary-700: #404277;
13
+ --tuix-light-color-primary-800: #32345F;
14
+ --tuix-light-color-primary-900: #22233F;
15
+ --tuix-light-color-primary-950: #1F1E33;
16
+ --tuix-light-color-secondary: #BBADFF;
17
+ --tuix-light-color-white: #FFFFFF;
18
+ --tuix-light-color-black: #121212;
19
+ --tuix-light-color-neutral-200: #FAFAFA;
20
+ --tuix-light-color-neutral-600: #b6b6b6;
21
+ --tuix-light-color-success: #439F6E;
22
+ --tuix-light-color-success-50: #F1F9F5;
23
+ --tuix-light-color-validation: #FFB82E;
24
+ --tuix-light-color-validation-50: #FFFBF4;
25
+ --tuix-light-color-validation-200: #FFEAC1;
26
+ --tuix-light-color-error: #F93232;
27
+ --tuix-light-color-error-50: #FFF5F5;
28
+ --tuix-light-color-error-200: #FFD8D8;
29
+ --tuix-light-color-section-bg: #FAFAFA;
30
+ --tuix-light-color-disabled-bg: #EBEAF4;
31
+ --tuix-light-color-shadow: rgba(66, 79, 101, 0.16);
32
+ --tuix-dark-color-primary-50: #F4F5FB;
33
+ --tuix-dark-color-primary-100: #E3E5F4;
34
+ --tuix-dark-color-#e3e5f4: PRIMARY_100;
35
+ --tuix-dark-color-primary-200: #C7CAE8;
36
+ --tuix-dark-color-#c7cae8: PRIMARY_200;
37
+ --tuix-dark-color-primary-300: #AAAFE0;
38
+ --tuix-dark-color-#aaafe0: PRIMARY_300;
39
+ --tuix-dark-color-primary-400: #8B90D2;
40
+ --tuix-dark-color-#8b90d2: PRIMARY_400;
41
+ --tuix-dark-color-main: #6F73B8;
42
+ --tuix-dark-color-dark-main: #6F73B8;
43
+ --tuix-dark-color-#6f73b8: DARK_MAIN;
44
+ --tuix-dark-color-primary-600: #5C60A4;
45
+ --tuix-dark-color-primary-700: #4A4E8E;
46
+ --tuix-dark-color-primary-800: #32355F;
47
+ --tuix-dark-color-primary-900: #181A32;
48
+ --tuix-dark-color-primary-950: #1F1E33;
49
+ --tuix-dark-color-#1f1e33: PRIMARY_950;
50
+ --tuix-dark-color-secondary: #BBADFF;
51
+ --tuix-dark-color-#bbadff: SECONDARY;
52
+ --tuix-dark-color-white: #FFFFFF;
53
+ --tuix-dark-color-black: #0F1117;
54
+ --tuix-dark-color-neutral-200: #C9C8D3;
55
+ --tuix-dark-color-neutral-600: #8A8894;
56
+ --tuix-dark-color-success: #439F6E;
57
+ --tuix-dark-color-#439f6e: SUCCESS;
58
+ --tuix-dark-color-success-50: rgba(241, 249, 245, 0.30);
59
+ --tuix-dark-color-validation: #FFD489;
60
+ --tuix-dark-color-validation-50: rgba(255, 212, 137, 0.20);
61
+ --tuix-dark-color-validation-200: #FFEAC1;
62
+ --tuix-dark-color-#ffeac1: VALIDATION_200;
63
+ --tuix-dark-color-error: #FF8486;
64
+ --tuix-dark-color-error-50: rgba(255, 132, 134, 0.20);
65
+ --tuix-dark-color-error-200: #FFD8D8;
66
+ --tuix-dark-color-#ffd8d8: ERROR_200;
67
+ --tuix-dark-color-section-bg: #0E0E0E;
68
+ --tuix-dark-color-elevation-1: #141722;
69
+ --tuix-dark-color-elevation-2: #181C29;
70
+ --tuix-dark-color-elevation-3: #1D2131;
71
+ --tuix-dark-color-elevation-4: #23273A;
72
+ }
@@ -1,2 +1,35 @@
1
+ export { type CustomEventTuixButton } from './tuix-button/interfaces/tuix-button.interface.js';
2
+ export type { CustomEventTuixCheckbox, DetailValueCheckbox, } from './tuix-checkbox/interfaces/tuix-checkbox.interface.js';
3
+ export type { CustomEventTuixDropdownInput, CustomEventTuixDropdownSelect, TuixDropdownOption, TuixDropdownObjectOption, TuixDropdownPlainOption, } from './tuix-dropdown/interfaces/tuix-dropdown.interface.js';
4
+ export type { CustomEventTuixInput } from './tuix-input/interfaces/tuix-input.interface.js';
5
+ export type { CustomEventTuixRadioButton } from './tuix-radio-button/interfaces/tuix-radio-button.interface.js';
6
+ export type { CustomEventTuixToggle } from './tuix-toggle-button/interfaces/tuix-toggle.interface.js';
7
+ export type { DetailValue } from './utils/interfaces/detail-value.interface.js';
1
8
  export { TuixText } from './tuix-text/TuixText.js';
2
- export declare function loadFonts(): void;
9
+ export { TuixIcon } from './tuix-icon/TuixIcon.js';
10
+ export { TuixButton } from './tuix-button/TuixButton.js';
11
+ export { TuixPaper } from './tuix-paper/TuixPaper.js';
12
+ export { TuixIconButton } from './tuix-icon-button/TuixIconButton.js';
13
+ export { TuixLink } from './tuix-link/TuixLink.js';
14
+ export { TuixInput } from './tuix-input/TuixInput.js';
15
+ export { TuixDropdown } from './tuix-dropdown/TuixDropdown.js';
16
+ export { TuixCheckbox } from './tuix-checkbox/TuixCheckbox.js';
17
+ export { TuixRadioButton } from './tuix-radio-button/TuixRadioButton.js';
18
+ export { TuixToggleButton } from './tuix-toggle-button/TuixToggleButton.js';
19
+ export { TuixTable } from './tuix-table/TuixTable.js';
20
+ export type { IDataTableHeader, PaginationEventDetail, TuixTableElement, } from './tuix-table/interfaces/tuix-table.interface.js';
21
+ export { TuixToast } from './tuix-toast/TuixToast.js';
22
+ export { TuixModal } from './tuix-modal/TuixModal.js';
23
+ export { ToastType } from './tuix-toast/enums/tuix-toast.enums.js';
24
+ export { TextSize, TextVariant } from './tuix-text/enums/tuix-text.enums.js';
25
+ export { MainVariant } from './utils/mainVariant.enum.js';
26
+ export { CheckboxLabelSide } from './tuix-checkbox/enums/tuix-checkbox.enums.js';
27
+ export { PaperElevation } from './tuix-paper/enums/tuix-paper.enum.js';
28
+ export { LinkTarget } from './tuix-link/enums/linkTarget.enum.js';
29
+ export { IconName, IconSizeVariant, } from './tuix-icon/enums/tuix-icon.enums.js';
30
+ export { DescriptionType, InputType, } from './tuix-input/enums/tuix-input.enums.js';
31
+ export { Palette } from './utils/colors.js';
32
+ export { DarkPalette } from './utils/darkColors.js';
33
+ export { DropdownType } from './tuix-dropdown/enums/tuix-dropdown.enums.js';
34
+ export { BorderRadiusPaper } from './tuix-paper/enums/tuix-paper.enum.js';
35
+ export { ScreenSizes } from './utils/screenSizes.enum.js';
package/dist/src/index.js CHANGED
@@ -1,17 +1,27 @@
1
1
  export { TuixText } from './tuix-text/TuixText.js';
2
- export function loadFonts() {
3
- const link1 = document.createElement('link');
4
- link1.rel = 'preconnect';
5
- link1.href = 'https://fonts.googleapis.com';
6
- const link2 = document.createElement('link');
7
- link2.rel = 'preconnect';
8
- link2.href = 'https://fonts.gstatic.com';
9
- const link3 = document.createElement('link');
10
- link3.rel = 'stylesheet';
11
- link3.href =
12
- 'https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap';
13
- document.head.appendChild(link1);
14
- document.head.appendChild(link2);
15
- document.head.appendChild(link3);
16
- }
17
- //# sourceMappingURL=index.js.map
2
+ export { TuixIcon } from './tuix-icon/TuixIcon.js';
3
+ export { TuixButton } from './tuix-button/TuixButton.js';
4
+ export { TuixPaper } from './tuix-paper/TuixPaper.js';
5
+ export { TuixIconButton } from './tuix-icon-button/TuixIconButton.js';
6
+ export { TuixLink } from './tuix-link/TuixLink.js';
7
+ export { TuixInput } from './tuix-input/TuixInput.js';
8
+ export { TuixDropdown } from './tuix-dropdown/TuixDropdown.js';
9
+ export { TuixCheckbox } from './tuix-checkbox/TuixCheckbox.js';
10
+ export { TuixRadioButton } from './tuix-radio-button/TuixRadioButton.js';
11
+ export { TuixToggleButton } from './tuix-toggle-button/TuixToggleButton.js';
12
+ export { TuixTable } from './tuix-table/TuixTable.js';
13
+ export { TuixToast } from './tuix-toast/TuixToast.js';
14
+ export { TuixModal } from './tuix-modal/TuixModal.js';
15
+ export { ToastType } from './tuix-toast/enums/tuix-toast.enums.js';
16
+ export { TextSize, TextVariant } from './tuix-text/enums/tuix-text.enums.js';
17
+ export { MainVariant } from './utils/mainVariant.enum.js';
18
+ export { CheckboxLabelSide } from './tuix-checkbox/enums/tuix-checkbox.enums.js';
19
+ export { PaperElevation } from './tuix-paper/enums/tuix-paper.enum.js';
20
+ export { LinkTarget } from './tuix-link/enums/linkTarget.enum.js';
21
+ export { IconName, IconSizeVariant, } from './tuix-icon/enums/tuix-icon.enums.js';
22
+ export { DescriptionType, InputType, } from './tuix-input/enums/tuix-input.enums.js';
23
+ export { Palette } from './utils/colors.js';
24
+ export { DarkPalette } from './utils/darkColors.js';
25
+ export { DropdownType } from './tuix-dropdown/enums/tuix-dropdown.enums.js';
26
+ export { BorderRadiusPaper } from './tuix-paper/enums/tuix-paper.enum.js';
27
+ export { ScreenSizes } from './utils/screenSizes.enum.js';
@@ -0,0 +1,42 @@
1
+ import { type EventName } from '@lit/react';
2
+ import { TuixText as TuixTextElement, TuixIcon as TuixIconElement, TuixButton as TuixButtonElement, TuixPaper as TuixPaperElement, TuixIconButton as TuixIconButtonElement, TuixLink as TuixLinkElement, TuixInput as TuixInputElement, TuixDropdown as TuixDropdownElement, TuixCheckbox as TuixCheckboxElement, TuixRadioButton as TuixRadioButtonElement, TuixToggleButton as TuixToggleButtonElement, TuixTable as TuixTableElement, TuixToast as TuixToastElement, TuixModal as TuixModalElement } from '../index.js';
3
+ import type { DetailValue, DetailValueCheckbox, PaginationEventDetail, TuixDropdownPlainOption } from '../index.js';
4
+ export declare const TuixText: import("@lit/react").ReactWebComponent<TuixTextElement, {}>;
5
+ export declare const TuixIcon: import("@lit/react").ReactWebComponent<TuixIconElement, {}>;
6
+ export declare const TuixButton: import("@lit/react").ReactWebComponent<TuixButtonElement, {
7
+ onCustomClick: EventName<CustomEvent<undefined>>;
8
+ }>;
9
+ export declare const TuixPaper: import("@lit/react").ReactWebComponent<TuixPaperElement, {}>;
10
+ export declare const TuixIconButton: import("@lit/react").ReactWebComponent<TuixIconButtonElement, {
11
+ onCustomClick: EventName<CustomEvent<undefined>>;
12
+ }>;
13
+ export declare const TuixLink: import("@lit/react").ReactWebComponent<TuixLinkElement, {}>;
14
+ export declare const TuixInput: import("@lit/react").ReactWebComponent<TuixInputElement, {
15
+ onChange: EventName<CustomEvent<DetailValue<string>>>;
16
+ onBlur: EventName<CustomEvent<DetailValue<string>>>;
17
+ onClick: EventName<CustomEvent<undefined>>;
18
+ }>;
19
+ export declare const TuixDropdown: import("@lit/react").ReactWebComponent<TuixDropdownElement, {
20
+ onSelect: EventName<CustomEvent<DetailValue<TuixDropdownPlainOption>>>;
21
+ onInputSingle: EventName<CustomEvent<DetailValue<string>>>;
22
+ }>;
23
+ export declare const TuixCheckbox: import("@lit/react").ReactWebComponent<TuixCheckboxElement, {
24
+ onChange: EventName<CustomEvent<DetailValueCheckbox>>;
25
+ }>;
26
+ export declare const TuixRadioButton: import("@lit/react").ReactWebComponent<TuixRadioButtonElement, {
27
+ onChange: EventName<CustomEvent<DetailValue<string>>>;
28
+ }>;
29
+ export declare const TuixToggleButton: import("@lit/react").ReactWebComponent<TuixToggleButtonElement, {
30
+ onChange: EventName<CustomEvent<DetailValueCheckbox>>;
31
+ }>;
32
+ export declare const TuixTable: import("@lit/react").ReactWebComponent<TuixTableElement, {
33
+ onNextPage: EventName<CustomEvent<PaginationEventDetail>>;
34
+ onPreviousPage: EventName<CustomEvent<PaginationEventDetail>>;
35
+ onPageSizeChange: EventName<CustomEvent<PaginationEventDetail>>;
36
+ }>;
37
+ export declare const TuixToast: import("@lit/react").ReactWebComponent<TuixToastElement, {
38
+ onClose: EventName<CustomEvent<undefined>>;
39
+ }>;
40
+ export declare const TuixModal: import("@lit/react").ReactWebComponent<TuixModalElement, {
41
+ onClose: EventName<CustomEvent<undefined>>;
42
+ }>;
@@ -0,0 +1,114 @@
1
+ // Generated by scripts/build-react.ts. Do not edit by hand.
2
+ //
3
+ // React wrappers for every element, built with @lit/react: the props are the
4
+ // element's own properties, so objects and arrays pass through untouched, and
5
+ // each custom event arrives as an `on*` prop instead of an addEventListener
6
+ // call. Importing from here registers the custom elements.
7
+ import { createComponent } from '@lit/react';
8
+ import * as React from 'react';
9
+ import { TuixText as TuixTextElement, TuixIcon as TuixIconElement, TuixButton as TuixButtonElement, TuixPaper as TuixPaperElement, TuixIconButton as TuixIconButtonElement, TuixLink as TuixLinkElement, TuixInput as TuixInputElement, TuixDropdown as TuixDropdownElement, TuixCheckbox as TuixCheckboxElement, TuixRadioButton as TuixRadioButtonElement, TuixToggleButton as TuixToggleButtonElement, TuixTable as TuixTableElement, TuixToast as TuixToastElement, TuixModal as TuixModalElement, } from '../index.js';
10
+ export const TuixText = createComponent({
11
+ tagName: 'tuix-text',
12
+ elementClass: TuixTextElement,
13
+ react: React,
14
+ });
15
+ export const TuixIcon = createComponent({
16
+ tagName: 'tuix-icon',
17
+ elementClass: TuixIconElement,
18
+ react: React,
19
+ });
20
+ export const TuixButton = createComponent({
21
+ tagName: 'tuix-button',
22
+ elementClass: TuixButtonElement,
23
+ react: React,
24
+ events: {
25
+ onCustomClick: 'customClick',
26
+ },
27
+ });
28
+ export const TuixPaper = createComponent({
29
+ tagName: 'tuix-paper',
30
+ elementClass: TuixPaperElement,
31
+ react: React,
32
+ });
33
+ export const TuixIconButton = createComponent({
34
+ tagName: 'tuix-icon-button',
35
+ elementClass: TuixIconButtonElement,
36
+ react: React,
37
+ events: {
38
+ onCustomClick: 'customClick',
39
+ },
40
+ });
41
+ export const TuixLink = createComponent({
42
+ tagName: 'tuix-link',
43
+ elementClass: TuixLinkElement,
44
+ react: React,
45
+ });
46
+ export const TuixInput = createComponent({
47
+ tagName: 'tuix-input',
48
+ elementClass: TuixInputElement,
49
+ react: React,
50
+ events: {
51
+ onChange: 'on-change',
52
+ onBlur: 'on-blur',
53
+ onClick: 'on-click',
54
+ },
55
+ });
56
+ export const TuixDropdown = createComponent({
57
+ tagName: 'tuix-dropdown',
58
+ elementClass: TuixDropdownElement,
59
+ react: React,
60
+ events: {
61
+ onSelect: 'select',
62
+ onInputSingle: 'input-single',
63
+ },
64
+ });
65
+ export const TuixCheckbox = createComponent({
66
+ tagName: 'tuix-checkbox',
67
+ elementClass: TuixCheckboxElement,
68
+ react: React,
69
+ events: {
70
+ onChange: 'change',
71
+ },
72
+ });
73
+ export const TuixRadioButton = createComponent({
74
+ tagName: 'tuix-radio-button',
75
+ elementClass: TuixRadioButtonElement,
76
+ react: React,
77
+ events: {
78
+ onChange: 'change',
79
+ },
80
+ });
81
+ export const TuixToggleButton = createComponent({
82
+ tagName: 'tuix-toggle-button',
83
+ elementClass: TuixToggleButtonElement,
84
+ react: React,
85
+ events: {
86
+ onChange: 'change',
87
+ },
88
+ });
89
+ export const TuixTable = createComponent({
90
+ tagName: 'tuix-table',
91
+ elementClass: TuixTableElement,
92
+ react: React,
93
+ events: {
94
+ onNextPage: 'next-page',
95
+ onPreviousPage: 'previous-page',
96
+ onPageSizeChange: 'page-size-change',
97
+ },
98
+ });
99
+ export const TuixToast = createComponent({
100
+ tagName: 'tuix-toast',
101
+ elementClass: TuixToastElement,
102
+ react: React,
103
+ events: {
104
+ onClose: 'on-close',
105
+ },
106
+ });
107
+ export const TuixModal = createComponent({
108
+ tagName: 'tuix-modal',
109
+ elementClass: TuixModalElement,
110
+ react: React,
111
+ events: {
112
+ onClose: 'on-close',
113
+ },
114
+ });
@@ -0,0 +1,17 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import { MainVariant } from '../utils/mainVariant.enum.js';
3
+ import { IconName, IconSizeVariant } from '../tuix-icon/enums/tuix-icon.enums.js';
4
+ import '../tuix-icon/TuixIcon.js';
5
+ export declare abstract class TuixBaseButton extends LitElement {
6
+ variant: MainVariant;
7
+ disabled: boolean;
8
+ dark: boolean;
9
+ protected iconColor: string;
10
+ updated(): void;
11
+ protected _getTextColor(): string;
12
+ protected abstract _updateIconColor(): void;
13
+ protected _handleClick(): void;
14
+ protected _iconTemplate(iconName: IconName, iconSize: IconSizeVariant): TemplateResult;
15
+ protected abstract _buttonContent(): TemplateResult;
16
+ protected render(): TemplateResult;
17
+ }
@@ -0,0 +1,60 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html } from 'lit';
3
+ import { MainVariant } from '../utils/mainVariant.enum.js';
4
+ import { property, state } from 'lit/decorators.js';
5
+ import { buttonTextColor } from './enums/tuix-button.enums.js';
6
+ import '../tuix-icon/TuixIcon.js';
7
+ export class TuixBaseButton extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.variant = MainVariant.PRIMARY;
11
+ this.disabled = false;
12
+ this.dark = false;
13
+ this.iconColor = '';
14
+ }
15
+ updated() {
16
+ this._updateIconColor();
17
+ }
18
+ _getTextColor() {
19
+ const element = this.shadowRoot?.querySelector('.button');
20
+ if (!element)
21
+ return buttonTextColor[this.variant];
22
+ const computedStyle = getComputedStyle(element);
23
+ return computedStyle.color;
24
+ }
25
+ _handleClick() {
26
+ this.dispatchEvent(new CustomEvent('customClick', { bubbles: true }));
27
+ }
28
+ _iconTemplate(iconName, iconSize) {
29
+ this._updateIconColor();
30
+ return html `<tuix-icon
31
+ size="${iconSize}"
32
+ name="${iconName}"
33
+ color="${this.iconColor}"
34
+ ></tuix-icon>`;
35
+ }
36
+ render() {
37
+ return html `<button
38
+ @click=${this._handleClick}
39
+ @mouseenter=${this._updateIconColor}
40
+ @mouseleave=${this._updateIconColor}
41
+ @blur=${this._updateIconColor}
42
+ ?disabled="${this.disabled}"
43
+ class="button"
44
+ >
45
+ ${this._buttonContent()}
46
+ </button>`;
47
+ }
48
+ }
49
+ __decorate([
50
+ property({ type: MainVariant, reflect: true })
51
+ ], TuixBaseButton.prototype, "variant", void 0);
52
+ __decorate([
53
+ property({ type: Boolean, reflect: true })
54
+ ], TuixBaseButton.prototype, "disabled", void 0);
55
+ __decorate([
56
+ property({ type: Boolean, reflect: true })
57
+ ], TuixBaseButton.prototype, "dark", void 0);
58
+ __decorate([
59
+ state()
60
+ ], TuixBaseButton.prototype, "iconColor", void 0);
@@ -0,0 +1,11 @@
1
+ import { type TemplateResult } from 'lit';
2
+ import { IconName } from '../tuix-icon/enums/tuix-icon.enums.js';
3
+ import { TuixBaseButton } from './TuixBaseButton.js';
4
+ export declare class TuixButton extends TuixBaseButton {
5
+ static styles: import("lit").CSSResult[];
6
+ full: boolean;
7
+ iconRight?: IconName;
8
+ iconLeft?: IconName;
9
+ protected _updateIconColor(): void;
10
+ protected _buttonContent(): TemplateResult;
11
+ }
@@ -0,0 +1,84 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, nothing } from 'lit';
3
+ import { IconName, IconSizeVariant } from '../tuix-icon/enums/tuix-icon.enums.js';
4
+ import { buttonSizeStyles, buttonColorStyles, hostButtonStyles, } from './TuixButton.styles.js';
5
+ import { customElement, property } from 'lit/decorators.js';
6
+ import { ScreenSizes } from '../utils/screenSizes.enum.js';
7
+ import { TuixBaseButton } from './TuixBaseButton.js';
8
+ let TuixButton = class TuixButton extends TuixBaseButton {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.full = false;
12
+ }
13
+ static { this.styles = [
14
+ css `
15
+ :host([full]) .button {
16
+ width: 100%;
17
+ }
18
+ .button {
19
+ padding: 16px 32px;
20
+ border-radius: 4px;
21
+ border: none;
22
+ font-family: 'Rubik', sans-serif;
23
+ }
24
+
25
+ @media only screen and (max-width: ${ScreenSizes.TABLET}px) {
26
+ .button {
27
+ padding: 14px 32px;
28
+ }
29
+ }
30
+
31
+ @media only screen and (max-width: ${ScreenSizes.MOBILE}px) {
32
+ .button {
33
+ padding: 12px 24px;
34
+ }
35
+ }
36
+
37
+ .container {
38
+ display: flex;
39
+ flex-direction: row;
40
+ justify-content: center;
41
+ align-items: center;
42
+ gap: 8px;
43
+ }
44
+
45
+ @media only screen and (max-width: ${ScreenSizes.MOBILE}px) {
46
+ .container {
47
+ gap: 6px;
48
+ }
49
+ }
50
+ `,
51
+ hostButtonStyles,
52
+ buttonColorStyles,
53
+ buttonSizeStyles,
54
+ ]; }
55
+ _updateIconColor() {
56
+ if (!this.iconLeft && !this.iconRight)
57
+ return;
58
+ this.iconColor = this._getTextColor();
59
+ }
60
+ _buttonContent() {
61
+ let iconSize = IconSizeVariant.MEDIUM;
62
+ if (screen.width <= ScreenSizes.TABLET) {
63
+ iconSize = IconSizeVariant.SMALL;
64
+ }
65
+ return html ` <div class="container">
66
+ ${this.iconLeft ? this._iconTemplate(this.iconLeft, iconSize) : nothing}
67
+ <slot></slot>
68
+ ${this.iconRight ? this._iconTemplate(this.iconRight, iconSize) : nothing}
69
+ </div>`;
70
+ }
71
+ };
72
+ __decorate([
73
+ property({ type: Boolean, reflect: true })
74
+ ], TuixButton.prototype, "full", void 0);
75
+ __decorate([
76
+ property({ type: IconName })
77
+ ], TuixButton.prototype, "iconRight", void 0);
78
+ __decorate([
79
+ property({ type: IconName })
80
+ ], TuixButton.prototype, "iconLeft", void 0);
81
+ TuixButton = __decorate([
82
+ customElement('tuix-button')
83
+ ], TuixButton);
84
+ export { TuixButton };
@@ -0,0 +1,3 @@
1
+ export declare const hostButtonStyles: import("lit").CSSResult;
2
+ export declare const buttonSizeStyles: import("lit").CSSResult;
3
+ export declare const buttonColorStyles: import("lit").CSSResult;