@adam-milo/ui 1.0.35 → 1.0.41
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.
- package/README.md +217 -337
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -108
- package/dist/index10.cjs +1 -1
- package/dist/index10.js +4 -103
- package/dist/index11.cjs +1 -1
- package/dist/index11.js +4 -230
- package/dist/index12.cjs +1 -1
- package/dist/index12.js +9 -325
- package/dist/index13.cjs +1 -1
- package/dist/index13.js +11 -279
- package/dist/index14.cjs +1 -1
- package/dist/index14.js +2 -150
- package/dist/index15.cjs +1 -1
- package/dist/index15.js +5 -65
- package/dist/index16.cjs +1 -1
- package/dist/index16.js +4 -71
- package/dist/index17.cjs +1 -1
- package/dist/index17.js +4 -125
- package/dist/index18.cjs +1 -1
- package/dist/index18.js +8 -93
- package/dist/index19.cjs +1 -1
- package/dist/index19.js +4 -42
- package/dist/index20.cjs +1 -1
- package/dist/index20.js +2 -482
- package/dist/index21.cjs +1 -1
- package/dist/index21.js +5 -169
- package/dist/index22.cjs +1 -1
- package/dist/index22.js +11 -44
- package/dist/index23.cjs +1 -1
- package/dist/index23.js +2 -38
- package/dist/index24.cjs +1 -1
- package/dist/index24.js +2 -46
- package/dist/index25.cjs +1 -1
- package/dist/index25.js +2 -118
- package/dist/index26.cjs +1 -1
- package/dist/index26.js +7 -55
- package/dist/index27.cjs +1 -1
- package/dist/index27.js +2 -45
- package/dist/index28.cjs +1 -1
- package/dist/index28.js +2 -53
- package/dist/index29.cjs +1 -1
- package/dist/index29.js +2 -55
- package/dist/index3.cjs +1 -1
- package/dist/index3.js +2 -45
- package/dist/index30.cjs +1 -1
- package/dist/index30.js +2 -72
- package/dist/index31.cjs +1 -1
- package/dist/index31.js +10 -14
- package/dist/index32.cjs +1 -1
- package/dist/index32.js +11 -332
- package/dist/index33.cjs +1 -0
- package/dist/index33.js +1 -0
- package/dist/index34.cjs +1 -0
- package/dist/index34.js +1 -0
- package/dist/index35.cjs +1 -0
- package/dist/index35.js +1 -0
- package/dist/index36.cjs +1 -1
- package/dist/index36.js +1 -386
- package/dist/index37.cjs +1 -1
- package/dist/index37.js +1 -16
- package/dist/index38.cjs +1 -0
- package/dist/index38.js +15 -0
- package/dist/index39.cjs +1 -0
- package/dist/index39.js +1 -0
- package/dist/index4.cjs +1 -1
- package/dist/index4.js +3 -70
- package/dist/index40.cjs +1 -0
- package/dist/index40.js +1 -0
- package/dist/index41.cjs +1 -0
- package/dist/index41.js +1 -0
- package/dist/index42.cjs +1 -0
- package/dist/index42.js +1 -0
- package/dist/index43.cjs +1 -0
- package/dist/index43.js +1 -0
- package/dist/index44.cjs +1 -0
- package/dist/index44.js +1 -0
- package/dist/index45.cjs +1 -0
- package/dist/index45.js +1 -0
- package/dist/index46.cjs +1 -0
- package/dist/index46.js +1 -0
- package/dist/index47.cjs +1 -0
- package/dist/index47.js +1 -0
- package/dist/index48.cjs +1 -0
- package/dist/index48.js +1 -0
- package/dist/index49.cjs +1 -0
- package/dist/index49.js +1 -0
- package/dist/index5.cjs +1 -1
- package/dist/index5.js +2 -45
- package/dist/index50.cjs +1 -1
- package/dist/index50.js +1 -9
- package/dist/index51.cjs +1 -0
- package/dist/index51.js +1 -0
- package/dist/index52.cjs +1 -0
- package/dist/index52.js +1 -0
- package/dist/index53.cjs +1 -0
- package/dist/index53.js +1 -0
- package/dist/index54.cjs +1 -0
- package/dist/index54.js +1 -0
- package/dist/index55.cjs +1 -0
- package/dist/index55.js +1 -0
- package/dist/index56.cjs +1 -0
- package/dist/index56.js +1 -0
- package/dist/index57.cjs +1 -0
- package/dist/index57.js +1 -0
- package/dist/index58.cjs +1 -0
- package/dist/index58.js +1 -0
- package/dist/index59.cjs +1 -0
- package/dist/index59.js +1 -0
- package/dist/index6.cjs +1 -1
- package/dist/index6.js +2 -22
- package/dist/index60.cjs +1 -0
- package/dist/index60.js +1 -0
- package/dist/index61.cjs +1 -1
- package/dist/index61.js +1 -21
- package/dist/index62.cjs +1 -1
- package/dist/index62.js +1 -502
- package/dist/index63.cjs +1 -0
- package/dist/index63.js +1 -0
- package/dist/index64.cjs +1 -1
- package/dist/index64.js +1 -11
- package/dist/index65.cjs +1 -1
- package/dist/index65.js +5 -39
- package/dist/index66.cjs +1 -1
- package/dist/index66.js +1 -64
- package/dist/index67.cjs +1 -1
- package/dist/index67.js +1 -212
- package/dist/index68.cjs +1 -1
- package/dist/index68.js +1 -14
- package/dist/index69.cjs +1 -1
- package/dist/index69.js +2 -293
- package/dist/index7.cjs +1 -1
- package/dist/index7.js +1 -61
- package/dist/index70.cjs +1 -1
- package/dist/index70.js +1 -18
- package/dist/index71.cjs +1 -1
- package/dist/index71.js +1 -129
- package/dist/index72.cjs +1 -1
- package/dist/index72.js +4 -43
- package/dist/index73.cjs +1 -1
- package/dist/index73.js +1 -99
- package/dist/index74.cjs +1 -1
- package/dist/index74.js +1 -71
- package/dist/index75.cjs +1 -1
- package/dist/index75.js +1 -36
- package/dist/index76.cjs +1 -1
- package/dist/index76.js +3 -14
- package/dist/index77.cjs +1 -1
- package/dist/index77.js +1 -17
- package/dist/index78.cjs +1 -1
- package/dist/index78.js +1 -6
- package/dist/index79.cjs +1 -1
- package/dist/index79.js +1 -297
- package/dist/index8.cjs +1 -1
- package/dist/index8.js +2 -112
- package/dist/index80.cjs +1 -1
- package/dist/index80.js +1 -25
- package/dist/index81.cjs +1 -1
- package/dist/index81.js +1 -39
- package/dist/index82.cjs +1 -1
- package/dist/index82.js +1 -625
- package/dist/index83.cjs +1 -1
- package/dist/index83.js +2 -721
- package/dist/index84.cjs +1 -1
- package/dist/index84.js +1 -154
- package/dist/index85.cjs +1 -1
- package/dist/index85.js +1 -173
- package/dist/index86.cjs +1 -0
- package/dist/index86.js +1 -0
- package/dist/index87.cjs +1 -0
- package/dist/index87.js +1 -0
- package/dist/index88.cjs +1 -0
- package/dist/index88.js +1 -0
- package/dist/index9.cjs +1 -1
- package/dist/index9.js +2 -112
- package/dist/src/components/core/button/Button.component.d.ts +2 -35
- package/dist/src/components/core/button/Button.component.d.ts.map +1 -1
- package/dist/src/components/core/button/Button.styles.d.ts +5 -0
- package/dist/src/components/core/button/Button.styles.d.ts.map +1 -0
- package/dist/src/components/core/button/Button.types.d.ts +11 -0
- package/dist/src/components/core/button/Button.types.d.ts.map +1 -0
- package/dist/src/components/core/icon-button/IconButton.component.d.ts +2 -33
- package/dist/src/components/core/icon-button/IconButton.component.d.ts.map +1 -1
- package/dist/src/components/core/icon-button/IconButton.styles.d.ts +3 -0
- package/dist/src/components/core/icon-button/IconButton.styles.d.ts.map +1 -0
- package/dist/src/components/core/icon-button/IconButton.types.d.ts +12 -0
- package/dist/src/components/core/icon-button/IconButton.types.d.ts.map +1 -0
- package/dist/src/components/core/menu-icon-button/MenuIconButton.component.d.ts +2 -76
- package/dist/src/components/core/menu-icon-button/MenuIconButton.component.d.ts.map +1 -1
- package/dist/src/components/core/menu-icon-button/MenuIconButton.styles.d.ts +9 -0
- package/dist/src/components/core/menu-icon-button/MenuIconButton.styles.d.ts.map +1 -0
- package/dist/src/components/core/menu-icon-button/MenuIconButton.types.d.ts +11 -0
- package/dist/src/components/core/menu-icon-button/MenuIconButton.types.d.ts.map +1 -0
- package/dist/src/components/data-display/card/Card.component.d.ts +2 -34
- package/dist/src/components/data-display/card/Card.component.d.ts.map +1 -1
- package/dist/src/components/data-display/card/Card.styles.d.ts +12 -0
- package/dist/src/components/data-display/card/Card.styles.d.ts.map +1 -0
- package/dist/src/components/data-display/card/Card.types.d.ts +28 -0
- package/dist/src/components/data-display/card/Card.types.d.ts.map +1 -0
- package/dist/src/components/data-display/chip/Chip.component.d.ts +2 -33
- package/dist/src/components/data-display/chip/Chip.component.d.ts.map +1 -1
- package/dist/src/components/data-display/chip/Chip.styles.d.ts +24 -0
- package/dist/src/components/data-display/chip/Chip.styles.d.ts.map +1 -0
- package/dist/src/components/data-display/chip/Chip.types.d.ts +11 -0
- package/dist/src/components/data-display/chip/Chip.types.d.ts.map +1 -0
- package/dist/src/components/data-display/chip-group/ChipGroup.component.d.ts +2 -69
- package/dist/src/components/data-display/chip-group/ChipGroup.component.d.ts.map +1 -1
- package/dist/src/components/data-display/chip-group/ChipGroup.styles.d.ts +14 -0
- package/dist/src/components/data-display/chip-group/ChipGroup.styles.d.ts.map +1 -0
- package/dist/src/components/data-display/chip-group/ChipGroup.types.d.ts +21 -0
- package/dist/src/components/data-display/chip-group/ChipGroup.types.d.ts.map +1 -0
- package/dist/src/components/data-display/datatable/DataTable.component.d.ts +2 -22
- package/dist/src/components/data-display/datatable/DataTable.component.d.ts.map +1 -1
- package/dist/src/components/data-display/datatable/DataTable.styles.d.ts +10 -0
- package/dist/src/components/data-display/datatable/DataTable.styles.d.ts.map +1 -0
- package/dist/src/components/data-display/datatable/DataTable.types.d.ts +16 -0
- package/dist/src/components/data-display/datatable/DataTable.types.d.ts.map +1 -0
- package/dist/src/components/feedback/ai-loader/AiLoader.component.d.ts +5 -0
- package/dist/src/components/feedback/ai-loader/AiLoader.component.d.ts.map +1 -0
- package/dist/src/components/feedback/ai-loader/AiLoader.styles.d.ts +5 -0
- package/dist/src/components/feedback/ai-loader/AiLoader.styles.d.ts.map +1 -0
- package/dist/src/components/feedback/ai-loader/AiLoader.types.d.ts +10 -0
- package/dist/src/components/feedback/ai-loader/AiLoader.types.d.ts.map +1 -0
- package/dist/src/components/feedback/alert/Alert.component.d.ts +2 -16
- package/dist/src/components/feedback/alert/Alert.component.d.ts.map +1 -1
- package/dist/src/components/feedback/alert/Alert.styles.d.ts +10 -0
- package/dist/src/components/feedback/alert/Alert.styles.d.ts.map +1 -0
- package/dist/src/components/feedback/alert/Alert.types.d.ts +10 -0
- package/dist/src/components/feedback/alert/Alert.types.d.ts.map +1 -0
- package/dist/src/components/feedback/spinner/Spinner.component.d.ts +2 -59
- package/dist/src/components/feedback/spinner/Spinner.component.d.ts.map +1 -1
- package/dist/src/components/feedback/spinner/Spinner.styles.d.ts +7 -0
- package/dist/src/components/feedback/spinner/Spinner.styles.d.ts.map +1 -0
- package/dist/src/components/feedback/spinner/Spinner.types.d.ts +14 -0
- package/dist/src/components/feedback/spinner/Spinner.types.d.ts.map +1 -0
- package/dist/src/components/forms/alphanumeric-input/AlphanumericInput.component.d.ts +2 -44
- package/dist/src/components/forms/alphanumeric-input/AlphanumericInput.component.d.ts.map +1 -1
- package/dist/src/components/forms/alphanumeric-input/AlphanumericInput.types.d.ts +10 -0
- package/dist/src/components/forms/alphanumeric-input/AlphanumericInput.types.d.ts.map +1 -0
- package/dist/src/components/forms/checkbox/Checkbox.component.d.ts +2 -99
- package/dist/src/components/forms/checkbox/Checkbox.component.d.ts.map +1 -1
- package/dist/src/components/forms/checkbox/Checkbox.styles.d.ts +10 -0
- package/dist/src/components/forms/checkbox/Checkbox.styles.d.ts.map +1 -0
- package/dist/src/components/forms/checkbox/Checkbox.types.d.ts +17 -0
- package/dist/src/components/forms/checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/src/components/forms/email-input/EmailInput.component.d.ts +2 -28
- package/dist/src/components/forms/email-input/EmailInput.component.d.ts.map +1 -1
- package/dist/src/components/forms/email-input/EmailInput.types.d.ts +7 -0
- package/dist/src/components/forms/email-input/EmailInput.types.d.ts.map +1 -0
- package/dist/src/components/forms/input/Input.component.d.ts +2 -107
- package/dist/src/components/forms/input/Input.component.d.ts.map +1 -1
- package/dist/src/components/forms/input/Input.styles.d.ts +13 -0
- package/dist/src/components/forms/input/Input.styles.d.ts.map +1 -0
- package/dist/src/components/forms/input/Input.types.d.ts +17 -0
- package/dist/src/components/forms/input/Input.types.d.ts.map +1 -0
- package/dist/src/components/forms/numeric-input/NumericInput.component.d.ts +2 -41
- package/dist/src/components/forms/numeric-input/NumericInput.component.d.ts.map +1 -1
- package/dist/src/components/forms/numeric-input/NumericInput.types.d.ts +9 -0
- package/dist/src/components/forms/numeric-input/NumericInput.types.d.ts.map +1 -0
- package/dist/src/components/forms/otp-input/OTPInput.component.d.ts +2 -79
- package/dist/src/components/forms/otp-input/OTPInput.component.d.ts.map +1 -1
- package/dist/src/components/forms/otp-input/OTPInput.styles.d.ts +12 -0
- package/dist/src/components/forms/otp-input/OTPInput.styles.d.ts.map +1 -0
- package/dist/src/components/forms/otp-input/OTPInput.types.d.ts +23 -0
- package/dist/src/components/forms/otp-input/OTPInput.types.d.ts.map +1 -0
- package/dist/src/components/forms/password-input/PasswordInput.component.d.ts +2 -25
- package/dist/src/components/forms/password-input/PasswordInput.component.d.ts.map +1 -1
- package/dist/src/components/forms/password-input/PasswordInput.types.d.ts +6 -0
- package/dist/src/components/forms/password-input/PasswordInput.types.d.ts.map +1 -0
- package/dist/src/components/forms/phone-input/PhoneInput.component.d.ts +2 -91
- package/dist/src/components/forms/phone-input/PhoneInput.component.d.ts.map +1 -1
- package/dist/src/components/forms/phone-input/PhoneInput.styles.d.ts +22 -0
- package/dist/src/components/forms/phone-input/PhoneInput.styles.d.ts.map +1 -0
- package/dist/src/components/forms/phone-input/PhoneInput.types.d.ts +19 -0
- package/dist/src/components/forms/phone-input/PhoneInput.types.d.ts.map +1 -0
- package/dist/src/components/forms/phone-input/countries.d.ts +3 -79
- package/dist/src/components/forms/phone-input/countries.d.ts.map +1 -1
- package/dist/src/components/forms/phone-input/countries.types.d.ts +12 -0
- package/dist/src/components/forms/phone-input/countries.types.d.ts.map +1 -0
- package/dist/src/components/forms/radio/Radio.component.d.ts +2 -97
- package/dist/src/components/forms/radio/Radio.component.d.ts.map +1 -1
- package/dist/src/components/forms/radio/Radio.styles.d.ts +10 -0
- package/dist/src/components/forms/radio/Radio.styles.d.ts.map +1 -0
- package/dist/src/components/forms/radio/Radio.types.d.ts +16 -0
- package/dist/src/components/forms/radio/Radio.types.d.ts.map +1 -0
- package/dist/src/components/forms/select/Select.component.d.ts +2 -94
- package/dist/src/components/forms/select/Select.component.d.ts.map +1 -1
- package/dist/src/components/forms/select/Select.styles.d.ts +18 -0
- package/dist/src/components/forms/select/Select.styles.d.ts.map +1 -0
- package/dist/src/components/forms/select/Select.types.d.ts +34 -0
- package/dist/src/components/forms/select/Select.types.d.ts.map +1 -0
- package/dist/src/components/forms/toggle/Toggle.component.d.ts +2 -77
- package/dist/src/components/forms/toggle/Toggle.component.d.ts.map +1 -1
- package/dist/src/components/forms/toggle/Toggle.styles.d.ts +23 -0
- package/dist/src/components/forms/toggle/Toggle.styles.d.ts.map +1 -0
- package/dist/src/components/forms/toggle/Toggle.types.d.ts +14 -0
- package/dist/src/components/forms/toggle/Toggle.types.d.ts.map +1 -0
- package/dist/src/components/layout/auth-layout/AuthLayout.component.d.ts +2 -83
- package/dist/src/components/layout/auth-layout/AuthLayout.component.d.ts.map +1 -1
- package/dist/src/components/layout/auth-layout/AuthLayout.styles.d.ts +11 -0
- package/dist/src/components/layout/auth-layout/AuthLayout.styles.d.ts.map +1 -0
- package/dist/src/components/layout/auth-layout/AuthLayout.types.d.ts +16 -0
- package/dist/src/components/layout/auth-layout/AuthLayout.types.d.ts.map +1 -0
- package/dist/src/components/layout/container/Container.component.d.ts +2 -23
- package/dist/src/components/layout/container/Container.component.d.ts.map +1 -1
- package/dist/src/components/layout/container/Container.styles.d.ts +15 -0
- package/dist/src/components/layout/container/Container.styles.d.ts.map +1 -0
- package/dist/src/components/layout/container/Container.types.d.ts +9 -0
- package/dist/src/components/layout/container/Container.types.d.ts.map +1 -0
- package/dist/src/components/layout/divider/Divider.component.d.ts +2 -36
- package/dist/src/components/layout/divider/Divider.component.d.ts.map +1 -1
- package/dist/src/components/layout/divider/Divider.styles.d.ts +4 -0
- package/dist/src/components/layout/divider/Divider.styles.d.ts.map +1 -0
- package/dist/src/components/layout/divider/Divider.types.d.ts +11 -0
- package/dist/src/components/layout/divider/Divider.types.d.ts.map +1 -0
- package/dist/src/components/layout/grid/Grid.component.d.ts +2 -50
- package/dist/src/components/layout/grid/Grid.component.d.ts.map +1 -1
- package/dist/src/components/layout/grid/Grid.styles.d.ts +79 -0
- package/dist/src/components/layout/grid/Grid.styles.d.ts.map +1 -0
- package/dist/src/components/layout/grid/Grid.types.d.ts +15 -0
- package/dist/src/components/layout/grid/Grid.types.d.ts.map +1 -0
- package/dist/src/components/layout/stack/Stack.component.d.ts +2 -18
- package/dist/src/components/layout/stack/Stack.component.d.ts.map +1 -1
- package/dist/src/components/layout/stack/Stack.styles.d.ts +5 -0
- package/dist/src/components/layout/stack/Stack.styles.d.ts.map +1 -0
- package/dist/src/components/layout/stack/Stack.types.d.ts +12 -0
- package/dist/src/components/layout/stack/Stack.types.d.ts.map +1 -0
- package/dist/src/components/navigation/tabs/Tabs.component.d.ts +2 -38
- package/dist/src/components/navigation/tabs/Tabs.component.d.ts.map +1 -1
- package/dist/src/components/navigation/tabs/Tabs.styles.d.ts +4 -0
- package/dist/src/components/navigation/tabs/Tabs.styles.d.ts.map +1 -0
- package/dist/src/components/navigation/tabs/Tabs.types.d.ts +17 -0
- package/dist/src/components/navigation/tabs/Tabs.types.d.ts.map +1 -0
- package/dist/src/components/overlays/dialog/Dialog.component.d.ts +2 -55
- package/dist/src/components/overlays/dialog/Dialog.component.d.ts.map +1 -1
- package/dist/src/components/overlays/dialog/Dialog.styles.d.ts +20 -0
- package/dist/src/components/overlays/dialog/Dialog.styles.d.ts.map +1 -0
- package/dist/src/components/overlays/dialog/Dialog.types.d.ts +41 -0
- package/dist/src/components/overlays/dialog/Dialog.types.d.ts.map +1 -0
- package/dist/src/components/typography/heading/Heading.component.d.ts +2 -89
- package/dist/src/components/typography/heading/Heading.component.d.ts.map +1 -1
- package/dist/src/components/typography/heading/Heading.styles.d.ts +9 -0
- package/dist/src/components/typography/heading/Heading.styles.d.ts.map +1 -0
- package/dist/src/components/typography/heading/Heading.types.d.ts +19 -0
- package/dist/src/components/typography/heading/Heading.types.d.ts.map +1 -0
- package/dist/src/components/typography/link/Link.component.d.ts +2 -77
- package/dist/src/components/typography/link/Link.component.d.ts.map +1 -1
- package/dist/src/components/typography/link/Link.styles.d.ts +9 -0
- package/dist/src/components/typography/link/Link.styles.d.ts.map +1 -0
- package/dist/src/components/typography/link/Link.types.d.ts +17 -0
- package/dist/src/components/typography/link/Link.types.d.ts.map +1 -0
- package/dist/src/components/typography/text/Text.component.d.ts +4 -91
- package/dist/src/components/typography/text/Text.component.d.ts.map +1 -1
- package/dist/src/components/typography/text/Text.styles.d.ts +8 -0
- package/dist/src/components/typography/text/Text.styles.d.ts.map +1 -0
- package/dist/src/components/typography/text/Text.types.d.ts +20 -0
- package/dist/src/components/typography/text/Text.types.d.ts.map +1 -0
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/styles.css +1 -0
- package/package.json +8 -13
- package/dist/index2.cjs +0 -1
- package/dist/index2.js +0 -40
- package/dist/style.css +0 -1
package/README.md
CHANGED
|
@@ -1,461 +1,341 @@
|
|
|
1
1
|
# @adam-milo/ui
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A modern, accessible React component library built with TypeScript and Tailwind CSS v4.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
[](https://opensource.org/licenses/MIT)
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 🎨 Features
|
|
11
|
-
|
|
12
|
-
- **React 18** with TypeScript for type-safe development
|
|
13
|
-
- **Modern CSS** with native nesting and logical properties for RTL support
|
|
14
|
-
- **TailwindCSS** integration with comprehensive design tokens
|
|
15
|
-
- **Radix UI** primitives for accessible components
|
|
16
|
-
- **Fully Typed** with comprehensive TypeScript definitions
|
|
17
|
-
- **Tested** with Vitest and React Testing Library
|
|
18
|
-
- **Documented** with Storybook
|
|
19
|
-
- **Accessible** - WCAG compliant components
|
|
20
|
-
- **RTL Ready** - Built-in right-to-left language support
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## 📦 Installation
|
|
5
|
+
## Installation
|
|
25
6
|
|
|
26
7
|
```bash
|
|
27
8
|
npm install @adam-milo/ui
|
|
28
|
-
# or
|
|
29
|
-
yarn add @adam-milo/ui
|
|
30
|
-
# or
|
|
31
|
-
pnpm add @adam-milo/ui
|
|
32
9
|
```
|
|
33
10
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Make sure you have React 18+ installed:
|
|
11
|
+
## Setup
|
|
37
12
|
|
|
38
|
-
|
|
39
|
-
npm install react react-dom
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 🚀 Quick Start
|
|
45
|
-
|
|
46
|
-
### 1. Import Styles
|
|
47
|
-
|
|
48
|
-
Import the styles in your app's entry point:
|
|
13
|
+
Import styles once in your app entry:
|
|
49
14
|
|
|
50
15
|
```tsx
|
|
51
|
-
//
|
|
16
|
+
// main.tsx or App.tsx
|
|
52
17
|
import '@adam-milo/ui/styles.css';
|
|
53
18
|
```
|
|
54
19
|
|
|
55
|
-
|
|
20
|
+
## Usage
|
|
56
21
|
|
|
57
22
|
```tsx
|
|
58
|
-
import { Button,
|
|
23
|
+
import { Button, Stack, Checkbox } from '@adam-milo/ui';
|
|
59
24
|
|
|
60
25
|
function App() {
|
|
61
26
|
return (
|
|
62
|
-
<
|
|
63
|
-
<
|
|
64
|
-
<
|
|
65
|
-
<
|
|
66
|
-
</
|
|
27
|
+
<Stack spacing="4">
|
|
28
|
+
<Button variant="main-orange">Submit</Button>
|
|
29
|
+
<Button variant="secondary-blue">Cancel</Button>
|
|
30
|
+
<Checkbox label="I agree to the terms" />
|
|
31
|
+
</Stack>
|
|
67
32
|
);
|
|
68
33
|
}
|
|
69
34
|
```
|
|
70
35
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
Full TypeScript support out of the box:
|
|
74
|
-
|
|
75
|
-
```tsx
|
|
76
|
-
import { Button, type ButtonProps } from '@adam-milo/ui';
|
|
77
|
-
|
|
78
|
-
const MyButton: React.FC<{ customProp: string }> = ({ customProp }) => {
|
|
79
|
-
const buttonProps: ButtonProps = {
|
|
80
|
-
variant: 'primary-workspace',
|
|
81
|
-
fullWidth: true,
|
|
82
|
-
onClick: () => console.log(customProp),
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
return <Button {...buttonProps}>Click me</Button>;
|
|
86
|
-
};
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## 📚 Components
|
|
92
|
-
|
|
93
|
-
### Core Components
|
|
36
|
+
## Components
|
|
94
37
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Multiple variants with full accessibility support:
|
|
38
|
+
### Button
|
|
98
39
|
|
|
99
40
|
```tsx
|
|
100
41
|
import { Button } from '@adam-milo/ui';
|
|
101
42
|
|
|
102
43
|
// Variants
|
|
103
|
-
<Button variant="
|
|
104
|
-
<Button variant="
|
|
105
|
-
<Button variant="secondary">Secondary</Button>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
<Button
|
|
110
|
-
variant="primary-workspace"
|
|
111
|
-
iconLeft={<Icon name="plus" />}
|
|
112
|
-
>
|
|
44
|
+
<Button variant="main-orange">Main Orange</Button>
|
|
45
|
+
<Button variant="secondary-orange">Secondary Orange</Button>
|
|
46
|
+
<Button variant="secondary-blue">Secondary Blue</Button>
|
|
47
|
+
|
|
48
|
+
// With icon
|
|
49
|
+
<Button variant="main-orange" icon={<Icon name="PlusIcon" />}>
|
|
113
50
|
Add Item
|
|
114
51
|
</Button>
|
|
115
52
|
|
|
116
53
|
// Full width
|
|
117
|
-
<Button variant="
|
|
54
|
+
<Button variant="main-orange" fullWidth>
|
|
118
55
|
Submit
|
|
119
56
|
</Button>
|
|
120
57
|
|
|
121
|
-
// Disabled
|
|
122
|
-
<Button variant="
|
|
123
|
-
|
|
58
|
+
// Disabled
|
|
59
|
+
<Button variant="main-orange" disabled>
|
|
60
|
+
Disabled
|
|
124
61
|
</Button>
|
|
125
62
|
```
|
|
126
63
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
SVG icon wrapper component:
|
|
64
|
+
### EmailInput
|
|
130
65
|
|
|
131
66
|
```tsx
|
|
132
|
-
import {
|
|
133
|
-
|
|
134
|
-
<
|
|
67
|
+
import { EmailInput } from '@adam-milo/ui';
|
|
68
|
+
|
|
69
|
+
<EmailInput
|
|
70
|
+
label="Email"
|
|
71
|
+
placeholder="Enter your email"
|
|
72
|
+
value={email}
|
|
73
|
+
onChange={(e) => setEmail(e.target.value)}
|
|
74
|
+
error={error}
|
|
75
|
+
helperText="We'll never share your email"
|
|
76
|
+
/>;
|
|
135
77
|
```
|
|
136
78
|
|
|
137
|
-
###
|
|
79
|
+
### PasswordInput
|
|
138
80
|
|
|
139
|
-
|
|
81
|
+
```tsx
|
|
82
|
+
import { PasswordInput } from '@adam-milo/ui';
|
|
83
|
+
|
|
84
|
+
<PasswordInput
|
|
85
|
+
label="Password"
|
|
86
|
+
placeholder="Enter your password"
|
|
87
|
+
value={password}
|
|
88
|
+
onChange={(e) => setPassword(e.target.value)}
|
|
89
|
+
error={error}
|
|
90
|
+
/>;
|
|
91
|
+
```
|
|
140
92
|
|
|
141
|
-
|
|
93
|
+
### PhoneInput
|
|
142
94
|
|
|
143
95
|
```tsx
|
|
144
|
-
import {
|
|
96
|
+
import { PhoneInput } from '@adam-milo/ui';
|
|
145
97
|
|
|
146
|
-
<
|
|
98
|
+
<PhoneInput label="Phone Number" value={phone} onChange={setPhone} defaultCountry="IL" />;
|
|
147
99
|
```
|
|
148
100
|
|
|
149
|
-
###
|
|
150
|
-
|
|
151
|
-
#### Stack
|
|
152
|
-
|
|
153
|
-
Flexbox-based spacing utility:
|
|
101
|
+
### OTPInput
|
|
154
102
|
|
|
155
103
|
```tsx
|
|
156
|
-
import {
|
|
104
|
+
import { OTPInput } from '@adam-milo/ui';
|
|
157
105
|
|
|
158
|
-
<
|
|
159
|
-
<Button>Button 1</Button>
|
|
160
|
-
<Button>Button 2</Button>
|
|
161
|
-
</Stack>;
|
|
106
|
+
<OTPInput length={6} value={otp} onChange={setOtp} onComplete={(code) => verifyCode(code)} />;
|
|
162
107
|
```
|
|
163
108
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
Content container with elevation:
|
|
109
|
+
### Checkbox
|
|
167
110
|
|
|
168
111
|
```tsx
|
|
169
|
-
import {
|
|
112
|
+
import { Checkbox } from '@adam-milo/ui';
|
|
170
113
|
|
|
171
|
-
<
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
114
|
+
<Checkbox
|
|
115
|
+
label="I agree to the terms"
|
|
116
|
+
checked={checked}
|
|
117
|
+
onChange={(e) => setChecked(e.target.checked)}
|
|
118
|
+
/>;
|
|
175
119
|
```
|
|
176
120
|
|
|
177
|
-
###
|
|
121
|
+
### Radio
|
|
178
122
|
|
|
179
|
-
|
|
123
|
+
```tsx
|
|
124
|
+
import { Radio } from '@adam-milo/ui';
|
|
125
|
+
|
|
126
|
+
<Radio
|
|
127
|
+
name="plan"
|
|
128
|
+
label="Basic Plan"
|
|
129
|
+
value="basic"
|
|
130
|
+
checked={plan === 'basic'}
|
|
131
|
+
onChange={(e) => setPlan(e.target.value)}
|
|
132
|
+
/>;
|
|
133
|
+
```
|
|
180
134
|
|
|
181
|
-
|
|
135
|
+
### Toggle
|
|
182
136
|
|
|
183
137
|
```tsx
|
|
184
|
-
import {
|
|
138
|
+
import { Toggle } from '@adam-milo/ui';
|
|
185
139
|
|
|
186
|
-
<
|
|
140
|
+
<Toggle label="Enable notifications" checked={enabled} onChange={setEnabled} />;
|
|
187
141
|
```
|
|
188
142
|
|
|
189
|
-
###
|
|
143
|
+
### Select
|
|
190
144
|
|
|
191
|
-
|
|
145
|
+
```tsx
|
|
146
|
+
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '@adam-milo/ui';
|
|
147
|
+
|
|
148
|
+
<Select value={value} onValueChange={setValue}>
|
|
149
|
+
<SelectTrigger>
|
|
150
|
+
<SelectValue placeholder="Select option" />
|
|
151
|
+
</SelectTrigger>
|
|
152
|
+
<SelectContent>
|
|
153
|
+
<SelectItem value="option1">Option 1</SelectItem>
|
|
154
|
+
<SelectItem value="option2">Option 2</SelectItem>
|
|
155
|
+
</SelectContent>
|
|
156
|
+
</Select>;
|
|
157
|
+
```
|
|
192
158
|
|
|
193
|
-
|
|
159
|
+
### Stack
|
|
194
160
|
|
|
195
161
|
```tsx
|
|
196
|
-
import {
|
|
162
|
+
import { Stack } from '@adam-milo/ui';
|
|
197
163
|
|
|
198
|
-
|
|
199
|
-
<
|
|
200
|
-
<
|
|
201
|
-
<
|
|
164
|
+
// Vertical stack (default)
|
|
165
|
+
<Stack spacing="4">
|
|
166
|
+
<div>Item 1</div>
|
|
167
|
+
<div>Item 2</div>
|
|
168
|
+
</Stack>
|
|
169
|
+
|
|
170
|
+
// Horizontal stack
|
|
171
|
+
<Stack direction="horizontal" spacing="4">
|
|
172
|
+
<div>Item 1</div>
|
|
173
|
+
<div>Item 2</div>
|
|
174
|
+
</Stack>
|
|
202
175
|
```
|
|
203
176
|
|
|
204
|
-
###
|
|
205
|
-
|
|
206
|
-
#### Tabs
|
|
207
|
-
|
|
208
|
-
Accessible tabbed interface:
|
|
177
|
+
### Grid
|
|
209
178
|
|
|
210
179
|
```tsx
|
|
211
|
-
import {
|
|
180
|
+
import { Grid } from '@adam-milo/ui';
|
|
212
181
|
|
|
213
|
-
<
|
|
214
|
-
<
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
<Tabs.Content value="tab1">Content 1</Tabs.Content>
|
|
219
|
-
<Tabs.Content value="tab2">Content 2</Tabs.Content>
|
|
220
|
-
</Tabs>;
|
|
182
|
+
<Grid columns={3} gap="4">
|
|
183
|
+
<div>Cell 1</div>
|
|
184
|
+
<div>Cell 2</div>
|
|
185
|
+
<div>Cell 3</div>
|
|
186
|
+
</Grid>;
|
|
221
187
|
```
|
|
222
188
|
|
|
223
|
-
###
|
|
189
|
+
### Card
|
|
224
190
|
|
|
225
|
-
|
|
191
|
+
```tsx
|
|
192
|
+
import { Card, CardHeader, CardTitle, CardContent, CardFooter } from '@adam-milo/ui';
|
|
193
|
+
|
|
194
|
+
<Card>
|
|
195
|
+
<CardHeader>
|
|
196
|
+
<CardTitle>Card Title</CardTitle>
|
|
197
|
+
</CardHeader>
|
|
198
|
+
<CardContent>Card content goes here</CardContent>
|
|
199
|
+
<CardFooter>
|
|
200
|
+
<Button>Action</Button>
|
|
201
|
+
</CardFooter>
|
|
202
|
+
</Card>;
|
|
203
|
+
```
|
|
226
204
|
|
|
227
|
-
|
|
205
|
+
### Dialog
|
|
228
206
|
|
|
229
207
|
```tsx
|
|
230
|
-
import {
|
|
208
|
+
import {
|
|
209
|
+
Dialog,
|
|
210
|
+
DialogTrigger,
|
|
211
|
+
DialogContent,
|
|
212
|
+
DialogHeader,
|
|
213
|
+
DialogTitle,
|
|
214
|
+
DialogDescription,
|
|
215
|
+
} from '@adam-milo/ui';
|
|
231
216
|
|
|
232
217
|
<Dialog>
|
|
233
|
-
<
|
|
218
|
+
<DialogTrigger asChild>
|
|
234
219
|
<Button>Open Dialog</Button>
|
|
235
|
-
</
|
|
236
|
-
<
|
|
237
|
-
<
|
|
238
|
-
|
|
239
|
-
|
|
220
|
+
</DialogTrigger>
|
|
221
|
+
<DialogContent>
|
|
222
|
+
<DialogHeader>
|
|
223
|
+
<DialogTitle>Dialog Title</DialogTitle>
|
|
224
|
+
<DialogDescription>Dialog description here.</DialogDescription>
|
|
225
|
+
</DialogHeader>
|
|
226
|
+
<p>Dialog content</p>
|
|
227
|
+
</DialogContent>
|
|
240
228
|
</Dialog>;
|
|
241
229
|
```
|
|
242
230
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
## 🎨 Design Tokens
|
|
246
|
-
|
|
247
|
-
### CSS Variables
|
|
248
|
-
|
|
249
|
-
All design tokens are available as CSS custom properties:
|
|
231
|
+
### Tabs
|
|
250
232
|
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
--color-text: #191a39;
|
|
254
|
-
--color-action: #272643;
|
|
255
|
-
--color-popup: #ed6726;
|
|
256
|
-
--color-card: #ffffff;
|
|
257
|
-
|
|
258
|
-
/* Spacing */
|
|
259
|
-
--spacing-1: 0.25rem; /* 4px */
|
|
260
|
-
--spacing-2: 0.5rem; /* 8px */
|
|
261
|
-
--spacing-4: 1rem; /* 16px */
|
|
262
|
-
|
|
263
|
-
/* Typography */
|
|
264
|
-
--font-size-8: 1rem; /* 16px */
|
|
265
|
-
--font-size-6: 1.25rem; /* 20px */
|
|
233
|
+
```tsx
|
|
234
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from '@adam-milo/ui';
|
|
266
235
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
236
|
+
<Tabs defaultValue="tab1">
|
|
237
|
+
<TabsList>
|
|
238
|
+
<TabsTrigger value="tab1">Tab 1</TabsTrigger>
|
|
239
|
+
<TabsTrigger value="tab2">Tab 2</TabsTrigger>
|
|
240
|
+
</TabsList>
|
|
241
|
+
<TabsContent value="tab1">Content 1</TabsContent>
|
|
242
|
+
<TabsContent value="tab2">Content 2</TabsContent>
|
|
243
|
+
</Tabs>;
|
|
270
244
|
```
|
|
271
245
|
|
|
272
|
-
###
|
|
246
|
+
### Alert
|
|
273
247
|
|
|
274
248
|
```tsx
|
|
275
|
-
|
|
276
|
-
const CustomComponent = styled.div`
|
|
277
|
-
color: var(--color-text);
|
|
278
|
-
padding: var(--spacing-4);
|
|
279
|
-
border-radius: var(--radius-default);
|
|
280
|
-
`;
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
## ♿ Accessibility
|
|
286
|
-
|
|
287
|
-
All components follow WCAG 2.1 Level AA guidelines:
|
|
288
|
-
|
|
289
|
-
- ✅ Semantic HTML structure
|
|
290
|
-
- ✅ ARIA attributes where needed
|
|
291
|
-
- ✅ Keyboard navigation support
|
|
292
|
-
- ✅ Focus management
|
|
293
|
-
- ✅ Screen reader friendly
|
|
294
|
-
- ✅ Color contrast compliance
|
|
295
|
-
- ✅ Focus-visible indicators
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## 🌍 RTL Support
|
|
300
|
-
|
|
301
|
-
Components automatically support right-to-left languages:
|
|
249
|
+
import { Alert } from '@adam-milo/ui';
|
|
302
250
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
<
|
|
306
|
-
|
|
307
|
-
<App />
|
|
308
|
-
</body>
|
|
309
|
-
</html>
|
|
251
|
+
<Alert variant="success">Operation completed successfully!</Alert>
|
|
252
|
+
<Alert variant="error">Something went wrong.</Alert>
|
|
253
|
+
<Alert variant="warning">Please check your input.</Alert>
|
|
254
|
+
<Alert variant="info">Here's some information.</Alert>
|
|
310
255
|
```
|
|
311
256
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
## 🧪 Testing
|
|
317
|
-
|
|
318
|
-
### Unit Tests
|
|
257
|
+
### Heading & Text
|
|
319
258
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
```bash
|
|
323
|
-
npm run test
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
Watch mode:
|
|
259
|
+
```tsx
|
|
260
|
+
import { Heading, Text } from '@adam-milo/ui';
|
|
327
261
|
|
|
328
|
-
|
|
329
|
-
|
|
262
|
+
<Heading level="h1" size="xl">Page Title</Heading>
|
|
263
|
+
<Heading level="h2" size="lg">Section Title</Heading>
|
|
264
|
+
<Text size="md">Body text content</Text>
|
|
265
|
+
<Text size="sm" color="secondary">Secondary text</Text>
|
|
330
266
|
```
|
|
331
267
|
|
|
332
|
-
###
|
|
333
|
-
|
|
334
|
-
Cypress tests are available in the main repository.
|
|
335
|
-
|
|
336
|
-
---
|
|
268
|
+
### Spinner
|
|
337
269
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
### Storybook
|
|
341
|
-
|
|
342
|
-
View interactive component documentation:
|
|
270
|
+
```tsx
|
|
271
|
+
import { Spinner } from '@adam-milo/ui';
|
|
343
272
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
273
|
+
<Spinner size="sm" />
|
|
274
|
+
<Spinner size="md" />
|
|
275
|
+
<Spinner size="lg" />
|
|
276
|
+
```
|
|
348
277
|
|
|
349
|
-
|
|
350
|
-
npm install
|
|
278
|
+
### Chip
|
|
351
279
|
|
|
352
|
-
|
|
353
|
-
|
|
280
|
+
```tsx
|
|
281
|
+
import { Chip, ChipGroup } from '@adam-milo/ui';
|
|
282
|
+
|
|
283
|
+
<Chip>Tag</Chip>
|
|
284
|
+
<Chip variant="outline">Outline</Chip>
|
|
285
|
+
|
|
286
|
+
<ChipGroup
|
|
287
|
+
items={[
|
|
288
|
+
{ id: '1', label: 'Option 1' },
|
|
289
|
+
{ id: '2', label: 'Option 2' },
|
|
290
|
+
]}
|
|
291
|
+
selected={selected}
|
|
292
|
+
onSelectionChange={setSelected}
|
|
293
|
+
/>
|
|
354
294
|
```
|
|
355
295
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
---
|
|
296
|
+
## TypeScript
|
|
359
297
|
|
|
360
|
-
|
|
298
|
+
Full TypeScript support with exported types:
|
|
361
299
|
|
|
362
|
-
|
|
300
|
+
```tsx
|
|
301
|
+
import { Button, type ButtonProps } from '@adam-milo/ui';
|
|
363
302
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
│ ├── components/
|
|
368
|
-
│ │ ├── core/ # Button, Icon
|
|
369
|
-
│ │ ├── forms/ # Input, Checkbox, Select
|
|
370
|
-
│ │ ├── navigation/ # Tabs, Breadcrumb
|
|
371
|
-
│ │ ├── feedback/ # Alert, Toast
|
|
372
|
-
│ │ ├── data-display/ # Card, DataTable
|
|
373
|
-
│ │ ├── overlays/ # Dialog, Modal
|
|
374
|
-
│ │ └── layout/ # Stack, Grid
|
|
375
|
-
│ ├── lib/ # Utilities
|
|
376
|
-
│ ├── index.ts # Main exports
|
|
377
|
-
│ └── styles.css # Global styles
|
|
378
|
-
├── dist/ # Build output
|
|
379
|
-
├── package.json
|
|
380
|
-
├── vite.config.ts
|
|
381
|
-
└── README.md
|
|
303
|
+
const MyButton: React.FC<ButtonProps> = (props) => {
|
|
304
|
+
return <Button {...props} />;
|
|
305
|
+
};
|
|
382
306
|
```
|
|
383
307
|
|
|
384
|
-
|
|
308
|
+
## RTL Support
|
|
385
309
|
|
|
386
|
-
|
|
310
|
+
Components support RTL out of the box using CSS logical properties:
|
|
387
311
|
|
|
312
|
+
```tsx
|
|
313
|
+
<html dir="rtl">
|
|
314
|
+
<body>
|
|
315
|
+
<App /> {/* All components render correctly in RTL */}
|
|
316
|
+
</body>
|
|
317
|
+
</html>
|
|
388
318
|
```
|
|
389
|
-
ComponentName/
|
|
390
|
-
├── ComponentName.component.tsx # Implementation
|
|
391
|
-
├── ComponentName.css # Styles (if needed)
|
|
392
|
-
├── ComponentName.stories.tsx # Storybook stories
|
|
393
|
-
└── ComponentName.spec.tsx # Tests
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
---
|
|
397
|
-
|
|
398
|
-
## 📋 Requirements
|
|
399
|
-
|
|
400
|
-
- **Node.js**: >= 18.0.0
|
|
401
|
-
- **npm**: >= 9.0.0
|
|
402
|
-
- **React**: >= 18.2.0
|
|
403
|
-
- **TypeScript**: >= 5.0.0
|
|
404
|
-
|
|
405
|
-
---
|
|
406
|
-
|
|
407
|
-
## 🤝 Contributing
|
|
408
319
|
|
|
409
|
-
|
|
320
|
+
## Accessibility
|
|
410
321
|
|
|
411
|
-
|
|
322
|
+
All components are WCAG AA compliant with:
|
|
412
323
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
6. Push: `git push origin feature/my-feature`
|
|
419
|
-
7. Open a Pull Request
|
|
324
|
+
- Semantic HTML elements
|
|
325
|
+
- Proper ARIA attributes
|
|
326
|
+
- Keyboard navigation
|
|
327
|
+
- Focus management
|
|
328
|
+
- Screen reader support
|
|
420
329
|
|
|
421
|
-
|
|
330
|
+
## Tree Shaking
|
|
422
331
|
|
|
423
|
-
|
|
332
|
+
Import only what you need - unused components are automatically removed:
|
|
424
333
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
---
|
|
430
|
-
|
|
431
|
-
## 🔗 Links
|
|
432
|
-
|
|
433
|
-
- [GitHub Repository](https://github.com/adam-milo/adam-milo-design-system)
|
|
434
|
-
- [npm Package](https://www.npmjs.com/package/@adam-milo/ui)
|
|
435
|
-
- [Issue Tracker](https://github.com/adam-milo/adam-milo-design-system/issues)
|
|
436
|
-
- [Changelog](https://github.com/adam-milo/adam-milo-design-system/releases)
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
## 💬 Support
|
|
441
|
-
|
|
442
|
-
- 📧 Email: support@adam-milo.com
|
|
443
|
-
- 🐛 Issues: [GitHub Issues](https://github.com/adam-milo/adam-milo-design-system/issues)
|
|
444
|
-
- 💬 Discussions: [GitHub Discussions](https://github.com/adam-milo/adam-milo-design-system/discussions)
|
|
445
|
-
|
|
446
|
-
---
|
|
447
|
-
|
|
448
|
-
## 🙏 Acknowledgments
|
|
449
|
-
|
|
450
|
-
Built with:
|
|
451
|
-
|
|
452
|
-
- [React](https://react.dev/)
|
|
453
|
-
- [TypeScript](https://www.typescriptlang.org/)
|
|
454
|
-
- [TailwindCSS](https://tailwindcss.com/)
|
|
455
|
-
- [Radix UI](https://www.radix-ui.com/)
|
|
456
|
-
- [Vite](https://vitejs.dev/)
|
|
457
|
-
- [Storybook](https://storybook.js.org/)
|
|
334
|
+
```tsx
|
|
335
|
+
// Only Button code is included in your bundle
|
|
336
|
+
import { Button } from '@adam-milo/ui';
|
|
337
|
+
```
|
|
458
338
|
|
|
459
|
-
|
|
339
|
+
## License
|
|
460
340
|
|
|
461
|
-
|
|
341
|
+
MIT
|