ecomlab-components-next 0.1.4 → 0.1.5

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 (36) hide show
  1. package/dist/app/favicon.ico +0 -0
  2. package/dist/app/globals.css +42 -0
  3. package/dist/app/layout.js +29 -0
  4. package/dist/app/page.js +73 -0
  5. package/dist/app/page.module.css +168 -0
  6. package/dist/components/Button.js +23 -0
  7. package/dist/components/Button.module.scss +18 -0
  8. package/dist/components/Button.stories.js +33 -0
  9. package/dist/index.js +13 -0
  10. package/dist/stories/Button.js +47 -0
  11. package/dist/stories/Button.stories.js +52 -0
  12. package/dist/stories/Configure.mdx +446 -0
  13. package/dist/stories/Header.js +63 -0
  14. package/dist/stories/Header.stories.js +33 -0
  15. package/dist/stories/Page.js +68 -0
  16. package/dist/stories/Page.stories.js +61 -0
  17. package/dist/stories/assets/accessibility.png +0 -0
  18. package/dist/stories/assets/accessibility.svg +1 -0
  19. package/dist/stories/assets/addon-library.png +0 -0
  20. package/dist/stories/assets/assets.png +0 -0
  21. package/dist/stories/assets/avif-test-image.avif +0 -0
  22. package/dist/stories/assets/context.png +0 -0
  23. package/dist/stories/assets/discord.svg +1 -0
  24. package/dist/stories/assets/docs.png +0 -0
  25. package/dist/stories/assets/figma-plugin.png +0 -0
  26. package/dist/stories/assets/github.svg +1 -0
  27. package/dist/stories/assets/share.png +0 -0
  28. package/dist/stories/assets/styling.png +0 -0
  29. package/dist/stories/assets/testing.png +0 -0
  30. package/dist/stories/assets/theming.png +0 -0
  31. package/dist/stories/assets/tutorials.svg +1 -0
  32. package/dist/stories/assets/youtube.svg +1 -0
  33. package/dist/stories/button.css +30 -0
  34. package/dist/stories/header.css +32 -0
  35. package/dist/stories/page.css +68 -0
  36. package/package.json +17 -11
Binary file
@@ -0,0 +1,42 @@
1
+ :root {
2
+ --background: #ffffff;
3
+ --foreground: #171717;
4
+ }
5
+
6
+ @media (prefers-color-scheme: dark) {
7
+ :root {
8
+ --background: #0a0a0a;
9
+ --foreground: #ededed;
10
+ }
11
+ }
12
+
13
+ html,
14
+ body {
15
+ max-width: 100vw;
16
+ overflow-x: hidden;
17
+ }
18
+
19
+ body {
20
+ color: var(--foreground);
21
+ background: var(--background);
22
+ font-family: Arial, Helvetica, sans-serif;
23
+ -webkit-font-smoothing: antialiased;
24
+ -moz-osx-font-smoothing: grayscale;
25
+ }
26
+
27
+ * {
28
+ box-sizing: border-box;
29
+ padding: 0;
30
+ margin: 0;
31
+ }
32
+
33
+ a {
34
+ color: inherit;
35
+ text-decoration: none;
36
+ }
37
+
38
+ @media (prefers-color-scheme: dark) {
39
+ html {
40
+ color-scheme: dark;
41
+ }
42
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = RootLayout;
7
+ exports.metadata = void 0;
8
+ var _google = require("next/font/google");
9
+ require("./globals.css");
10
+ var geistSans = (0, _google.Geist)({
11
+ variable: "--font-geist-sans",
12
+ subsets: ["latin"]
13
+ });
14
+ var geistMono = (0, _google.Geist_Mono)({
15
+ variable: "--font-geist-mono",
16
+ subsets: ["latin"]
17
+ });
18
+ var metadata = exports.metadata = {
19
+ title: "Create Next App",
20
+ description: "Generated by create next app"
21
+ };
22
+ function RootLayout(_ref) {
23
+ var children = _ref.children;
24
+ return /*#__PURE__*/React.createElement("html", {
25
+ lang: "en"
26
+ }, /*#__PURE__*/React.createElement("body", {
27
+ className: "".concat(geistSans.variable, " ").concat(geistMono.variable)
28
+ }, children));
29
+ }
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = Home;
7
+ var _image = _interopRequireDefault(require("next/image"));
8
+ var _pageModule = _interopRequireDefault(require("./page.module.css"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ function Home() {
11
+ return /*#__PURE__*/React.createElement("div", {
12
+ className: _pageModule["default"].page
13
+ }, /*#__PURE__*/React.createElement("main", {
14
+ className: _pageModule["default"].main
15
+ }, /*#__PURE__*/React.createElement(_image["default"], {
16
+ className: _pageModule["default"].logo,
17
+ src: "/next.svg",
18
+ alt: "Next.js logo",
19
+ width: 180,
20
+ height: 38,
21
+ priority: true
22
+ }), /*#__PURE__*/React.createElement("ol", null, /*#__PURE__*/React.createElement("li", null, "Get started by editing ", /*#__PURE__*/React.createElement("code", null, "src/app/page.js"), "."), /*#__PURE__*/React.createElement("li", null, "Save and see your changes instantly.")), /*#__PURE__*/React.createElement("div", {
23
+ className: _pageModule["default"].ctas
24
+ }, /*#__PURE__*/React.createElement("a", {
25
+ className: _pageModule["default"].primary,
26
+ href: "https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app",
27
+ target: "_blank",
28
+ rel: "noopener noreferrer"
29
+ }, /*#__PURE__*/React.createElement(_image["default"], {
30
+ className: _pageModule["default"].logo,
31
+ src: "/vercel.svg",
32
+ alt: "Vercel logomark",
33
+ width: 20,
34
+ height: 20
35
+ }), "Deploy now"), /*#__PURE__*/React.createElement("a", {
36
+ href: "https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app",
37
+ target: "_blank",
38
+ rel: "noopener noreferrer",
39
+ className: _pageModule["default"].secondary
40
+ }, "Read our docs"))), /*#__PURE__*/React.createElement("footer", {
41
+ className: _pageModule["default"].footer
42
+ }, /*#__PURE__*/React.createElement("a", {
43
+ href: "https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app",
44
+ target: "_blank",
45
+ rel: "noopener noreferrer"
46
+ }, /*#__PURE__*/React.createElement(_image["default"], {
47
+ "aria-hidden": true,
48
+ src: "/file.svg",
49
+ alt: "File icon",
50
+ width: 16,
51
+ height: 16
52
+ }), "Learn"), /*#__PURE__*/React.createElement("a", {
53
+ href: "https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app",
54
+ target: "_blank",
55
+ rel: "noopener noreferrer"
56
+ }, /*#__PURE__*/React.createElement(_image["default"], {
57
+ "aria-hidden": true,
58
+ src: "/window.svg",
59
+ alt: "Window icon",
60
+ width: 16,
61
+ height: 16
62
+ }), "Examples"), /*#__PURE__*/React.createElement("a", {
63
+ href: "https://nextjs.org?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app",
64
+ target: "_blank",
65
+ rel: "noopener noreferrer"
66
+ }, /*#__PURE__*/React.createElement(_image["default"], {
67
+ "aria-hidden": true,
68
+ src: "/globe.svg",
69
+ alt: "Globe icon",
70
+ width: 16,
71
+ height: 16
72
+ }), "Go to nextjs.org \u2192")));
73
+ }
@@ -0,0 +1,168 @@
1
+ .page {
2
+ --gray-rgb: 0, 0, 0;
3
+ --gray-alpha-200: rgba(var(--gray-rgb), 0.08);
4
+ --gray-alpha-100: rgba(var(--gray-rgb), 0.05);
5
+
6
+ --button-primary-hover: #383838;
7
+ --button-secondary-hover: #f2f2f2;
8
+
9
+ display: grid;
10
+ grid-template-rows: 20px 1fr 20px;
11
+ align-items: center;
12
+ justify-items: center;
13
+ min-height: 100svh;
14
+ padding: 80px;
15
+ gap: 64px;
16
+ font-family: var(--font-geist-sans);
17
+ }
18
+
19
+ @media (prefers-color-scheme: dark) {
20
+ .page {
21
+ --gray-rgb: 255, 255, 255;
22
+ --gray-alpha-200: rgba(var(--gray-rgb), 0.145);
23
+ --gray-alpha-100: rgba(var(--gray-rgb), 0.06);
24
+
25
+ --button-primary-hover: #ccc;
26
+ --button-secondary-hover: #1a1a1a;
27
+ }
28
+ }
29
+
30
+ .main {
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: 32px;
34
+ grid-row-start: 2;
35
+ }
36
+
37
+ .main ol {
38
+ font-family: var(--font-geist-mono);
39
+ padding-left: 0;
40
+ margin: 0;
41
+ font-size: 14px;
42
+ line-height: 24px;
43
+ letter-spacing: -0.01em;
44
+ list-style-position: inside;
45
+ }
46
+
47
+ .main li:not(:last-of-type) {
48
+ margin-bottom: 8px;
49
+ }
50
+
51
+ .main code {
52
+ font-family: inherit;
53
+ background: var(--gray-alpha-100);
54
+ padding: 2px 4px;
55
+ border-radius: 4px;
56
+ font-weight: 600;
57
+ }
58
+
59
+ .ctas {
60
+ display: flex;
61
+ gap: 16px;
62
+ }
63
+
64
+ .ctas a {
65
+ appearance: none;
66
+ border-radius: 128px;
67
+ height: 48px;
68
+ padding: 0 20px;
69
+ border: none;
70
+ border: 1px solid transparent;
71
+ transition:
72
+ background 0.2s,
73
+ color 0.2s,
74
+ border-color 0.2s;
75
+ cursor: pointer;
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ font-size: 16px;
80
+ line-height: 20px;
81
+ font-weight: 500;
82
+ }
83
+
84
+ a.primary {
85
+ background: var(--foreground);
86
+ color: var(--background);
87
+ gap: 8px;
88
+ }
89
+
90
+ a.secondary {
91
+ border-color: var(--gray-alpha-200);
92
+ min-width: 180px;
93
+ }
94
+
95
+ .footer {
96
+ grid-row-start: 3;
97
+ display: flex;
98
+ gap: 24px;
99
+ }
100
+
101
+ .footer a {
102
+ display: flex;
103
+ align-items: center;
104
+ gap: 8px;
105
+ }
106
+
107
+ .footer img {
108
+ flex-shrink: 0;
109
+ }
110
+
111
+ /* Enable hover only on non-touch devices */
112
+ @media (hover: hover) and (pointer: fine) {
113
+ a.primary:hover {
114
+ background: var(--button-primary-hover);
115
+ border-color: transparent;
116
+ }
117
+
118
+ a.secondary:hover {
119
+ background: var(--button-secondary-hover);
120
+ border-color: transparent;
121
+ }
122
+
123
+ .footer a:hover {
124
+ text-decoration: underline;
125
+ text-underline-offset: 4px;
126
+ }
127
+ }
128
+
129
+ @media (max-width: 600px) {
130
+ .page {
131
+ padding: 32px;
132
+ padding-bottom: 80px;
133
+ }
134
+
135
+ .main {
136
+ align-items: center;
137
+ }
138
+
139
+ .main ol {
140
+ text-align: center;
141
+ }
142
+
143
+ .ctas {
144
+ flex-direction: column;
145
+ }
146
+
147
+ .ctas a {
148
+ font-size: 14px;
149
+ height: 40px;
150
+ padding: 0 16px;
151
+ }
152
+
153
+ a.secondary {
154
+ min-width: auto;
155
+ }
156
+
157
+ .footer {
158
+ flex-wrap: wrap;
159
+ align-items: center;
160
+ justify-content: center;
161
+ }
162
+ }
163
+
164
+ @media (prefers-color-scheme: dark) {
165
+ .logo {
166
+ filter: invert();
167
+ }
168
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _ButtonModule = _interopRequireDefault(require("./Button.module.scss"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ var Button = function Button(_ref) {
11
+ var label = _ref.label,
12
+ onClick = _ref.onClick,
13
+ _ref$disabled = _ref.disabled,
14
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
15
+ _ref$variant = _ref.variant,
16
+ variant = _ref$variant === void 0 ? 'primary' : _ref$variant;
17
+ return /*#__PURE__*/_react["default"].createElement("button", {
18
+ className: "".concat(_ButtonModule["default"].button, " ").concat(_ButtonModule["default"][variant]),
19
+ onClick: onClick,
20
+ disabled: disabled
21
+ }, label);
22
+ };
23
+ var _default = exports["default"] = Button;
@@ -0,0 +1,18 @@
1
+ .button {
2
+ padding: 10px 20px;
3
+ font-size: 16px;
4
+ border: none;
5
+ cursor: pointer;
6
+ }
7
+
8
+ .primary {
9
+ background-color: #0070f3;
10
+ color: white;
11
+ }
12
+
13
+ .secondary {
14
+ background-color: white;
15
+ color: #0070f3;
16
+ border: 1px solid #0070f3;
17
+ }
18
+
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.Secondary = exports.Primary = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Button = _interopRequireDefault(require("./Button"));
9
+ var _react2 = require("@storybook/react");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ var _default = exports["default"] = {
12
+ title: 'Components/Button',
13
+ component: _Button["default"]
14
+ };
15
+ var Template = function Template(args) {
16
+ return /*#__PURE__*/_react["default"].createElement(_Button["default"], args);
17
+ };
18
+ var Primary = exports.Primary = Template.bind({});
19
+ Primary.args = {
20
+ label: 'Primary Button',
21
+ variant: 'primary',
22
+ onClick: function onClick() {
23
+ return alert('Clicked!');
24
+ }
25
+ };
26
+ var Secondary = exports.Secondary = Template.bind({});
27
+ Secondary.args = {
28
+ label: 'Secondary Button',
29
+ variant: 'secondary',
30
+ onClick: function onClick() {
31
+ return alert('Clicked!');
32
+ }
33
+ };
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Button", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Button["default"];
10
+ }
11
+ });
12
+ var _Button = _interopRequireDefault(require("./components/Button"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Button = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ require("./button.css");
10
+ var _excluded = ["primary", "backgroundColor", "size", "label"];
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
13
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
14
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
15
+ /** Primary UI component for user interaction */
16
+ var Button = exports.Button = function Button(_ref) {
17
+ var primary = _ref.primary,
18
+ backgroundColor = _ref.backgroundColor,
19
+ size = _ref.size,
20
+ label = _ref.label,
21
+ props = _objectWithoutProperties(_ref, _excluded);
22
+ var mode = primary ? 'storybook-button--primary' : 'storybook-button--secondary';
23
+ return /*#__PURE__*/_react["default"].createElement("button", _extends({
24
+ type: "button",
25
+ className: ['storybook-button', "storybook-button--".concat(size), mode].join(' ')
26
+ }, props), label, /*#__PURE__*/_react["default"].createElement("style", {
27
+ jsx: true
28
+ }, "\n button {\n background-color: ".concat(backgroundColor, ";\n }\n ")));
29
+ };
30
+ Button.propTypes = {
31
+ /** Is this the principal call to action on the page? */
32
+ primary: _propTypes["default"].bool,
33
+ /** What background color to use */
34
+ backgroundColor: _propTypes["default"].string,
35
+ /** How large should the button be? */
36
+ size: _propTypes["default"].oneOf(['small', 'medium', 'large']),
37
+ /** Button contents */
38
+ label: _propTypes["default"].string.isRequired,
39
+ /** Optional click handler */
40
+ onClick: _propTypes["default"].func
41
+ };
42
+ Button.defaultProps = {
43
+ backgroundColor: null,
44
+ primary: false,
45
+ size: 'medium',
46
+ onClick: undefined
47
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.Small = exports.Secondary = exports.Primary = exports.Large = void 0;
7
+ var _test = require("@storybook/test");
8
+ var _Button = require("./Button");
9
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
10
+ var _default = exports["default"] = {
11
+ title: 'Example/Button',
12
+ component: _Button.Button,
13
+ parameters: {
14
+ // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
15
+ layout: 'centered'
16
+ },
17
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
18
+ tags: ['autodocs'],
19
+ // More on argTypes: https://storybook.js.org/docs/api/argtypes
20
+ argTypes: {
21
+ backgroundColor: {
22
+ control: 'color'
23
+ }
24
+ },
25
+ // Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
26
+ args: {
27
+ onClick: (0, _test.fn)()
28
+ }
29
+ }; // More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
30
+ var Primary = exports.Primary = {
31
+ args: {
32
+ primary: true,
33
+ label: 'Button'
34
+ }
35
+ };
36
+ var Secondary = exports.Secondary = {
37
+ args: {
38
+ label: 'Button'
39
+ }
40
+ };
41
+ var Large = exports.Large = {
42
+ args: {
43
+ size: 'large',
44
+ label: 'Button'
45
+ }
46
+ };
47
+ var Small = exports.Small = {
48
+ args: {
49
+ size: 'small',
50
+ label: 'Button'
51
+ }
52
+ };