typewritingclass 0.2.1 → 0.2.2

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/tw.ts +70 -63
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typewritingclass",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
package/src/tw.ts CHANGED
@@ -286,13 +286,20 @@ export function isTwChain(value: unknown): value is TwChain {
286
286
  // ---------------------------------------------------------------------------
287
287
 
288
288
  /** @internal A utility that accepts arguments and returns a chain. Also chainable without calling (for optional-arg utilities like `shadow`). */
289
- type TwUtility = ((...args: any[]) => TwChain) & TwChain
289
+ /**
290
+ * A TwChain that is also assignable to `string`, so it can be used directly
291
+ * in `className={tw.p(4)}` without wrapping in a template literal.
292
+ * At runtime, the Proxy's `toString()` is called when string coercion occurs.
293
+ */
294
+ export type TwChainString = TwChain & string
295
+
296
+ type TwUtility = ((...args: any[]) => TwChainString) & TwChainString
290
297
 
291
298
  /** @internal A modifier usable as a property (`tw.hover.bg(…)`) or function (`tw.hover(tw.bg(…))`). */
292
- type TwModifier = TwChain & ((...chains: TwChain[]) => TwChain)
299
+ type TwModifier = TwChainString & ((...chains: (TwChain | string)[]) => TwChainString)
293
300
 
294
301
  /** @internal A parameterized modifier that requires arguments before it becomes a modifier. */
295
- type TwParamModifier = (...args: any[]) => TwChain
302
+ type TwParamModifier = (...args: any[]) => TwChainString
296
303
 
297
304
  // ---------------------------------------------------------------------------
298
305
  // TwChain type
@@ -323,7 +330,7 @@ export interface TwChain {
323
330
  /** Resolves the chain to a class name string */
324
331
  readonly className: string
325
332
  /** Allow the chain to be called as a function */
326
- (...args: any[]): TwChain
333
+ (...args: any[]): TwChainString
327
334
 
328
335
  // ---- Utilities (take arguments) — keep in sync with UTILS ----
329
336
 
@@ -576,70 +583,70 @@ export interface TwChain {
576
583
  // ---- Value-less utilities (no arguments) — keep in sync with VALUELESS ----
577
584
 
578
585
  // Layout
579
- readonly flex: TwChain
580
- readonly flexCol: TwChain
581
- readonly flexRow: TwChain
582
- readonly flexWrap: TwChain
583
- readonly inlineFlex: TwChain
584
- readonly relative: TwChain
585
- readonly absolute: TwChain
586
- readonly fixed: TwChain
587
- readonly sticky: TwChain
588
- readonly static: TwChain
589
- readonly visible: TwChain
590
- readonly invisible: TwChain
591
- readonly collapse: TwChain
592
- readonly isolate: TwChain
593
- readonly isolationAuto: TwChain
594
- readonly container: TwChain
595
- readonly flexRowReverse: TwChain
596
- readonly flexColReverse: TwChain
597
- readonly flexWrapReverse: TwChain
598
- readonly flexNowrap: TwChain
599
- readonly flex1: TwChain
600
- readonly flexAuto: TwChain
601
- readonly flexInitial: TwChain
602
- readonly flexNone: TwChain
586
+ readonly flex: TwChainString
587
+ readonly flexCol: TwChainString
588
+ readonly flexRow: TwChainString
589
+ readonly flexWrap: TwChainString
590
+ readonly inlineFlex: TwChainString
591
+ readonly relative: TwChainString
592
+ readonly absolute: TwChainString
593
+ readonly fixed: TwChainString
594
+ readonly sticky: TwChainString
595
+ readonly static: TwChainString
596
+ readonly visible: TwChainString
597
+ readonly invisible: TwChainString
598
+ readonly collapse: TwChainString
599
+ readonly isolate: TwChainString
600
+ readonly isolationAuto: TwChainString
601
+ readonly container: TwChainString
602
+ readonly flexRowReverse: TwChainString
603
+ readonly flexColReverse: TwChainString
604
+ readonly flexWrapReverse: TwChainString
605
+ readonly flexNowrap: TwChainString
606
+ readonly flex1: TwChainString
607
+ readonly flexAuto: TwChainString
608
+ readonly flexInitial: TwChainString
609
+ readonly flexNone: TwChainString
603
610
  // Typography
604
- readonly antialiased: TwChain
605
- readonly subpixelAntialiased: TwChain
606
- readonly italic: TwChain
607
- readonly notItalic: TwChain
608
- readonly truncate: TwChain
609
- readonly normalNums: TwChain
610
- readonly ordinal: TwChain
611
- readonly slashedZero: TwChain
612
- readonly liningNums: TwChain
613
- readonly oldstyleNums: TwChain
614
- readonly proportionalNums: TwChain
615
- readonly tabularNums: TwChain
616
- readonly diagonalFractions: TwChain
617
- readonly stackedFractions: TwChain
611
+ readonly antialiased: TwChainString
612
+ readonly subpixelAntialiased: TwChainString
613
+ readonly italic: TwChainString
614
+ readonly notItalic: TwChainString
615
+ readonly truncate: TwChainString
616
+ readonly normalNums: TwChainString
617
+ readonly ordinal: TwChainString
618
+ readonly slashedZero: TwChainString
619
+ readonly liningNums: TwChainString
620
+ readonly oldstyleNums: TwChainString
621
+ readonly proportionalNums: TwChainString
622
+ readonly tabularNums: TwChainString
623
+ readonly diagonalFractions: TwChainString
624
+ readonly stackedFractions: TwChainString
618
625
  // Borders
619
- readonly ringInset: TwChain
620
- readonly outlineNone: TwChain
621
- readonly borderCollapse: TwChain
622
- readonly borderSeparate: TwChain
623
- readonly spaceXReverse: TwChain
624
- readonly spaceYReverse: TwChain
625
- readonly divideXReverse: TwChain
626
- readonly divideYReverse: TwChain
626
+ readonly ringInset: TwChainString
627
+ readonly outlineNone: TwChainString
628
+ readonly borderCollapse: TwChainString
629
+ readonly borderSeparate: TwChainString
630
+ readonly spaceXReverse: TwChainString
631
+ readonly spaceYReverse: TwChainString
632
+ readonly divideXReverse: TwChainString
633
+ readonly divideYReverse: TwChainString
627
634
  // Transforms
628
- readonly transformGpu: TwChain
629
- readonly transformNone: TwChain
635
+ readonly transformGpu: TwChainString
636
+ readonly transformNone: TwChainString
630
637
  // Transitions
631
- readonly transitionAll: TwChain
632
- readonly transitionColors: TwChain
633
- readonly transitionOpacity: TwChain
634
- readonly transitionShadow: TwChain
635
- readonly transitionTransform: TwChain
636
- readonly transitionNone: TwChain
638
+ readonly transitionAll: TwChainString
639
+ readonly transitionColors: TwChainString
640
+ readonly transitionOpacity: TwChainString
641
+ readonly transitionShadow: TwChainString
642
+ readonly transitionTransform: TwChainString
643
+ readonly transitionNone: TwChainString
637
644
  // Accessibility
638
- readonly srOnly: TwChain
639
- readonly notSrOnly: TwChain
645
+ readonly srOnly: TwChainString
646
+ readonly notSrOnly: TwChainString
640
647
  // Raw class names
641
- readonly group: TwChain
642
- readonly peer: TwChain
648
+ readonly group: TwChainString
649
+ readonly peer: TwChainString
643
650
 
644
651
  // ---- Simple modifiers (no arguments) — keep in sync with MODS ----
645
652
 
@@ -957,4 +964,4 @@ function createChain(rules: (StyleRule | string)[], pendingMods: Modifier[]): Tw
957
964
  * const classes = tw.p(4).bg('blue-500').value
958
965
  * ```
959
966
  */
960
- export const tw: TwChain = createChain([], [])
967
+ export const tw: TwChainString = createChain([], []) as TwChainString