From 591a925f6e352b995048004c5d9b03191addb01e Mon Sep 17 00:00:00 2001 From: Dmytro Kireiev Date: Wed, 11 Oct 2023 17:48:12 +0300 Subject: [PATCH] feat: update Accordion styles, improve docs [MDS-717] (#2428) --- .../client/accordion/examples/Default.tsx | 2 +- docs/app/components/client/accordion/page.tsx | 20 ++- .../server/accordion/description.md | 1 + .../examples/ContentOutsideSizes.tsx | 67 ++++++++ .../server/accordion/examples/Default.tsx | 20 +++ .../server/accordion/examples/Disabled.tsx | 20 +++ .../server/accordion/examples/Sizes.tsx | 67 ++++++++ docs/app/components/server/accordion/page.tsx | 37 +++++ docs/app/components/shared/CodePreview.tsx | 7 + .../components/shared/ComponentPreview.tsx | 11 ++ docs/app/components/shared/ExampleSection.tsx | 18 +++ .../shared/fonts/DMSans-Regular.woff2 | Bin 0 -> 21828 bytes .../shared/fonts/DMSans-Semibold.woff2 | Bin 0 -> 21880 bytes docs/app/components/types.ts | 69 ++++---- docs/app/globals.css | 105 ++++-------- docs/app/layout.tsx | 18 +-- docs/package.json | 1 + docs/tailwind.config.cjs | 3 +- next-docs/components/IconsBlock.tsx | 2 +- pnpm-lock.yaml | 3 + workspaces/base/src/accordion/Accordion.tsx | 153 +++++++----------- .../accordion/private/type/AccordionProps.ts | 13 ++ .../accordion/private/type/ContentProps.ts | 10 ++ .../accordion/private/type/SummaryProps.ts | 7 + .../src/accordion/private/utils/getSize.ts | 17 ++ .../src/accordion/private/utils/setFont.ts | 14 -- .../src/accordion/private/utils/setMargin.ts | 14 -- .../src/accordion/private/utils/setPadding.ts | 16 -- .../src/mergeClassnames/mergeClassnames.ts | 1 + .../src/private/presets/ds-moon-preset.js | 28 ++-- 30 files changed, 458 insertions(+), 286 deletions(-) create mode 100644 docs/app/components/server/accordion/description.md create mode 100644 docs/app/components/server/accordion/examples/ContentOutsideSizes.tsx create mode 100644 docs/app/components/server/accordion/examples/Default.tsx create mode 100644 docs/app/components/server/accordion/examples/Disabled.tsx create mode 100644 docs/app/components/server/accordion/examples/Sizes.tsx create mode 100644 docs/app/components/server/accordion/page.tsx create mode 100644 docs/app/components/shared/CodePreview.tsx create mode 100644 docs/app/components/shared/ComponentPreview.tsx create mode 100644 docs/app/components/shared/ExampleSection.tsx create mode 100644 docs/app/components/shared/fonts/DMSans-Regular.woff2 create mode 100644 docs/app/components/shared/fonts/DMSans-Semibold.woff2 create mode 100644 workspaces/base/src/accordion/private/type/AccordionProps.ts create mode 100644 workspaces/base/src/accordion/private/type/ContentProps.ts create mode 100644 workspaces/base/src/accordion/private/type/SummaryProps.ts create mode 100644 workspaces/base/src/accordion/private/utils/getSize.ts delete mode 100644 workspaces/base/src/accordion/private/utils/setFont.ts delete mode 100644 workspaces/base/src/accordion/private/utils/setMargin.ts delete mode 100644 workspaces/base/src/accordion/private/utils/setPadding.ts diff --git a/docs/app/components/client/accordion/examples/Default.tsx b/docs/app/components/client/accordion/examples/Default.tsx index 6189b96d57..b162a24195 100644 --- a/docs/app/components/client/accordion/examples/Default.tsx +++ b/docs/app/components/client/accordion/examples/Default.tsx @@ -1,4 +1,4 @@ -'use client' +'use client'; import React from 'react'; import Accordion from '@heathmont/moon-core-tw/lib/es/accordion/Accordion'; diff --git a/docs/app/components/client/accordion/page.tsx b/docs/app/components/client/accordion/page.tsx index 9ea40789e9..ae97539ddd 100644 --- a/docs/app/components/client/accordion/page.tsx +++ b/docs/app/components/client/accordion/page.tsx @@ -1,9 +1,9 @@ -import { Default } from "./examples/Default"; -import { getExamples } from "@/app/utils/getExamples"; -import { MDX } from "@/components/MDX"; +import { Default } from './examples/Default'; +import { getExamples } from '@/app/utils/getExamples'; +import { MDX } from '@/components/MDX'; export default async function Home() { - const { client } = await getExamples() + const { client } = await getExamples(); return (

Accordion

@@ -12,11 +12,17 @@ export default async function Home() {

Default

-
+
-
{client.accordion.examples.Default}
+
+          {client.accordion.examples.Default}
+        
- ) + ); } diff --git a/docs/app/components/server/accordion/description.md b/docs/app/components/server/accordion/description.md new file mode 100644 index 0000000000..ea8b0c3309 --- /dev/null +++ b/docs/app/components/server/accordion/description.md @@ -0,0 +1 @@ +An accordion is a vertical stack of interactive headings used to toggle the display of further information; each item can be 'collapsed' with just a short label visible or 'expanded' to show the full content. diff --git a/docs/app/components/server/accordion/examples/ContentOutsideSizes.tsx b/docs/app/components/server/accordion/examples/ContentOutsideSizes.tsx new file mode 100644 index 0000000000..923d8d8f2f --- /dev/null +++ b/docs/app/components/server/accordion/examples/ContentOutsideSizes.tsx @@ -0,0 +1,67 @@ +import Accordion from '@heathmont/moon-base-tw/lib/accordion/Accordion'; +import { ControlsChevronDownSmall } from '@heathmont/moon-icons-tw'; + +export const ContentOutsideSizes = () => ( + <> + + + Size SM + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + + + Default size MD + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + + + Size LG + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + + + Size XL + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + +); diff --git a/docs/app/components/server/accordion/examples/Default.tsx b/docs/app/components/server/accordion/examples/Default.tsx new file mode 100644 index 0000000000..7f7302a057 --- /dev/null +++ b/docs/app/components/server/accordion/examples/Default.tsx @@ -0,0 +1,20 @@ +import Accordion from '@heathmont/moon-base-tw/lib/accordion/Accordion'; +import { ControlsChevronDownSmall } from '@heathmont/moon-icons-tw'; + +export const Default = () => ( + + + Default + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + +); diff --git a/docs/app/components/server/accordion/examples/Disabled.tsx b/docs/app/components/server/accordion/examples/Disabled.tsx new file mode 100644 index 0000000000..76c34c5c97 --- /dev/null +++ b/docs/app/components/server/accordion/examples/Disabled.tsx @@ -0,0 +1,20 @@ +import Accordion from '@heathmont/moon-base-tw/lib/accordion/Accordion'; +import { ControlsChevronDownSmall } from '@heathmont/moon-icons-tw'; + +export const Disabled = () => ( + + + Disabled + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum. + + +); diff --git a/docs/app/components/server/accordion/examples/Sizes.tsx b/docs/app/components/server/accordion/examples/Sizes.tsx new file mode 100644 index 0000000000..0a0515fb56 --- /dev/null +++ b/docs/app/components/server/accordion/examples/Sizes.tsx @@ -0,0 +1,67 @@ +import Accordion from '@heathmont/moon-base-tw/lib/accordion/Accordion'; +import { ControlsChevronDownSmall } from '@heathmont/moon-icons-tw'; + +export const Sizes = () => ( + <> + + + Size SM + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + + + Default size MD + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + + + Size LG + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + + + Size XL + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate + velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint + occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + +); diff --git a/docs/app/components/server/accordion/page.tsx b/docs/app/components/server/accordion/page.tsx new file mode 100644 index 0000000000..1153e653a8 --- /dev/null +++ b/docs/app/components/server/accordion/page.tsx @@ -0,0 +1,37 @@ +import { ContentOutsideSizes } from '@/app/components/server/accordion/examples/ContentOutsideSizes'; +import { Default } from '@/app/components/server/accordion/examples/Default'; +import { Disabled } from '@/app/components/server/accordion/examples/Disabled'; +import { Sizes } from '@/app/components/server/accordion/examples/Sizes'; +import ExampleSection from '@/app/components/shared/ExampleSection'; +import { getExamples } from '@/app/utils/getExamples'; +import { MDX } from '@/components/MDX'; + +export default async function Home() { + const { server } = await getExamples(); + return ( +
+

Accordion

+ + } + code={server.accordion.examples.Default} + /> + } + code={server.accordion.examples.Disabled} + /> + } + code={server.accordion.examples.Sizes} + /> + } + code={server.accordion.examples.ContentOutsideSizes} + /> +
+ ); +} diff --git a/docs/app/components/shared/CodePreview.tsx b/docs/app/components/shared/CodePreview.tsx new file mode 100644 index 0000000000..2e5d83169f --- /dev/null +++ b/docs/app/components/shared/CodePreview.tsx @@ -0,0 +1,7 @@ +const CodePreview = ({ code }: { code: string }) => ( +
+    {code}
+  
+); + +export default CodePreview; diff --git a/docs/app/components/shared/ComponentPreview.tsx b/docs/app/components/shared/ComponentPreview.tsx new file mode 100644 index 0000000000..a077a8fd40 --- /dev/null +++ b/docs/app/components/shared/ComponentPreview.tsx @@ -0,0 +1,11 @@ +const ComponentPreview = ({ component }: { component: JSX.Element }) => ( +
+ {component} +
+); + +export default ComponentPreview; diff --git a/docs/app/components/shared/ExampleSection.tsx b/docs/app/components/shared/ExampleSection.tsx new file mode 100644 index 0000000000..6dd6842360 --- /dev/null +++ b/docs/app/components/shared/ExampleSection.tsx @@ -0,0 +1,18 @@ +import CodePreview from './CodePreview'; +import ComponentPreview from './ComponentPreview'; + +type Props = { + title: string; + component: JSX.Element; + code: string; +}; + +const ExampleSection = async ({ title, component, code }: Props) => ( +
+

{title}

+ + +
+); + +export default ExampleSection; diff --git a/docs/app/components/shared/fonts/DMSans-Regular.woff2 b/docs/app/components/shared/fonts/DMSans-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7834d2424ce2fd6b36fe3563ccc0d4acbe77e9e5 GIT binary patch literal 21828 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

-m!)kvdI4B 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 aR2F3&S%$2KeAcApNx)&uMeO*uXIcoZ4(dbz literal 0 HcmV?d00001 diff --git a/docs/app/components/types.ts b/docs/app/components/types.ts index 59344a3c58..78b6b6f4ae 100644 --- a/docs/app/components/types.ts +++ b/docs/app/components/types.ts @@ -1,31 +1,40 @@ export interface Examples { - "client": { - "accordion": { - "description": "string", - "examples": { - "Default": "string" - } - }, - "button": { - "description": "string", - "examples": { - "Default": "string" - } - } - }, - "server": { - "avatar": { - "description": "string", - "examples": { - "Active": "string", - "Default": "string" - } - }, - "tag": { - "description": "string", - "examples": { - "Default": "string" - } - } - } -}; + client: { + accordion: { + description: 'string'; + examples: { + Default: 'string'; + }; + }; + button: { + description: 'string'; + examples: { + Default: 'string'; + }; + }; + }; + server: { + accordion: { + description: 'string'; + examples: { + Default: 'string'; + Disabled: 'string'; + Sizes: 'string'; + ContentOutsideSizes: 'string'; + }; + }; + avatar: { + description: 'string'; + examples: { + Active: 'string'; + Default: 'string'; + }; + }; + tag: { + description: 'string'; + examples: { + Default: 'string'; + }; + }; + }; +} diff --git a/docs/app/globals.css b/docs/app/globals.css index 56947d0b6f..570f5ecf85 100644 --- a/docs/app/globals.css +++ b/docs/app/globals.css @@ -2,83 +2,34 @@ @tailwind components; @tailwind utilities; -/* TODO just import theme (seems like import doesn't work_ */ -:root { - --piccolo: 78 70 180; /* #4e46b4 */ - --hit: 64 166 159; /* #40a69f */ - --beerus: 235 235 235; /* #ebebeb */ - --gohan: 255 255 255; /* #ffffff */ - --goten: 255 255 255; /* #ffffff */ - --goku: 245 245 245; /* #f5f5f5 */ - --bulma: 0 0 0; /* #000000 */ - --trunks: 153 156 160; /* #999ca0 */ - --popo: 0 0 0; /* #000000 */ - --jiren: 78 70 180 / 0.12; /* #4e46b4 */ - --heles: 0 0 0 / 0.04; /* #000000 */ - --zeno: 0 0 0 / 0.56; /* #000000 */ - - /* support-colors */ - --krillin: 255 179 25; /* #ff9800 */ - --krillin-60: 255 179 25 / 0.56; /* #ff9800 */ - --krillin-10: 255 179 25 / 0.08; /* #ff9800 */ - - --chichi: 255 78 100; /* #ff4e64 */ - --chichi-60: 255 78 100 / 0.56; /* #ff4e64 */ - --chichi-10: 255 78 100 / 0.08; /* #ff4e64 */ - - --roshi: 46 125 50; /* #2e7d32 */ - --roshi-60: 46 125 50 / 0.56; /* #2e7d32 */ - --roshi-10: 46 125 50 / 0.08; /* #2e7d32 */ - - --dodoria: 211 48 48; /* #d33030 */ - --dodoria-60: 211 48 48 / 0.56; /* #d33030 */ - --dodoria-10: 211 48 48 / 0.08; /* #d33030 */ - - --cell: 149 241 213; /* #95f1d5 */ - --cell-60: 149 241 213 / 0.56; /* #95f1d5 */ - --cell-10: 149 241 213 / 0.08; /* #95f1d5 */ - - --raditz: 179 128 74; /* #b3804a */ - --raditz-60: 179 128 74 / 0.56; /* #b3804a */ - --raditz-10: 179 128 74 / 0.08; /* #b3804a */ - - --whis: 52 72 240; /* #3448f0 */ - --whis-60: 52 72 240 / 0.56; /* #3448f0 */ - --whis-10: 52 72 240 / 0.08; /* #3448f0 */ - - --frieza: 92 51 207; /* #5c33cf */ - --frieza-60: 92 51 207 / 0.56; /* #5c33cf */ - --frieza-10: 92 51 207 / 0.08; /* #5c33cf */ - - --nappa: 114 85 80; /* #725550 */ - --nappa-60: 114 85 80 / 0.56; /* #725550 */ - --nappa-10: 114 85 80 / 0.08; /* #725550 */ - - /* border-radius */ - --radius-i-xs: 0.25rem; /* 4px */ - --radius-i-sm: 0.5rem; /* 8px */ - --radius-i-md: 0.75rem; /* 12px */ - --radius-s-xs: 0.25rem; /* 4px */ - --radius-s-sm: 0.5rem; /* 8px */ - --radius-s-md: 0.75rem; /* 12px */ - --radius-s-lg: 1rem; /* 16px */ - - /* border-width */ - --border-width: 0.0625rem; /* 1px */ - --border-i-width: 0.125rem; /* 2px */ - - /* opacity */ - --opacity-moon: 0.6; +@import '../node_modules/@heathmont/moon-themes-tw/lib/moon.css'; + +@font-face { + font-family: 'DM Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + unicode-range: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD'; + src: local('DMSans-Regular'), local('DM Sans Regular'), + url('./components/shared/fonts/DMSans-Regular.woff2') format('woff2'); +} - /* fonts */ - --averta: 'Averta Std'; - --dm-sans: 'DM Sans'; +@font-face { + font-family: 'DM Sans'; + font-style: normal; + font-display: swap; + font-weight: 500; + unicode-range: 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD'; + src: local('DMSans-Semibold'), local('DM Sans Semibold'), + url('./components/shared/fonts/DMSans-Semibold.woff2') format('woff2'); +} - /* box-shadow */ - --shadow-xs: 0 4px 12px -6px rgb(0 0 0 / 0.06); - --shadow-sm: 0 6px 6px -6px rgb(0 0 0 / 0.16), 0 0 1px rgb(0 0 0 / 0.4); - --shadow-md: 0 12px 12px -6px rgb(0 0 0 / 0.16), 0 0 1px rgb(0 0 0 / 0.4); - --shadow-lg: 0 8px 24px -6px rgb(0 0 0 / 0.16), 0 0 1px rgb(0 0 0 / 0.4); - --shadow-xl: 0 32px 32px -8px rgb(0 0 0 / 0.08), - 0 0 32px -8px rgb(0 0 0 / 0.12), 0 0 1px rgb(0 0 0 / 0.2); +html, +body { + font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, + Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + text-size-adjust: none; /* Prevent automatic zooming of fonts on some mobile devices. */ + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; /* Consistent font display behavior on OSX. */ + -moz-osx-font-smoothing: grayscale; /* Consistent font display behavior on OSX. */ } diff --git a/docs/app/layout.tsx b/docs/app/layout.tsx index 863e99ec44..3ca865aa3e 100644 --- a/docs/app/layout.tsx +++ b/docs/app/layout.tsx @@ -1,25 +1,23 @@ -import './globals.css' -import { Inter } from 'next/font/google' - -const inter = Inter({ subsets: ['latin'] }) +import './globals.css'; export const metadata = { title: 'Moon Design System', - description: 'Maintain the integrity of their user experience and optimize design and development resources.', -} + description: + 'Maintain the integrity of their user experience and optimize design and development resources.', +}; export default function RootLayout({ children, }: { - children: React.ReactNode + children: React.ReactNode; }) { return ( - -

+ +
{children}
- ) + ); } diff --git a/docs/package.json b/docs/package.json index f2e67d0135..995743a049 100644 --- a/docs/package.json +++ b/docs/package.json @@ -14,6 +14,7 @@ "@heathmont/moon-base-tw": "workspace:^10.9.1", "@heathmont/moon-cmdk-tw": "workspace:^10.9.1", "@heathmont/moon-core-tw": "workspace:^10.9.1", + "@heathmont/moon-themes-tw": "workspace:^10.9.1", "@heathmont/moon-icons-tw": "9.28.6", "@types/node": "20.4.9", "@types/react": "18.2.19", diff --git a/docs/tailwind.config.cjs b/docs/tailwind.config.cjs index 0021ed8736..a18b314364 100644 --- a/docs/tailwind.config.cjs +++ b/docs/tailwind.config.cjs @@ -5,6 +5,7 @@ module.exports = { './components/**/*.{js,ts,jsx,tsx,mdx}', './app/**/*.{js,ts,jsx,tsx,mdx}', './node_modules/@heathmont/moon-core-tw/**/*.{js,ts,jsx,tsx}', + './node_modules/@heathmont/moon-base-tw/**/*.{js,ts,jsx,tsx}', ], theme: { extend: {}, @@ -13,4 +14,4 @@ module.exports = { require('@heathmont/moon-core-tw/lib/private/presets/ds-moon-preset'), ], // TODO rtl-plugin -} +}; diff --git a/next-docs/components/IconsBlock.tsx b/next-docs/components/IconsBlock.tsx index e7f9788920..f563956c03 100644 --- a/next-docs/components/IconsBlock.tsx +++ b/next-docs/components/IconsBlock.tsx @@ -1,5 +1,5 @@ const IconsBlock: React.FC<{ children: React.ReactNode }> = ({ children }) => ( -
+
{children}
); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b0a8c6071..9e4b86bba4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -174,6 +174,9 @@ importers: '@heathmont/moon-icons-tw': specifier: 9.28.6 version: 9.28.6(react-dom@18.2.0)(react@18.2.0) + '@heathmont/moon-themes-tw': + specifier: workspace:^10.9.1 + version: link:../workspaces/themes '@types/node': specifier: 20.4.9 version: 20.4.9 diff --git a/workspaces/base/src/accordion/Accordion.tsx b/workspaces/base/src/accordion/Accordion.tsx index a83579124b..fc76856a5c 100644 --- a/workspaces/base/src/accordion/Accordion.tsx +++ b/workspaces/base/src/accordion/Accordion.tsx @@ -1,18 +1,9 @@ import React from 'react'; +import type AccordionProps from './private/type/AccordionProps'; +import type ContentProps from './private/type/ContentProps'; +import type SummaryProps from './private/type/SummaryProps'; +import getSize from './private/utils/getSize'; import mergeClassnames from '../mergeClassnames/mergeClassnames'; -import setMargin from './private/utils/setMargin'; -import setPadding from './private/utils/setPadding'; -import type AccordionSizes from './private/type/AccordionSizes'; - -type AccordionProps = { - className?: string; - children?: React.ReactNode; - size?: AccordionSizes; - disabled?: boolean; -} & React.DetailedHTMLProps< - React.DetailsHTMLAttributes, - HTMLDetailsElement ->; const AccordionRoot = ({ className, @@ -20,96 +11,60 @@ const AccordionRoot = ({ size, disabled, ...rest -}: AccordionProps) => { - return ( -
- {children} -
- ); -}; - -type SummaryProps = { - className?: string; - disabled?: boolean; - children?: React.ReactNode; -} & React.DetailedHTMLProps, HTMLElement>; +}: AccordionProps) => ( +
+ {children} +
+); -const Summary = ({ className, children, ...rest }: SummaryProps) => { - return ( - -

- {children} -

-
- ); -}; +const Summary = ({ className, children, ...rest }: SummaryProps) => ( + + {children} + +); -type ContentProps = { - className?: string; - disabled?: boolean; - children?: React.ReactNode; -} & React.DetailedHTMLProps< - React.HTMLAttributes, - HTMLDivElement ->; +const Content = ({ children, className, ...rest }: ContentProps) => ( +
+ {children} +
+); -const Content = ({ children, className, ...rest }: ContentProps) => { - return ( -
- {children} -
- ); -}; +const ContentOutside = ({ children, className, ...rest }: ContentProps) => ( +
+ {children} +
+); -const ContentOutside = ({ children, className, ...rest }: ContentProps) => { - return ( -
- {children} -
- ); -}; const Accordion = Object.assign(AccordionRoot, { Summary, Content, diff --git a/workspaces/base/src/accordion/private/type/AccordionProps.ts b/workspaces/base/src/accordion/private/type/AccordionProps.ts new file mode 100644 index 0000000000..e1d172c7e0 --- /dev/null +++ b/workspaces/base/src/accordion/private/type/AccordionProps.ts @@ -0,0 +1,13 @@ +import type AccordionSizes from './AccordionSizes'; + +type AccordionProps = { + className?: string; + children?: React.ReactNode; + size?: AccordionSizes; + disabled?: boolean; +} & React.DetailedHTMLProps< + React.DetailsHTMLAttributes, + HTMLDetailsElement +>; + +export default AccordionProps; diff --git a/workspaces/base/src/accordion/private/type/ContentProps.ts b/workspaces/base/src/accordion/private/type/ContentProps.ts new file mode 100644 index 0000000000..e1a5cfcf30 --- /dev/null +++ b/workspaces/base/src/accordion/private/type/ContentProps.ts @@ -0,0 +1,10 @@ +type ContentProps = { + className?: string; + disabled?: boolean; + children?: React.ReactNode; +} & React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLDivElement +>; + +export default ContentProps; diff --git a/workspaces/base/src/accordion/private/type/SummaryProps.ts b/workspaces/base/src/accordion/private/type/SummaryProps.ts new file mode 100644 index 0000000000..f0c47e6207 --- /dev/null +++ b/workspaces/base/src/accordion/private/type/SummaryProps.ts @@ -0,0 +1,7 @@ +type SummaryProps = { + className?: string; + disabled?: boolean; + children?: React.ReactNode; +} & React.DetailedHTMLProps, HTMLElement>; + +export default SummaryProps; diff --git a/workspaces/base/src/accordion/private/utils/getSize.ts b/workspaces/base/src/accordion/private/utils/getSize.ts new file mode 100644 index 0000000000..c5c026f1a6 --- /dev/null +++ b/workspaces/base/src/accordion/private/utils/getSize.ts @@ -0,0 +1,17 @@ +import type AccordionSizes from '../type/AccordionSizes'; + +const getSize = (size?: AccordionSizes) => { + switch (size) { + case 'xl': + return '[&_summary_svg]:text-moon-24 [&_summary]:p-4 [&_.content-outside]:mt-4 text-moon-16'; + case 'lg': + return '[&_summary_svg]:text-moon-24 [&_summary]:p-3 [&_.content-outside]:mt-3 text-moon-14'; + case 'sm': + return '[&_summary_svg]:text-moon-16 [&_summary]:p-2 [&_.content-outside]:mt-2 text-moon-12'; + case 'md': + default: + return '[&_summary_svg]:text-moon-24 [&_summary]:p-2 [&_.content-outside]:mt-2 [&_summary]:ps-3 text-moon-14'; + } +}; + +export default getSize; diff --git a/workspaces/base/src/accordion/private/utils/setFont.ts b/workspaces/base/src/accordion/private/utils/setFont.ts deleted file mode 100644 index 88ff990222..0000000000 --- a/workspaces/base/src/accordion/private/utils/setFont.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type AccordionSizes from '../type/AccordionSizes'; - -const setFont = (size?: AccordionSizes) => { - switch (size) { - case 'xl': - return `text-moon-16`; - case 'sm': - return `text-moon-12`; - default: - return `text-moon-14`; - } -}; - -export default setFont; diff --git a/workspaces/base/src/accordion/private/utils/setMargin.ts b/workspaces/base/src/accordion/private/utils/setMargin.ts deleted file mode 100644 index 22bebde814..0000000000 --- a/workspaces/base/src/accordion/private/utils/setMargin.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type AccordionSizes from '../type/AccordionSizes'; - -const setMargin = (size?: AccordionSizes) => { - switch (size) { - case 'xl': - return '[&_.content-out]:mt-4'; - case 'lg': - return '[&_.content-out]:mt-3'; - default: - return '[&_.content-out]:mt-2'; - } -}; - -export default setMargin; diff --git a/workspaces/base/src/accordion/private/utils/setPadding.ts b/workspaces/base/src/accordion/private/utils/setPadding.ts deleted file mode 100644 index 8d93fbd4cd..0000000000 --- a/workspaces/base/src/accordion/private/utils/setPadding.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type AccordionSizes from '../type/AccordionSizes'; - -const setPadding = (size?: AccordionSizes) => { - switch (size) { - case 'xl': - return '[&_summary_h3]:p-4'; - case 'lg': - return '[&_summary_h3]:p-3'; - case 'sm': - return '[&_summary_h3]:p-2'; - default: - return '[&_summary_h3]:py-2 [&_summary_h3]:ps-3 [&_summary_h3]:pe-2'; - } -}; - -export default setPadding; diff --git a/workspaces/base/src/mergeClassnames/mergeClassnames.ts b/workspaces/base/src/mergeClassnames/mergeClassnames.ts index c093a87f35..245d63af0a 100644 --- a/workspaces/base/src/mergeClassnames/mergeClassnames.ts +++ b/workspaces/base/src/mergeClassnames/mergeClassnames.ts @@ -30,6 +30,7 @@ const mergeClassnames = extendTailwindMerge({ '20', '24', '32', + '40', '48', '56', '64', diff --git a/workspaces/base/src/private/presets/ds-moon-preset.js b/workspaces/base/src/private/presets/ds-moon-preset.js index 2d3d23aeb0..14afe86829 100644 --- a/workspaces/base/src/private/presets/ds-moon-preset.js +++ b/workspaces/base/src/private/presets/ds-moon-preset.js @@ -87,6 +87,13 @@ module.exports = { letterSpacing: '-0.03125rem', }, ], + 'moon-40': [ + '2.5rem', + { + lineHeight: '3rem', + letterSpacing: '-0.03125rem', + }, + ], 'moon-48': [ '3rem', { @@ -146,6 +153,11 @@ module.exports = { 'moon-md': 'var(--shadow-md)', 'moon-lg': 'var(--shadow-lg)', 'moon-xl': 'var(--shadow-xl)', + textarea: '0 0 0 var(--border-width) rgb(var(--beerus))', + 'textarea-hov': + '0 0 0 var(--border-i-width) rgb(var(--bulma) / 7%), 0 0 0 var(--border-i-width) rgb(var(--beerus))', + 'textarea-focus': '0 0 0 var(--border-i-width) rgb(var(--piccolo))', + 'textarea-err': '0 0 0 var(--border-i-width) rgb(var(--chichi))', }, opacity: { moon: 'var(--opacity-moon)', @@ -307,22 +319,6 @@ module.exports = { require('tailwindcss-radix')(), plugin(function ({ addComponents }) { addComponents({ - '.btn-primary': { - color: 'rgb(var(--goten))', - backgroundColor: `rgb(var(--piccolo))`, - }, - '.btn-secondary': { - color: 'rgb(var(--bulma))', - background: 'none', - boxShadow: `inset 0 0 0 1px rgb(var(--trunks)/1)`, - '&:hover': { - boxShadow: `inset 0 0 0 1px rgb(var(--bulma))`, - }, - }, - '.btn-tertiary': { - color: 'rgb(var(--goten))', - backgroundColor: 'rgb(var(--hit))', - }, '.anim-error': { transform: 'translate3d(0, 0, 0)', backfaceVisibility: 'hidden',