cssier 0.1.3 → 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.
package/README.md CHANGED
@@ -1,42 +1,168 @@
1
- # 🧑‍🎨CSSIER
1
+ Got it! Here's the updated README with the correct usage of the `<Button />` component from `cssier`:
2
2
 
3
- Inline styling for pseudoelements and pseudoclasses
3
+ # cssier
4
4
 
5
- ## Requirements
5
+ `cssier` is a React component library designed to simplify inline styling for pseudo-classes and pseudo-elements. With `cssier`, you can easily manage and apply custom styles for standard HTML and SVG elements, making your styling both dynamic and maintainable.
6
6
 
7
- - React >=18.2
8
- - A head element in your HTML document
9
- - Good judgements
7
+ ## Features
10
8
 
11
- ## Getting Started
9
+ - **Pre-built Components**: Import ready-to-use React components for HTML and SVG tags.
10
+ - **Advanced Styling**: Use the `useStylesheet` hook to manage custom styles for pseudo-classes and pseudo-elements.
11
+ - **TypeScript Support**: Includes TypeScript definitions for a smoother development experience.
12
+ - **Storybook Integration**: Automatically generates Storybook stories for visual testing and documentation.
13
+ - **Public Storybook**: Explore and interact with the components live at [cssier.danberman.dev](https://cssier.danberman.dev).
12
14
 
13
- 1. Install this module using `npm install cssier`
15
+ ## Installation
16
+
17
+ To install `cssier`, use npm, Yarn, or pnpm:
18
+
19
+ ```bash
20
+ npm install cssier
21
+ ```
22
+
23
+ or with Yarn:
24
+
25
+ ```bash
26
+ yarn add cssier
27
+ ```
28
+
29
+ or with pnpm:
30
+
31
+ ```bash
32
+ pnpm add cssier
33
+ ```
14
34
 
15
35
  ## Usage
16
36
 
17
- - Import the desired elements into your file, eg. `import {Div, A, H1} from 'cssier'`
18
- -
37
+ ### Importing Components
38
+
39
+ You can import pre-built React components for HTML and SVG tags from `cssier/components`:
40
+
41
+ ```jsx
42
+ import { Button, Svg } from 'cssier/components'
43
+
44
+ const MyComponent = () => (
45
+ <div>
46
+ <Button onClick={() => alert('Clicked!')}>Click Me</Button>
47
+ <Svg width="100" height="100">
48
+ <circle cx="50" cy="50" r="40" stroke="black" strokeWidth="3" fill="red" />
49
+ </Svg>
50
+ </div>
51
+ )
52
+ ```
53
+
54
+ ### Using the `useStylesheet` Hook
55
+
56
+ The `useStylesheet` hook from `cssier/hooks` allows you to apply styles for pseudo-classes (`:hover`, `:focus`, etc.) and pseudo-elements (`::before`, `::after`, etc.) directly to your components.
57
+
58
+ #### Values Returned by `useStylesheet`
59
+
60
+ The `useStylesheet` hook returns an array where:
61
+
62
+ - The first element is a unique CSS class ID that can be applied to the component.
63
+ - The second element is a string of CSS styles that were injected into the document. This is useful for debugging, though you typically won't need to use it in production.
19
64
 
20
- ## Main Scripts
65
+ ```jsx
66
+ import { useStylesheet } from 'cssier/hooks'
21
67
 
22
- Always prepending pnpm:
68
+ const CustomComponent = (props) => {
69
+ const { pseudo, pseudoId: id, ...rest } = props
70
+ const [pseudoId, css] = useStylesheet(pseudo, id)
23
71
 
24
- - `dev`: Bootstrap the Storybook preview with Hot Reload.
25
- - `build`: Builds the static storybook project.
26
- - `build:lib`: Builds the component library into the **dist** folder.
27
- - `lint:fix`: Applies linting based on the rules defined in **.eslintrc.js**.
28
- - `format:prettier`: Formats files using the prettier rules defined in **.prettierrc**.
29
- - `test`: Runs testing using watch mode.
30
- - `test:cov`: Runs testing displaying a coverage report.
72
+ return (
73
+ <>
74
+ <style>{css}</style>
75
+ <div {...rest} className={`${rest.className ?? ''}pseudoId`}>
76
+ Styled with pseudo-classes and pseudo-elements!
77
+ </div>
78
+ </>
79
+ )
80
+ }
81
+ ```
31
82
 
32
- ## Blog Post
83
+ #### Example of Custom Styling with Pseudo-classes
33
84
 
34
- I created a post explaning how to set up this library and publish it to a package registry! You can read it [here](https://igna.hashnode.dev/vite-react-typescript-component-library-template-setup-explanation).
85
+ ```jsx
86
+ <CustomComponent
87
+ pseudo={{
88
+ hover: { backgroundColor: 'lightblue' },
89
+ focus: { outline: '2px solid blue' },
90
+ }}
91
+ pseudoId="custom-id"
92
+ >
93
+ Hover or focus on me!
94
+ </CustomComponent>
95
+ ```
35
96
 
36
- ## Author
97
+ #### Example of Custom Styling with Pseudo-elements
37
98
 
38
- [Ignacio Miranda Figueroa](https://www.linkedin.com/in/ignacio-miranda-figueroa/)
99
+ ```jsx
100
+ <CustomComponent
101
+ pseudo={{
102
+ before: { content: '"Prefix"', color: 'gray' },
103
+ after: { content: '"Suffix"', color: 'gray' },
104
+ }}
105
+ pseudoId="custom-id"
106
+ >
107
+ Content with pseudo-elements
108
+ </CustomComponent>
109
+ ```
110
+
111
+ ### Dynamic Hover Color Example Using `<Button />`
112
+
113
+ Here's an example of using the `<Button />` component from `cssier` to create a button that changes its hover color each time it is clicked:
114
+
115
+ ```jsx
116
+ import { useState } from 'react'
117
+ import { Button } from 'cssier/components'
118
+
119
+ const DynamicButton = () => {
120
+ const [colorIndex, setColorIndex] = useState(0)
121
+ const colors = ['lightblue', 'lightcoral', 'lightgreen', 'lightgoldenrodyellow']
122
+
123
+ const handleClick = () => {
124
+ setColorIndex((prevIndex) => (prevIndex + 1) % colors.length)
125
+ }
126
+
127
+ return (
128
+ <Button
129
+ pseudo={{
130
+ hover: { backgroundColor: colors[colorIndex] },
131
+ }}
132
+ onClick={handleClick}
133
+ >
134
+ Click me to change hover color!
135
+ </Button>
136
+ )
137
+ }
138
+ ```
139
+
140
+ ### Props and Compatibility
141
+
142
+ The components provided by `cssier` accept all standard props for their HTML or SVG counterparts. For example, a `<Button>` component will accept props such as `onClick`, `disabled`, `type`, etc., just like a native HTML `<button>` element.
143
+
144
+ ## Public Storybook
145
+
146
+ Explore and interact with the `cssier` components in our publicly available Storybook at [cssier.danberman.dev](https://cssier.danberman.dev). This is a great way to see the components in action and understand how different styles and props affect their appearance.
147
+
148
+ ## Contributing
149
+
150
+ To contribute to `cssier`:
151
+
152
+ 1. Fork the repository.
153
+ 2. Create a new branch (`git checkout -b feature/your-feature`).
154
+ 3. Make your changes.
155
+ 4. Commit your changes (`git commit -am 'Add new feature'`).
156
+ 5. Push to the branch (`git push origin feature/your-feature`).
157
+ 6. Create a Pull Request on GitHub.
39
158
 
40
159
  ## License
41
160
 
42
- [MIT](LICENSE)
161
+ `cssier` is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.
162
+
163
+ ## Additional Resources
164
+
165
+ - [GitHub Repository](https://github.com/DanBermanTech/cssier) – Source code and issue tracking.
166
+ - [Storybook Documentation](https://storybook.js.org/) – Learn how to use Storybook with your components.
167
+
168
+ Thank you for choosing `cssier`! We hope it makes managing your styles more intuitive and flexible.
@@ -0,0 +1,161 @@
1
+ export { default as A } from './A';
2
+ export { default as Abbr } from './Abbr';
3
+ export { default as Address } from './Address';
4
+ export { default as Area } from './Area';
5
+ export { default as Article } from './Article';
6
+ export { default as Aside } from './Aside';
7
+ export { default as Audio } from './Audio';
8
+ export { default as B } from './B';
9
+ export { default as Base } from './Base';
10
+ export { default as Bdi } from './Bdi';
11
+ export { default as Bdo } from './Bdo';
12
+ export { default as Blockquote } from './Blockquote';
13
+ export { default as Body } from './Body';
14
+ export { default as Br } from './Br';
15
+ export { default as Button } from './Button';
16
+ export { default as Canvas } from './Canvas';
17
+ export { default as Caption } from './Caption';
18
+ export { default as Cite } from './Cite';
19
+ export { default as Code } from './Code';
20
+ export { default as Col } from './Col';
21
+ export { default as Colgroup } from './Colgroup';
22
+ export { default as Data } from './Data';
23
+ export { default as Datalist } from './Datalist';
24
+ export { default as Dd } from './Dd';
25
+ export { default as Del } from './Del';
26
+ export { default as Details } from './Details';
27
+ export { default as Dfn } from './Dfn';
28
+ export { default as Dialog } from './Dialog';
29
+ export { default as Div } from './Div';
30
+ export { default as Dl } from './Dl';
31
+ export { default as Dt } from './Dt';
32
+ export { default as Em } from './Em';
33
+ export { default as Embed } from './Embed';
34
+ export { default as Fieldset } from './Fieldset';
35
+ export { default as Figcaption } from './Figcaption';
36
+ export { default as Figure } from './Figure';
37
+ export { default as Footer } from './Footer';
38
+ export { default as Form } from './Form';
39
+ export { default as H1 } from './H1';
40
+ export { default as H2 } from './H2';
41
+ export { default as H3 } from './H3';
42
+ export { default as H4 } from './H4';
43
+ export { default as H5 } from './H5';
44
+ export { default as H6 } from './H6';
45
+ export { default as Head } from './Head';
46
+ export { default as Header } from './Header';
47
+ export { default as Hgroup } from './Hgroup';
48
+ export { default as Hr } from './Hr';
49
+ export { default as Html } from './Html';
50
+ export { default as I } from './I';
51
+ export { default as Iframe } from './Iframe';
52
+ export { default as Img } from './Img';
53
+ export { default as Input } from './Input';
54
+ export { default as Ins } from './Ins';
55
+ export { default as Kbd } from './Kbd';
56
+ export { default as Label } from './Label';
57
+ export { default as Legend } from './Legend';
58
+ export { default as Li } from './Li';
59
+ export { default as Link } from './Link';
60
+ export { default as Main } from './Main';
61
+ export { default as Map } from './Map';
62
+ export { default as Mark } from './Mark';
63
+ export { default as Meta } from './Meta';
64
+ export { default as Meter } from './Meter';
65
+ export { default as Nav } from './Nav';
66
+ export { default as Noscript } from './Noscript';
67
+ export { default as Object } from './Object';
68
+ export { default as Ol } from './Ol';
69
+ export { default as Optgroup } from './Optgroup';
70
+ export { default as Option } from './Option';
71
+ export { default as Output } from './Output';
72
+ export { default as P } from './P';
73
+ export { default as Param } from './Param';
74
+ export { default as Picture } from './Picture';
75
+ export { default as Pre } from './Pre';
76
+ export { default as Progress } from './Progress';
77
+ export { default as Q } from './Q';
78
+ export { default as Rp } from './Rp';
79
+ export { default as Rt } from './Rt';
80
+ export { default as Ruby } from './Ruby';
81
+ export { default as S } from './S';
82
+ export { default as Samp } from './Samp';
83
+ export { default as Script } from './Script';
84
+ export { default as Section } from './Section';
85
+ export { default as Select } from './Select';
86
+ export { default as Small } from './Small';
87
+ export { default as Source } from './Source';
88
+ export { default as Span } from './Span';
89
+ export { default as Strong } from './Strong';
90
+ export { default as Style } from './Style';
91
+ export { default as Sub } from './Sub';
92
+ export { default as Summary } from './Summary';
93
+ export { default as Sup } from './Sup';
94
+ export { default as Table } from './Table';
95
+ export { default as Tbody } from './Tbody';
96
+ export { default as Td } from './Td';
97
+ export { default as Template } from './Template';
98
+ export { default as Textarea } from './Textarea';
99
+ export { default as Tfoot } from './Tfoot';
100
+ export { default as Th } from './Th';
101
+ export { default as Thead } from './Thead';
102
+ export { default as Time } from './Time';
103
+ export { default as Title } from './Title';
104
+ export { default as Tr } from './Tr';
105
+ export { default as U } from './U';
106
+ export { default as Ul } from './Ul';
107
+ export { default as Var } from './Var';
108
+ export { default as Video } from './Video';
109
+ export { default as Wbr } from './Wbr';
110
+ export { default as Svg } from './Svg';
111
+ export { default as Animate } from './Animate';
112
+ export { default as AnimateTransform } from './AnimateTransform';
113
+ export { default as Circle } from './Circle';
114
+ export { default as ClipPath } from './ClipPath';
115
+ export { default as Defs } from './Defs';
116
+ export { default as Desc } from './Desc';
117
+ export { default as Ellipse } from './Ellipse';
118
+ export { default as FeBlend } from './FeBlend';
119
+ export { default as FeColorMatrix } from './FeColorMatrix';
120
+ export { default as FeComponentTransfer } from './FeComponentTransfer';
121
+ export { default as FeComposite } from './FeComposite';
122
+ export { default as FeConvolveMatrix } from './FeConvolveMatrix';
123
+ export { default as FeDiffuseLighting } from './FeDiffuseLighting';
124
+ export { default as FeDisplacementMap } from './FeDisplacementMap';
125
+ export { default as FeDistantLight } from './FeDistantLight';
126
+ export { default as FeFlood } from './FeFlood';
127
+ export { default as FeGaussianBlur } from './FeGaussianBlur';
128
+ export { default as FeImage } from './FeImage';
129
+ export { default as FeMerge } from './FeMerge';
130
+ export { default as FeMergeNode } from './FeMergeNode';
131
+ export { default as FeMorphology } from './FeMorphology';
132
+ export { default as FeOffset } from './FeOffset';
133
+ export { default as FePointLight } from './FePointLight';
134
+ export { default as FeSpecularLighting } from './FeSpecularLighting';
135
+ export { default as FeSpotLight } from './FeSpotLight';
136
+ export { default as FeTile } from './FeTile';
137
+ export { default as FeTurbulence } from './FeTurbulence';
138
+ export { default as Filter } from './Filter';
139
+ export { default as ForeignObject } from './ForeignObject';
140
+ export { default as G } from './G';
141
+ export { default as Image } from './Image';
142
+ export { default as Line } from './Line';
143
+ export { default as LinearGradient } from './LinearGradient';
144
+ export { default as Marker } from './Marker';
145
+ export { default as Mask } from './Mask';
146
+ export { default as Metadata } from './Metadata';
147
+ export { default as Mpath } from './Mpath';
148
+ export { default as Path } from './Path';
149
+ export { default as Pattern } from './Pattern';
150
+ export { default as Polygon } from './Polygon';
151
+ export { default as Polyline } from './Polyline';
152
+ export { default as RadialGradient } from './RadialGradient';
153
+ export { default as Rect } from './Rect';
154
+ export { default as Stop } from './Stop';
155
+ export { default as Switch } from './Switch';
156
+ export { default as Symbol } from './Symbol';
157
+ export { default as Text } from './Text';
158
+ export { default as TextPath } from './TextPath';
159
+ export { default as Tspan } from './Tspan';
160
+ export { default as Use } from './Use';
161
+ export { default as View } from './View';
@@ -0,0 +1,167 @@
1
+ import { A as o, Abbr as l, Address as n, Animate as p, AnimateTransform as F, Area as s, Article as d, Aside as m, Audio as g, B as u, Base as S, Bdi as c, Bdo as T, Blockquote as D, Body as M, Br as b, Button as h, Canvas as C, Caption as P, Circle as f, Cite as H, ClipPath as L, Code as B, Col as y, Colgroup as A, Data as I, Datalist as O, Dd as v, Defs as x, Del as k, Desc as R, Details as G, Dfn as E, Dialog as N, Div as U, Dl as V, Dt as j, Ellipse as w, Em as q, Embed as K, FeBlend as Q, FeColorMatrix as W, FeComponentTransfer as z, FeComposite as J, FeConvolveMatrix as X, FeDiffuseLighting as Y, FeDisplacementMap as Z, FeDistantLight as _, FeFlood as $, FeGaussianBlur as ee, FeImage as te, FeMerge as ae, FeMergeNode as ie, FeMorphology as re, FeOffset as oe, FePointLight as le, FeSpecularLighting as ne, FeSpotLight as pe, FeTile as Fe, FeTurbulence as se, Fieldset as de, Figcaption as me, Figure as ge, Filter as ue, Footer as Se, ForeignObject as ce, Form as Te, G as De, H1 as Me, H2 as be, H3 as he, H4 as Ce, H5 as Pe, H6 as fe, Head as He, Header as Le, Hgroup as Be, Hr as ye, Html as Ae, I as Ie, Iframe as Oe, Image as ve, Img as xe, Input as ke, Ins as Re, Kbd as Ge, Label as Ee, Legend as Ne, Li as Ue, Line as Ve, LinearGradient as je, Link as we, Main as qe, Map as Ke, Mark as Qe, Marker as We, Mask as ze, Meta as Je, Metadata as Xe, Meter as Ye, Mpath as Ze, Nav as _e, Noscript as $e, Object as et, Ol as tt, Optgroup as at, Option as it, Output as rt, P as ot, Param as lt, Path as nt, Pattern as pt, Picture as Ft, Polygon as st, Polyline as dt, Pre as mt, Progress as gt, Q as ut, RadialGradient as St, Rect as ct, Rp as Tt, Rt as Dt, Ruby as Mt, S as bt, Samp as ht, Script as Ct, Section as Pt, Select as ft, Small as Ht, Source as Lt, Span as Bt, Stop as yt, Strong as At, Style as It, Sub as Ot, Summary as vt, Sup as xt, Svg as kt, Switch as Rt, Symbol as Gt, Table as Et, Tbody as Nt, Td as Ut, Template as Vt, Text as jt, TextPath as wt, Textarea as qt, Tfoot as Kt, Th as Qt, Thead as Wt, Time as zt, Title as Jt, Tr as Xt, Tspan as Yt, U as Zt, Ul as _t, Use as $t, Var as ea, Video as ta, View as aa, Wbr as ia } from "../cssier.js";
2
+ import "../hooks/index.js";
3
+ import "react";
4
+ import "react/jsx-runtime";
5
+ export {
6
+ o as A,
7
+ l as Abbr,
8
+ n as Address,
9
+ p as Animate,
10
+ F as AnimateTransform,
11
+ s as Area,
12
+ d as Article,
13
+ m as Aside,
14
+ g as Audio,
15
+ u as B,
16
+ S as Base,
17
+ c as Bdi,
18
+ T as Bdo,
19
+ D as Blockquote,
20
+ M as Body,
21
+ b as Br,
22
+ h as Button,
23
+ C as Canvas,
24
+ P as Caption,
25
+ f as Circle,
26
+ H as Cite,
27
+ L as ClipPath,
28
+ B as Code,
29
+ y as Col,
30
+ A as Colgroup,
31
+ I as Data,
32
+ O as Datalist,
33
+ v as Dd,
34
+ x as Defs,
35
+ k as Del,
36
+ R as Desc,
37
+ G as Details,
38
+ E as Dfn,
39
+ N as Dialog,
40
+ U as Div,
41
+ V as Dl,
42
+ j as Dt,
43
+ w as Ellipse,
44
+ q as Em,
45
+ K as Embed,
46
+ Q as FeBlend,
47
+ W as FeColorMatrix,
48
+ z as FeComponentTransfer,
49
+ J as FeComposite,
50
+ X as FeConvolveMatrix,
51
+ Y as FeDiffuseLighting,
52
+ Z as FeDisplacementMap,
53
+ _ as FeDistantLight,
54
+ $ as FeFlood,
55
+ ee as FeGaussianBlur,
56
+ te as FeImage,
57
+ ae as FeMerge,
58
+ ie as FeMergeNode,
59
+ re as FeMorphology,
60
+ oe as FeOffset,
61
+ le as FePointLight,
62
+ ne as FeSpecularLighting,
63
+ pe as FeSpotLight,
64
+ Fe as FeTile,
65
+ se as FeTurbulence,
66
+ de as Fieldset,
67
+ me as Figcaption,
68
+ ge as Figure,
69
+ ue as Filter,
70
+ Se as Footer,
71
+ ce as ForeignObject,
72
+ Te as Form,
73
+ De as G,
74
+ Me as H1,
75
+ be as H2,
76
+ he as H3,
77
+ Ce as H4,
78
+ Pe as H5,
79
+ fe as H6,
80
+ He as Head,
81
+ Le as Header,
82
+ Be as Hgroup,
83
+ ye as Hr,
84
+ Ae as Html,
85
+ Ie as I,
86
+ Oe as Iframe,
87
+ ve as Image,
88
+ xe as Img,
89
+ ke as Input,
90
+ Re as Ins,
91
+ Ge as Kbd,
92
+ Ee as Label,
93
+ Ne as Legend,
94
+ Ue as Li,
95
+ Ve as Line,
96
+ je as LinearGradient,
97
+ we as Link,
98
+ qe as Main,
99
+ Ke as Map,
100
+ Qe as Mark,
101
+ We as Marker,
102
+ ze as Mask,
103
+ Je as Meta,
104
+ Xe as Metadata,
105
+ Ye as Meter,
106
+ Ze as Mpath,
107
+ _e as Nav,
108
+ $e as Noscript,
109
+ et as Object,
110
+ tt as Ol,
111
+ at as Optgroup,
112
+ it as Option,
113
+ rt as Output,
114
+ ot as P,
115
+ lt as Param,
116
+ nt as Path,
117
+ pt as Pattern,
118
+ Ft as Picture,
119
+ st as Polygon,
120
+ dt as Polyline,
121
+ mt as Pre,
122
+ gt as Progress,
123
+ ut as Q,
124
+ St as RadialGradient,
125
+ ct as Rect,
126
+ Tt as Rp,
127
+ Dt as Rt,
128
+ Mt as Ruby,
129
+ bt as S,
130
+ ht as Samp,
131
+ Ct as Script,
132
+ Pt as Section,
133
+ ft as Select,
134
+ Ht as Small,
135
+ Lt as Source,
136
+ Bt as Span,
137
+ yt as Stop,
138
+ At as Strong,
139
+ It as Style,
140
+ Ot as Sub,
141
+ vt as Summary,
142
+ xt as Sup,
143
+ kt as Svg,
144
+ Rt as Switch,
145
+ Gt as Symbol,
146
+ Et as Table,
147
+ Nt as Tbody,
148
+ Ut as Td,
149
+ Vt as Template,
150
+ jt as Text,
151
+ wt as TextPath,
152
+ qt as Textarea,
153
+ Kt as Tfoot,
154
+ Qt as Th,
155
+ Wt as Thead,
156
+ zt as Time,
157
+ Jt as Title,
158
+ Xt as Tr,
159
+ Yt as Tspan,
160
+ Zt as U,
161
+ _t as Ul,
162
+ $t as Use,
163
+ ea as Var,
164
+ ta as Video,
165
+ aa as View,
166
+ ia as Wbr
167
+ };
@@ -0,0 +1 @@
1
+ export * from './components/index'